Crush — Format Reference

Built from crush/data/build_formats_db.py at commit 640a2a9928f4 on 2026-10-21 06:46:19 UTC.

← All formats

NSKeyedArchiver

FormatNSKeyedArchiver
Short nameNSKeyedArchiver
Categoryserialization
PlatformsmacOS, iOS
Crush supportSupported (PlistParser)
StatusReviewed
Last reviewed2026-10-04

Forensic relevance

Apple's object graph serialization format, stored as a binary plist (bplist00) with a specific internal structure. Identified by the root dictionary keys: '$archiver' = 'NSKeyedArchiver', '$top' (entry point), '$objects' (object table array), and '$version'. Objects are referenced by UID pointers into the $objects table — circular references and complex graphs are supported. Used pervasively in iOS and macOS for: app state restoration, UserDefaults (complex object values), CoreData metadata, clipboard payloads, Siri intent donations (INInteraction), some Biome streams (e.g. App Intents, embedded in protobuf records), and many app-specific data files. Custom file extensions are common (.sfl, .db, .archive) — a bplist header does not rule out NSKeyedArchiver encoding. Parsing requires a two-step process: first parse the bplist structure, then resolve UID references to reconstruct the object graph.

Signatures

OffsetHex ASCII (non-printable as .)Description
offset unknown24 61 72 63 68 69 76 65 72$archiver'$archiver' key inside a binary plist (bplist00) — not detectable from the header

Known extensions

.plist, .sfl, .archive

References

Cite this entry

Crush Format Reference, “NSKeyedArchiver”. https://kalink0.github.io/crush-forensics/formats/nskeyedarchiver/ — source: crush/data/build_formats_db.py at commit 640a2a9928f4e36a976b89901512a8dce824d093, built 2026-10-21 06:46:19 UTC.

Entry in the source at this commit · Change history of the source · Report a correction