Online — everything still runs locally
LocalConverter Hex inspector
100% local

Hex viewer: read any file byte by byte

Drop a file to see its raw bytes as offset, hexadecimal and ASCII columns. Jump straight to an offset, search by hex pattern or text, and see the detected file signature highlighted where it sits. Large files are read a page at a time, so a multi-gigabyte file opens as fast as a small one.

Drop a file to view its bytes
or click to browse · paste from clipboard · drop a whole folder
Any file. Rows are read on demand as you scroll, so nothing is loaded into memory up front.

How to read a hex dump

Three columns, each showing the same bytes a different way.

The columns

Offset — How far into the file this row starts, in hexadecimal. 0x00000010 is byte 16. Each row covers 16 bytes, so offsets step by 0x10.
Hex — The bytes themselves, two hex digits each, 00 to FF. A gap after the eighth byte makes it easier to count across.
ASCII — The same bytes shown as characters where a printable one exists. Everything else becomes a dot. This is where text inside a binary file becomes readable.

Colour carries meaning: blue marks the bytes that identify the file's format, amber marks search matches, and null bytes are dimmed so runs of padding stop competing for attention.

Reading a file header

The first bytes of most formats identify what they are — the reason a hex viewer is often the fastest way to answer "what is this file?"

A PNG opens with 89 50 4E 47 0D 0A 1A 0A. Look at the ASCII column and the 50 4E 47 reads as PNG. The 89 in front is a deliberately non-ASCII byte, and the 0D 0A 1A 0A after it is a trap: if a file transfer mangles line endings, those bytes change and the file is detectably corrupt.

Other headers you will recognise quickly once you have seen them:

FF D8 FF — JPEG
25 50 44 46 — PDF, reads as %PDF
50 4B 03 04 — ZIP, reads as PK
1F 8B — gzip
7F 45 4C 46 — ELF, reads as .ELF
4D 5A — Windows executable, reads as MZ

Drop a file and the detected type is worked out from exactly these bytes, with the matching range highlighted so you can see where the decision came from.

Searching and navigating

The offset box accepts hex with or without a prefix (0x1A or 1A) and plain decimal (4096). Press Enter to jump.

The search box decides what you meant automatically: an even-length run of hex digits is treated as a byte pattern, anything else as text. So FFD8 finds those two bytes, while Adobe finds that word. Press Enter repeatedly to cycle through matches.

Search covers the first 32MB of a file. Scanning multiple gigabytes byte by byte in a browser tab would lock it up, and the interesting structure is almost always near the start.

This is a viewer, not an editor. You can read and search bytes but not change them. Editing would mean holding the whole file in memory and writing it back out, which is a different tool with real risk of producing a corrupt file. If you need to patch bytes, use a native editor.

🔒 Why this is safe for confidential files

Nothing is uploaded The file is read directly from your disk by JavaScript in this tab. No network request carries its contents.
No server to trust There is no backend. Even if we wanted your files, there is nowhere for them to go.
Works with the network off Load the page once, disconnect, and every tool still works. That is the strongest proof that nothing is being sent.
Nothing is retained Close the tab and the file is gone from memory. No history, no accounts, no storage.

Hex viewer questions

No — this is a read-only viewer. Editing requires holding the entire file in memory and rewriting it, which is both memory-hungry and easy to get wrong in a way that silently corrupts a file. For byte-level editing use a dedicated native tool such as HxD, 010 Editor, or hexedit.

Practically any size the browser will hand us, up to around 2GB. Only the rows currently on screen exist in the page, and their bytes are read from disk on demand, so scrolling through a huge file uses roughly the same memory as a small one.

Those are the file's signature — the magic bytes that identify its format. Seeing them highlighted shows you exactly which bytes the type detection was based on, and where in the file they sit. Most formats put them at offset 0, but not all: a TAR archive's identifier sits at offset 257.

A dot stands for any byte with no printable ASCII representation — control characters, and everything above 0x7E. It is a placeholder, not a full stop character. An actual period also appears as a dot; check the hex column, where a real period is 0x2E.

Searching is capped at the first 32MB so the tab stays responsive. A byte-by-byte scan of several gigabytes in JavaScript would freeze the page for a long time. Headers, metadata and format structures live near the beginning of a file, which is what people are usually looking for.