Hexter

What Is a Hex Editor (and When You Actually Need One)

Someone told you to “check it in a hex editor,” or you searched for a hex viewer and landed here without being totally sure what one is. That’s fine. A hex editor is a program that shows you the raw contents of a file, byte by byte, instead of trying to interpret it as a document, an image, or a spreadsheet. It’s the closest you can get to looking at exactly what’s stored on disk.

Why hex, specifically

A file, any file, is just a sequence of bytes, and each byte is a number from 0 to 255. You could display those numbers in decimal, but 0 to 255 takes up to three digits and doesn’t line up cleanly. You could display them in binary, but a single byte is eight digits of 1s and 0s, which is hard to scan visually. Hexadecimal (base 16, using digits 0-9 and letters A-F) is the compromise: every byte fits in exactly two characters, from 00 to FF, so a row of bytes lines up into a neat, scannable grid. That’s the entire reason “hex” is the standard, not decimal or binary. It’s a readability choice, not a technical requirement.

What you’re actually looking at

Open any file in a hex editor and you’ll see three things side by side, for the same data:

Diagram of a hex editor's three columns: the offset column showing position in the file, the hex grid showing each byte as two hex characters, and the text column showing the same bytes interpreted as ASCII.
The same bytes, shown three ways: where they are, what they are, and what they'd look like as text.
  • Offset: how far into the file you are, usually shown in hex itself, so you can jump back to a specific position later.
  • Hex bytes: the actual data, two characters per byte, grouped into rows (commonly 16 bytes per row).
  • Text (ASCII) view: the same bytes reinterpreted as characters, for whatever portion of the file happens to be readable text. Non-text bytes usually show as a dot placeholder.

That third column is why file paths, labels, and version strings are often visible even in files that are mostly binary data: any embedded text shows up in that column even though the file as a whole isn’t a text file.

When you’d actually need one

Most people go their whole life without opening a hex editor, and that’s completely normal. The situations where it’s genuinely the right tool are specific:

  • A file’s extension doesn’t match its actual contents. Someone renamed a .zip to .doc, or you’re not sure a .db file is really a database. The first few bytes of most formats are a distinctive signature (PNG starts with 89 50 4E 47, ZIP with 50 4B), and a hex view confirms it in seconds.
  • A file is corrupted and you want to know how. Truncated download, bad transfer, a header that got overwritten. Seeing the raw bytes tells you whether the damage is at the start, the end, or scattered.
  • You’re debugging something that reads or writes binary data, a save file format, a config file, a network protocol, and you need to confirm exactly what bytes are being produced.
  • You want to verify a specific value, like confirming four bytes really do represent the file size you expect, or checking a timestamp, without trusting a black-box tool to interpret it correctly.
  • Curiosity. Plenty of people open a hex editor once just to see what a familiar file format actually looks like underneath. That’s a completely legitimate reason.

If none of those describe what you’re doing, you probably don’t need one, and that’s fine. It’s a specialist tool for a specific kind of question.

What makes a hex editor good, not just functional

Once you do need one, the tools mostly do the same basic job: show bytes, let you scroll, let you search. The differences that matter are about safety and clarity, not raw feature count. Hex Fiend is the free, open-source option most Mac users end up with by default, and it’s genuinely capable, particularly with very large files. Hexter takes a narrower, more cautious approach: every file opens read-only, so looking at something unfamiliar carries zero risk, editing is an explicit, reversible step rather than the default state, and common file formats (PNG, ZIP, Mach-O, WAV, SQLite) get their structure parsed out automatically instead of leaving you to decode headers by hand.

Which one you want depends on what you’re doing. If you’re comparing two multi-gigabyte files byte for byte, Hex Fiend’s diffing is built for that scale. If you just need to confirm what a file actually is, check a handful of bytes, or make a small, careful edit without worrying about accidentally wrecking the original, that’s the situation Hexter is built for.