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
Hello, world00000000 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 asc2 a0, and a byte order mark asef bb bfat offset 0. - Line endings. Unix uses
0a, Windows uses0d 0a. A stray0dis a common reason scripts fail with "bad interpreter". - Encoding problems.
éin UTF-8 isc3 a9. If you seec3 83 c2 a9, the text was converted to UTF-8 twice (mojibake). - Look-alike characters. A Cyrillic
а(d0 b0) looks just like a Latina(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
- Paste or type the text you want to inspect.
- Read the dump. The offset column counts bytes in hex, so
00000010is byte 16. - Compare the byte count with the visible character count. A mismatch means multi-byte or invisible characters.
Make a hexdump on the command line
printf 'Hello, world' | xxd
printf 'Hello, world' | hexdump -Cdata = "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
| Layout | Offset, 16 bytes in hex, ASCII column |
| Input encoding | Text is encoded as UTF-8 before dumping |
| Non-printable bytes | Shown as · in the ASCII column |
| Equivalent tools | xxd, 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