What this tool reads
Drop in any Mach-O binary — an executable, a dynamic library (.dylib), a bundle, or a fat/universal binary carrying several architectures — and this tool parses it entirely in your browser, the way otool does, showing:
- The Mach header: CPU type and subtype, file type (executable, dylib, bundle, core, …), load command count, and header flags (PIE, two-level namespace, TLV descriptors, and more).
- Load commands: every
LC_SEGMENT/LC_SEGMENT_64with its contained sections (name, address, size),LC_LOAD_DYLIB/LC_ID_DYLIBfor linked libraries with their versions,LC_SYMTABlocation,LC_UUID, andLC_BUILD_VERSION/LC_VERSION_MIN_*. Any load command this tool does not specifically decode is still listed by its numeric code and size — nothing is silently dropped. - Segments and sections: click a segment to see the sections inside it, with their addresses and sizes.
- Linked libraries: every
LC_LOAD_DYLIBpath with its current and compatibility version.
Fat (universal) binaries — an honesty note
A fat binary bundles several thin Mach-O images, one per architecture, behind a fat_header/fat_arch table. This tool implements that structure directly from the public <mach-o/fat.h> header and will list each architecture separately. However, no live universal binary was available to test this against — the fat-binary code path is verified structurally (it follows the documented format) but not against a real multi-architecture sample. The thin, single-architecture path (the common case — most binaries you'll actually inspect) is fully verified against a real macOS executable. If you inspect a fat binary and something looks off, that is why.
Why this is useful
Check what libraries a downloaded macOS binary actually links against, confirm which minimum OS version and SDK a build targets, inspect a binary's segment layout, or explore Mach-O internals without a Mac.
Privacy
Everything happens locally in your browser using JavaScript. The file you choose is never uploaded anywhere.
Tiny Online Tools







