Drop any file to identify it
No upload. No signup. No sending your file halfway across the internet.
We tell you what it is, right here in your browser.
Drop it!
Let go to identify this file.
Couldn't identify this file
Need to convert it? fwip it →
Mach-O (Mach Object) is Apple's executable format — the macOS/iOS equivalent of Linux's ELF. Every native macOS app, every command-line tool in /usr/bin, every .dylib library, every .kext kernel extension, and the macOS kernel itself is a Mach-O file. The format originated with NeXTSTEP in the late 1980s and Apple inherited it when buying NeXT in 1996.
Five magic-byte variants exist: 32-bit and 64-bit, big-endian and little-endian (legacy from PowerPC days when Macs used big-endian PPC chips), and "universal" (a.k.a. fat binary, magic `CA FE BA BE`) which packages multiple architectures into one file. Modern Apple Silicon Macs run universal binaries containing both arm64 and x86_64 slices, transparently picking the right architecture at launch. The `lipo` CLI extracts or combines architectures; `otool` inspects Mach-O headers and linked libraries.
macOS's sandboxing, code signing, and Gatekeeper systems all build on top of Mach-O. When you run an app for the first time, macOS checks its embedded code signature against the developer's certificate via Gatekeeper. Stripped, ad-hoc-signed, or unsigned Mach-O files trigger a Gatekeeper warning ("can't be opened because the developer cannot be verified"). Don't run Mach-O binaries you didn't build yourself or didn't get from a trusted source — App Store, signed installer pkg, or a reputable package manager like Homebrew.
* Inspect Mach-O headers and linked libraries * Inspect / extract architecture slices