What is the MOM file format?
A .mom file is a compiled Core Data model produced by Xcode at build time. When a developer designs a data schema in the .xcdatamodeld source editor, Xcode compiles that design into a binary .mom (Managed Object Model) file that ships inside the application bundle and is loaded at runtime by NSManagedObjectModel.
Structurally, a .mom is an Apple binary property list beginning with the magic bytes bplist00, encoding entities, attributes, relationships, fetch request templates, and model configurations that define the app's Core Data schema. It describes the database structure - not the data itself.
For versioned schemas, Xcode builds a .momd bundle - a directory containing one .mom file per schema version plus a VersionInfo.plist that records per-entity version hashes. Core Data compares those hashes at launch to decide whether lightweight migration is possible or a heavyweight migration mapping model is needed.
Developers never edit a .mom directly; the .xcdatamodeld source file is the artifact to work with. The .mom is strictly a build product - modifying it by hand would corrupt the model. Apple platforms that use Core Data include macOS, iOS, iPadOS, tvOS, and watchOS.
A newer option, SwiftData (introduced in 2023), builds on Core Data internally but exposes a Swift macro-based API that hides .mom files from the developer entirely. For apps still targeting older OS versions, the .xcdatamodeld → .mom pipeline remains current.
Security & safety
RISK: LOWA .mom is a passive build artifact (a property list of schema definitions) and is not executable, so it poses little risk. It exposes an app's data schema but no user data. The only caution is the usual one for unknown files: inspect with plutil rather than running anything. Avoid 'MOM file opener' download sites - the right tools (Xcode, plutil) are free from Apple.
Format details
in a nutshellPrograms that open MOM files
plutil -p file.mom in Terminal, or any bplist viewer) to inspect its serialized contents. plutil -p path/to/Model.mom to print the compiled model as readable text. Technical details
deep spec| File type | Compiled Apple binary property list (bplist) |
| Magic bytes | bplist00 (62 70 6C 69 73 74 30 30) at offset 0 |
| Developer | Apple Inc. |
| Encoding | Binary (Apple bplist serialization) |
| Typical file size | A few KB to a few hundred KB (schema description, not app data) |
| Contents | Serialized NSManagedObjectModel - entities, attributes, relationships, fetch request templates, and configurations |
| Build artifact | Compiled by Xcode from a .xcdatamodeld source; not intended for manual editing |
| Versioned bundle | .momd directory containing one .mom per schema version plus VersionInfo.plist with per-entity version hashes |
| Optimized variant | .omo (optimized managed object model) - generated by Xcode for faster runtime loading |
| Migration support | Per-entity version hashes in VersionInfo.plist drive lightweight and heavyweight Core Data migration |
| Runtime loading | Loaded via NSManagedObjectModel API; drives NSPersistentStoreCoordinator and NSManagedObjectContext |
| Associated platforms | macOS, iOS, iPadOS, tvOS, watchOS |
| Modern alternative | SwiftData (2023) builds on Core Data but hides .mom files behind a Swift macro-based API |
| Released | Core Data, introduced with Mac OS X 10.4 Tiger (2005); built on the earlier Enterprise Objects Framework |
| Latest version | Tracks the current Xcode / Core Data tooling (versioned models compile to .momd directories) |
| Specification | developer.apple.com |
MOM conversions
Community Q&A
asked by usersNo questions yet - be the first to ask about MOM files.
Frequently asked questions
What is a .mom file on my Mac?
How do I open a .mom file?
plutil -p file.mom in Terminal.