Mach-O viewer that reads macOS and iOS binaries and dylibs like otool: load commands, linked libraries, symbols, code signature and entitlements. No upload.
Mach-O viewer that reads macOS and iOS binaries and dylibs like otool: load commands, linked libraries, symbols, code signature and entitlements. No upload.
Is Mach-O Viewer free to use?
Yes. Mach-O Viewer is completely free with no usage limits, and there is no paid tier required to use it.
Do I need an account to use Mach-O Viewer?
No. Mach-O Viewer works immediately in your browser with no signup, login, or email address required.
View and explore JSON data in an interactive collapsible tree structure. Search, filter, and navigate nested objects and arrays. Free online JSON viewer with no signup required.
CSV viewer online: open a CSV from a URL, upload a file, or paste data, then search, sort, and filter it in a clean table. Shareable ?url= links, custom delimiters, large files.
Share code snippets, logs, and text with a shareable link. Syntax highlighting for 30+ languages, expiration controls, and password protection for Pro users.
Drop a macOS or iOS binary, .dylib, framework binary, .o, .a, .ipa or zipped .xcframework here, or click to browse
Up to 1.5 GB. Read in your browser, never uploaded, and nothing in it runs. An app's binary is inside the bundle at MyApp.app/Contents/MacOS/MyApp (Show Package Contents in Finder).
Mach-O Analysis
The architectures, minimum macOS or iOS version, linked libraries with their versions, @rpath lookups, load commands, exports and imports, code signature, entitlements and a hardened runtime and notarization check will appear here.
About Mach-O Viewer
A Mach-O viewer is used to inspect macOS and iOS executables, .dylib libraries, framework binaries, object files and static libraries without Xcode. It reads what otool -l, otool -L, nm -m, dyld_info and codesign print: the architectures, load commands, linked libraries and @rpath lookups, exports and imports, and the code signature with its entitlements, then checks the hardened runtime and Apple's notarization requirements.
Key Features
Opens universal (fat) binaries with an architecture picker, thin x86_64, arm64, arm64e, arm64_32 and 32-bit ARM or Intel images, static libraries (.a), and the binaries inside an .ipa or a zipped .xcframework
Lists every load command with the fields otool -l prints, plus segments and sections, the LC_BUILD_VERSION minimum OS and SDK, the UUID, LC_RPATH entries and chained fixup formats
Shows linked libraries with their current and compatibility versions, and spells out every path dyld tries for each @rpath library
Reads exports from the export trie with weak, thread-local and re-export flags, imports with the library each one comes from, and the full nm -m symbol table, with a CSV download
Decodes the code signature like codesign -dvvv: CodeDirectory flags, team ID, CDHash, certificate chain, secure timestamp, designated requirement and entitlements, and re-hashes every code page to catch a binary changed after signing
Checks PIE, hardened runtime, library validation, get-task-allow, stack canaries and FairPlay encryption, and runs Apple's notarization checklist for Developer ID software
Use Cases
Checking that a Developer ID signed Mac app has the hardened runtime and a secure timestamp before you submit it to Apple's notary service
Confirming a vendor SDK's xcframework slice includes arm64 and the iOS minimum version your app targets before an App Store submission
Verifying that a Mac app or command-line tool ships an arm64 slice and runs natively on Apple silicon instead of under Rosetta 2
Finding out why dyld stops with "Library not loaded: @rpath/..." by seeing which LC_RPATH entries the binary has and every path dyld tries
Auditing the entitlements of a third-party Mac app, such as disabled library validation or allow-jit, during a SOC 2 security review
Matching a crash report to the right dSYM by the binary's LC_UUID
Supported Formats
Universal (fat) binaries
Executables and command-line tools
Dynamic libraries (.dylib) and framework binaries
Bundles and plug-ins
Object files (.o) and static libraries (.a)
dSYM debug files
.ipa and zipped .xcframework or .app archives
Node.js native addons (.node)
Related Keywords
mach-o viewer
macho file viewer online
otool online
dylib viewer
mach-o parser
macos binary analyzer
ios binary analyzer
dylib dependencies viewer
mach-o load commands viewer
fat binary architectures checker
How do I check if a Mac app supports Apple silicon?
In Terminal, run lipo -archs on the executable inside the app bundle, for example lipo -archs /Applications/MyApp.app/Contents/MacOS/MyApp. A universal app prints x86_64 arm64, while an Intel-only app prints just x86_64 and runs on Apple silicon through Rosetta 2. Without Terminal, open that same file here (in Finder, choose Show Package Contents, then Contents/MacOS): the Architectures tile lists every slice and the Overview says whether the app runs natively on Apple silicon, on Intel, or on both.
Your binary never leaves this tab
The file is parsed in your browser, ZIP and .ipa archives included. Nothing is uploaded, nothing in it runs, and auto-save keeps only the text report, never the binary.