Hex Dump

Turn any text or file into an xxd-style hex dump with byte offsets, hex bytes and an ASCII gutter — and decode one back. Free, in your browser.

Bytes per rowPreview characters
Hex dump
00000000  48 65 6c 6c 6f 2c 20 57  6f 72 6c 64 21 20 f0 9f  |Hello, World! ..|
00000010  94 92                                             |..|

🔒 Processed in your browser — nothing is uploaded.

Offset, hex pairs, ASCII gutter

Hex Dump converts whatever you type, paste or open into a classic hexadecimal dump, the same layout you get from command-line tools like xxd or hexdump -C. Each row shows an 8-digit hexadecimal byte offset, then that row's bytes as hex pairs grouped in eights, followed by an ASCII gutter between | bars. A row holds 16 bytes by default, and any width from 1 byte upward is available — 4 bytes lines up a packed struct, 24 fills a terminal. The hex is lowercase unless you tick Uppercase hex, which raises the offset column along with the bytes. Printable characters (bytes 32–126) appear as themselves and every other byte, including control codes and multi-byte characters, is shown as a dot. Preview characters widens that: leave it on ASCII for the classic behaviour, or switch to Latin-1 and bytes 160 to 255 print as their Latin-1 letters too — é, ÿ — so a CP-1252 or ISO-8859 file reads in the gutter instead of turning into a wall of dots. Control bytes and the soft hyphen stay dots in both. Final length line adds the closing offset line holding the total size, the one xxd and hexdump both print. The dump updates live as you edit.

How the bytes are counted

Text you type is UTF-8 encoded before it is dumped, so a plain letter is one byte while an accented letter, emoji, or CJK character spans two to four bytes. That means the hex you see is exactly what a program would read from a UTF-8 file, which makes this handy for spotting hidden characters, checking encodings, inspecting invisible whitespace, or learning how text maps to raw bytes. A file you open is not encoded at all: its raw bytes are dumped exactly as they sit on disk, so a PNG, a compiled class file or a firmware image dumps as itself.

Frequently asked questions

What encoding is used to produce the bytes?

For text you type, UTF-8: it is encoded with the browser's TextEncoder, so ASCII characters are one byte and characters like é, €, or 한 take two to four bytes each — the same bytes you would find in a UTF-8 file. A file you open is dumped byte for byte, with no encoding step at all.

Can I dump a binary file and get the bytes back?

Both ways, yes. Open any file — a PNG, a class file, an ELF binary — and its raw bytes are dumped. Paste a dump into Decode and the bytes come back: if they are text you can read them on the page, and if they are not, Download saves the exact bytes as a file rather than replacement characters.

Why do some characters show as a dot in the ASCII column?

On the default setting the gutter prints only bytes 32 through 126, the printable ASCII range; set Preview characters to Latin-1 and bytes 160 to 255 are printed as well. Control codes such as newline or tab, and the extra bytes of multi-byte characters, have no printable glyph, so they are shown as '.' to keep the columns aligned.

Is any of my text uploaded to a server?

No. The hex dump is generated entirely in your browser with JavaScript. Nothing you type is sent, stored, or uploaded anywhere.