Mach-O Inspector
Drop a Mac or iOS program, library or zipped app to see the architectures it’s built for, the minimum OS and SDK, the libraries it links, its entitlements and who signed it, with its team ID and hardened runtime.
About this tool What it's for, how to use it and an example
What it's for
Look inside a Mac or iOS program or library (a Mach-O file): which processors it’s built for, the oldest system it
runs on, the libraries it loads, the entitlements it asks for (camera, sandbox, debugging…) and who signed it, as
lipo, otool -L and codesign -d would show, without the command line.
For example, when you want to know whether an app runs natively on Apple silicon, who really signed a download, or whether a build you’re about to ship still allows debugging.
How to use it
Choose or drop a program (inside an app, in Contents › MacOS), a .dylib or plug-in, or a zipped app (.zip of a
.app, or an .ipa). For a zipped app, its Info.plist gives the name, bundle ID and version, and the program it
names is read.
Architectures lists each slice of a universal file; Details for picks the slice described below it (arm64 at first). The list above the details points out what matters: unsigned or ad hoc code, apps without the hardened runtime, entitlements that allow debugging or loosen the runtime’s protections, encrypted App Store code, and Mac programs with no arm64 slice. The signature’s certificates are listed from the signer to Apple’s root, and the page checks that the signer’s key signed the code directory.
Example
In the file dialog, press ⇧⌘G, type /bin/ls and choose it. On macOS 27 the message says
ls: program for x86_64, arm64e and arm64 (subtype 12), signed. The details show the identifier com.apple.ls,
a signature by macOS Software Signing, three linked libraries starting with /usr/lib/libutil.dylib, and a note
that it’s a platform binary, part of Apple’s system software.
Good to know
The signature check covers the code directory, not each page of code, so it doesn’t prove the code hasn’t changed
since signing, and it can’t tell whether a certificate has been revoked or whether the app is notarised: use
codesign --verify and spctl --assess for that. The designated requirement isn’t decoded. A ZIP over 4 GB can’t
be read, and a large app takes a moment as the whole ZIP is opened in memory.
Guides: Checking a downloaded Mac app before you open it · Checking Mac profiles, plists and .DS_Store files
An app is a folder, so a browser can't take it whole. Zip it first (Compress in the Finder's File menu), or pick its program: Show Package Contents, then Contents › MacOS.
App
Architectures
| Architecture | Kind | Minimum OS | SDK | Size |
|---|
Linked libraries
| Library | How | Version |
|---|
Search paths (rpaths)
Entitlements
Private: this tool runs in your browser. Nothing you type, paste or choose leaves this page.
Saved you a few minutes? Say thanks with a coffee.
Something wrong with this tool, or missing from it? Report a bug or suggest a feature.