Hexter

How to Open and Read a Binary File on Mac

You’ve got a file with no useful extension, or one macOS doesn’t recognize, a .bin, a firmware dump, an old game save, something a device exported. Double-click it and either nothing happens, or it opens in TextEdit as a wall of broken characters. You want to know how to open a binary file on Mac without guessing and without risking the file itself.

Why double-clicking doesn’t work

macOS decides how to open a file based on its extension and, failing that, a guess at its type. Binary files, files that store raw data rather than text, don’t have a standard extension the system recognizes, so macOS either refuses to open them or hands them to whatever app it thinks is closest. Usually that’s TextEdit, which tries to decode the bytes as text and shows you mostly unreadable symbols with the occasional real word poking through.

That readable-word-in-the-noise effect isn’t your imagination. Binary files often contain embedded text (file paths, labels, version strings) even though the surrounding data is genuinely binary. TextEdit renders all of it as text, which is why you get that half-garbled, half-familiar look. It’s not actually showing you anything useful, and if you save from TextEdit by accident, you can corrupt the file.

What you actually want: a hex view

A binary file is just a sequence of bytes, each one a number from 0 to 255. The standard way to look at that safely is a hex view: each byte shown as a two-character hexadecimal value (00 to FF), lined up in rows next to an offset column (where in the file you are) and a text column (the same bytes interpreted as ASCII, for the parts that are readable). That’s what a hex editor gives you, and it’s the only view that shows you the actual contents without guessing at a format.

Three ways to get there

Terminal, with xxd or hexdump. macOS ships both. Run xxd yourfile.bin | less and you’ll get a scrollable hex dump right in Terminal. It’s fast and it’s always available, but it’s read-only, has no search, no jump-to-offset, and no interpretation of what you’re looking at beyond raw hex. Fine for a quick peek, awkward for anything more.

TextEdit or another text editor. Don’t. As above, it decodes bytes as text, which is the wrong lens for binary data, and there’s real risk of silently corrupting the file if it gets saved.

A dedicated hex editor. This is the right tool if you’re doing more than a five-second glance: scrolling through a large file, searching for a specific byte pattern, jumping to a known offset, or checking what a chunk of bytes actually represents (a number, a date, a color, a string in a different encoding). Hexter is built for exactly this. It opens every file read-only by default, so looking at an unfamiliar binary file carries no risk of changing it. Files open instantly regardless of size, because Hexter reads bytes on demand rather than loading the whole file into memory.

Step by step

  1. Open the file. Drag it onto Hexter, or use File > Open. There’s no need to guess a file type first; Hexter opens anything as raw bytes.
  2. Read the layout. The offset column on the left tells you where you are in the file. The hex grid in the middle shows each byte as two hex characters. The text pane on the right shows the same bytes as ASCII, for whatever parts of the file are actual text.
  3. Jump to a specific offset with ⌘J if you already know where to look, instead of scrolling.
  4. Select bytes to inspect them. Selecting a range shows you that data interpreted as different numeric types (8, 16, 32, or 64-bit integers, signed or unsigned, in either byte order) in the Inspector sidebar. This is how you figure out whether four bytes are a file size, a timestamp, or something else.
  5. Search with ⌘F if you’re looking for a specific string or byte sequence rather than scrolling manually.
  6. Only enable editing if you actually need to change something. Hexter keeps files read-only until you explicitly turn editing on, and even then, changes sit in a reversible patch layer until you choose to save. Nothing you do while just looking can touch the original file.

If it turns out the file is a format Hexter recognizes structurally, PNG, ZIP, Mach-O, WAV, or SQLite, the Analyze tab will parse out the actual structure (chunk boundaries, headers, fields) alongside the raw bytes, so you get more than just hex.

That’s the whole workflow: open, read the three columns, jump or search to get where you need, and inspect a selection when you need to know what a specific run of bytes actually means. No guessing, and nothing at risk until you say so.