The macOS / iOS Plist Viewer opens Apple property list files and renders their contents as a clear, navigable tree. Property lists are Apple’s standard format for storing structured configuration and app data — preferences, Info.plist metadata, cached state and more. They come in two flavours, human-readable XML and compact binary, and this tool handles both directly in the browser.
How it works
The viewer first checks the file’s leading bytes. If they spell bplist, it parses the binary format; otherwise it parses XML.
For XML plists, the browser’s built-in DOMParser reads the document, and the tool maps each element to a value: <true/> and <false/> become booleans, <integer> and <real> become numbers, <string> and <date> become their text, <array> becomes a list, and <dict> pairs alternating key and value elements.
For binary plists, the format is more involved. A 32-byte trailer at the end of the file records the offset-table entry size, the object-reference size, the number of objects, the index of the top object and where the offset table starts. Each object’s first byte is a marker whose high nibble is the type (integer, real, date, data, ASCII or UTF-16 string, array, dictionary) and whose low nibble is either a small length or a flag to read an extended length. The tool follows object references recursively to rebuild the full tree.
Tips and notes
- Binary dates use seconds since
2001-01-01, not the Unix epoch — the tool converts them for you. - Strings can be stored as ASCII or UTF-16 big-endian; both are decoded correctly.
- Need machine-readable output instead of a tree? Use the companion Plist to JSON converter.
Everything runs locally in your browser — nothing is uploaded.
Where plist files live on macOS and iOS
Knowing where to find plists saves time when investigating app behaviour or troubleshooting preferences:
macOS system and app preferences:
~/Library/Preferences/— per-user preferences for most apps, keyed by bundle ID (for examplecom.apple.finder.plist)./Library/Preferences/— system-wide preferences requiring admin access.~/Library/Containers/[bundle-id]/Data/Library/Preferences/— sandboxed Mac App Store apps store their preferences inside their container.
iOS (via device backup or Xcode):
- iOS apps store plists in their app sandbox, accessible through Xcode’s Devices window by downloading the app container, or in an iTunes/Finder backup at
~/Library/Application Support/MobileSync/Backup/.
Info.plist — the app manifest:
- Every macOS and iOS app bundle contains an
Info.plistat its root that declares the bundle ID, display name, supported device types, permissions, URL schemes, and minimum OS version. Inspecting this file is useful when analysing a third-party app.
Editing preferences from the command line (macOS)
For those who prefer the terminal, macOS ships with the defaults command for reading and writing preference plists. For example, to read a preference:
defaults read com.apple.finder ShowHardDrivesOnDesktop
And to convert a binary plist to readable XML so you can open it in any text editor:
plutil -convert xml1 ~/Library/Preferences/com.apple.finder.plist -o /tmp/finder-prefs.xml
The -convert xml1 flag produces an XML plist; -convert json produces JSON. Both are useful when you want to diff preference files or import them into another tool.
Data type reference
| Plist type | XML tag | Binary marker (high nibble) | Viewer display |
|---|---|---|---|
| Boolean true | <true/> | 0x0 (value 0x09) | true |
| Boolean false | <false/> | 0x0 (value 0x08) | false |
| Integer | <integer> | 0x1 | numeric value |
| Real | <real> | 0x2 | numeric value |
| Date | <date> | 0x3 | ISO-8601 (converted from Apple epoch) |
| Data (bytes) | <data> | 0x4 | byte count placeholder |
| String (ASCII) | <string> | 0x5 | text |
| String (UTF-16) | <string> | 0x6 | text |
| Array | <array> | 0xA | expandable list |
| Dictionary | <dict> | 0xD | key-value pairs |