decoder.tools

Hexdump & Byte Stream Parser

Show the exact bytes of any text as an offset / hex / ASCII dump, like xxd or hexdump -C.

INPUT
OUTPUT

The result appears here as you type.

Decoding runs in your browser. What you paste is not sent to a server.

A hexdump shows data byte by byte: an offset on the left, the bytes in hex in the middle, and the printable ASCII characters on the right. This viewer encodes the text you paste as UTF-8 and dumps those bytes.

Example

Input
Hello, world
Output
00000000  48 65 6c 6c 6f 2c 20 77 6f 72 6c 64              |Hello, world|

Each row holds 16 bytes. Bytes outside printable ASCII appear as · in the right-hand column.

Why look at the bytes?

Text that looks identical on screen can be different underneath. A hexdump settles questions like these:

  • Invisible characters. A zero-width space shows up as e2 80 8b, a non-breaking space as c2 a0, and a byte order mark as ef bb bf at offset 0.
  • Line endings. Unix uses 0a, Windows uses 0d 0a. A stray 0d is a common reason scripts fail with "bad interpreter".
  • Encoding problems. é in UTF-8 is c3 a9. If you see c3 83 c2 a9, the text was converted to UTF-8 twice (mojibake).
  • Look-alike characters. A Cyrillic а (d0 b0) looks just like a Latin a (61) but makes passwords, domains and code fail.

This viewer works on text you paste. To turn hex back into text, use the Hex to text converter.

How to use the hexdump viewer

  1. Paste or type the text you want to inspect.
  2. Read the dump. The offset column counts bytes in hex, so 00000010 is byte 16.
  3. Compare the byte count with the visible character count. A mismatch means multi-byte or invisible characters.

Make a hexdump on the command line

Command line
printf 'Hello, world' | xxd
printf 'Hello, world' | hexdump -C
Python
data = "Hello, world".encode("utf-8")
for i in range(0, len(data), 16):
    row = data[i:i + 16]
    print(f"{i:08x}  {row.hex(' '):<47}  |{''.join(chr(b) if 32 <= b < 127 else '.' for b in row)}|")

Hexdump at a glance

LayoutOffset, 16 bytes in hex, ASCII column
Input encodingText is encoded as UTF-8 before dumping
Non-printable bytesShown as · in the ASCII column
Equivalent toolsxxd, hexdump -C, od -A x -t x1z

Frequently asked questions

Why are there more bytes than characters?

UTF-8 uses 1 byte for ASCII and 2 to 4 bytes for everything else. é takes 2 bytes, € takes 3 and most emoji take 4.

How do I find a zero-width character in text?

Paste the text and look for e2 80 8b (zero-width space), e2 80 8c (zero-width non-joiner), e2 80 8d (zero-width joiner) or ef bb bf (BOM). The Zero-width decoder can also read messages hidden this way.

Can I upload a file?

Not yet. This viewer dumps text you paste. For files, xxd file.bin or hexdump -C file.bin in a terminal give the same layout.

Last reviewed · found a mistake? contact@decoder.tools · view as markdown