Plist Viewer (binary & XML)
Property lists are how macOS and iOS store almost everything: app preferences, Info.plist, configuration profiles, backup manifests. Half of them are XML you can read in an editor, and half are Apple's binary format, which opens as a wall of bytes starting with the letters bplist. This reads both. The binary form is decoded properly rather than scanned for strings: the 32-byte trailer at the end of the file says how wide the offset and reference integers are and where the object table lives, and every value is reached through that table, so nothing can be read by walking forwards from the header. Integers of one, two, four and eight bytes, floats, dates on Apple's own epoch, raw data, UIDs, arrays, sets and dictionaries all come back with their types intact. The result is shown as a tree and offered as JSON and as an XML plist, so a binary file you cannot edit becomes one you can. When the file turns out to be an NSKeyedArchiver archive — a flat table of objects joined by UID references, which is what iOS writes for anything non-trivial — it says so, because that explains why the contents look nothing like the structure the app appears to store. Nothing is uploaded.
How to use
- Drop a .plist or .mobileconfig file, or paste XML plist text.
- The format is detected — binary files say how many objects they hold.
- Read the tree: each row shows the key, the type and the value.
- Copy the JSON if you want to process it, or the XML plist if you want to edit it.
- Data and dates are labelled rather than flattened into strings.
Frequently asked questions
- What is the difference between a binary and an XML plist?
- Only the encoding. They hold the same values, and macOS treats them interchangeably. The binary form is smaller and faster to load, which is why most files on a device are binary even though the same data is often documented as XML.
- Why does my file look like meaningless numbers and $-prefixed keys?
- It is probably an NSKeyedArchiver archive. Those store a flat list of objects in $objects and join them with UID references rather than nesting, so the shape you see is the archive's, not the app's. The viewer flags this when it sees the $archiver key.
- Why are dates off by 31 years elsewhere?
- Apple counts seconds from 2001-01-01 rather than 1970-01-01, a difference of 978307200 seconds. Reading a plist date as a Unix timestamp lands it in 1970-something; the offset is applied here so the dates come out right.
- What happens to binary data?
- It is kept as data and reported with its length. In the JSON output it becomes base64 under a __data_base64 key, since JSON has no byte string, and in the XML output it goes back to a <data> element.
- Can it edit or write a binary plist?
- It converts a binary plist to XML, which you can edit and convert back with plutil or any plist library. Writing the binary form is not something this tool does.
- Is my file uploaded?
- No. It is parsed in your browser and nothing is sent to a server — which matters for preference files, since they often contain account names and paths.
Related tools
Excel (XLSX) to CSV, JSON & Markdown
Open an .xlsx workbook in the browser and export any sheet as CSV, JSON or a Markdown table — the file never leaves your device.
MessagePack Decoder
Paste base64 or hex MessagePack bytes and read the values — types, nested maps, binary blobs and timestamps — decoded in your browser.
ICS Calendar Viewer & Recurrence Expander
Open an .ics invite or calendar export and read what is actually in it — every field, plus the real dates a repeating rule produces.
PWA Manifest Builder
Build a valid `manifest.json` for a Progressive Web App — name, icons, theme color, display mode, scope, orientation — with the matching HTML `<link>` and Apple meta tags.
XML ↔ JSON Converter
Convert XML to JSON and back, with full attribute support, configurable attribute prefix and text key. Browser-native DOMParser handles namespaces, CDATA, comments.
EPUB Viewer, Metadata & Text Extractor
Open an .epub in your browser: metadata, chapter list with word counts, the plain text, and the structure checks that explain why a reader rejects a book.