Drop any file here, or click to choose one. Everything is read in this tab: your files and inputs never leave your device.
Related tools
- File IdentifierWork out what a file actually is from its bytes, ignoring the extension.
- Archive ViewerBrowse and extract zip and tar archives without unpacking them to disk.
- Compression LabRun text or files through gzip and deflate, compare sizes, and inspect compressed data.
- Duplicate FinderFind identical files in a folder tree by content, then reclaim the space.
- Folder DiffCompare two folders on your own machine and see exactly which files were added, removed, or changed by content hash.
- Bulk RenameRename many files at once with regex or patterns, previewed before anything is written.
What it does
A hex viewer that reads a file byte by byte in your browser and can also make sense of it. The dump view is the familiar layout: an eight digit offset column, hex bytes in groups of eight, and an ASCII gutter with a dot for every unprintable byte. The template view runs a small struct language over the bytes, so a PNG comes back as width, height, bit depth and a walk of every chunk instead of a wall of hex, and eleven formats ship with a template already written. There is also a strings view that lists printable ASCII and UTF-16LE runs with their offsets, and a summary with the detected type, the SHA-256, the Shannon entropy, and an entropy map that shows where the packed regions are.
How to use it
Drop a file, or paste a hex dump, a base64 string, or plain text you want the bytes of. Leave the template on Match the magic bytes and the right built in template is chosen for you when the signature is recognized, or pick one from the list. Choose My own template and write the struct yourself: one field per line, like char[4] magic then u32le size then cstring name, with skip, align, @offset, repeat and if for the awkward parts. Set the start offset to move the dump window or to begin a template partway into the file.
Why this one
Most online hex viewers upload your file to read it, which is exactly backwards for the files people actually want to inspect: a firmware image, a crash dump, a document from a customer. This one runs entirely in the page, so your files and inputs never leave your device, and it keeps working offline after the first load. The desktop tools that do have struct templates, like 010 Editor and ImHex, are a download and a license away when all you wanted was to check one header. There is no upload, no sign in, no size gate at a few hundred kilobytes, and no ads over the dump.
FAQ
- How do I write a struct template?
- One statement per line. A field is a type and a name: u8, i8, u16le, u16be, i16le, i16be, u32le, u32be, i32le, i32be, u64le, u64be, i64le, i64be, f32le, f32be, f64le, f64be, plus bytes[n], char[n], utf8[n], utf16le[n], utf16be[n], octal[n] and cstring. The control statements are skip n, align n, @offset to seek, repeat n { } to run a block a fixed number of times, repeat * { } to walk until the bytes run out, and if name == 2 { } to branch on a field already read. Anywhere a count or an offset goes you can name an earlier field, with a constant added or subtracted, so utf8[nameLength] fileName and skip size - 8 both work. Lines starting with # are comments. Every built in template is written in the same language, so open one and edit it.
- Can it open a large file?
- It reads files up to 64 MB, and the dump shows 64 KB at a time so the page stays responsive. Use the start offset to move that window to the region you care about. The summary, strings and entropy views read the whole file, not just the window. Past 64 MB a browser tab is the wrong tool and you want something that streams from disk.
- What does the entropy number tell me?
- It is Shannon entropy in bits per byte, from 0 when one byte value repeats to 8 when every value appears equally often. Text and source code land around 4 to 5, a typical binary with headers and code sits between 5 and 7, and anything above 7.5 is compressed, encrypted, or packed. The entropy map splits the file into blocks and draws one bar per block, which is how you spot a plain header in front of a compressed payload, or an encrypted section inside an otherwise ordinary executable.
Keyboard shortcuts: press ? anywhere on this page to see them.