Plist Viewer

Open an Apple property list (.plist) and read it as a clean, collapsible tree instead of raw XML. The viewer parses the XML plist format with the browser's own DOMParser and maps every node type — <dict>, <array>, <string>, <integer>, <real>, <true/>/<false/>, <date>, and <data> — into a typed structure you can expand and collapse. If you paste a binary plist it is detected and flagged, since only the XML form is supported. Everything is parsed in your browser, so Info.plist files and app preferences never leave your machine.

How to use the Plist Viewer

Paste the XML of a .plist file into the box, or load a file with the picker. The viewer parses it and renders a tree where every dictionary and array is a collapsible node; click a triangle to fold or unfold a branch, or use Expand all / Collapse all to open or close the whole document at once. Each value is tagged with its plist type, so you can tell a string from an integer or a bool at a glance, and dictionary keys are shown next to their values.

If the content is a binary plist — the kind that begins with the bytes bplist00 — the viewer detects it and shows a notice, because binary plists are a packed format that browsers cannot decode without extra tooling. To read one, convert it first with plutil -convert xml1 file.plist on macOS (or plistutil on Linux) and paste the resulting XML here. Malformed XML is reported with the parser's error message so you can spot an unclosed tag or stray character quickly.

What is an Apple property list (plist)?

A property list, or plist, is Apple's standard format for storing structured configuration and serialized objects across macOS, iOS, and the rest of the Apple platforms. Conceptually it is a tree of typed values built from a small set of primitives: dictionaries (string-keyed maps), arrays, strings, integers, real numbers, booleans, dates, and raw binary blobs. If you have ever shipped an app you have written one — the Info.plist bundled with every .app and .ipa declares the bundle identifier, version, permissions usage descriptions, and supported orientations. User and app preferences set through NSUserDefaults/UserDefaults are persisted as plists too, typically under ~/Library/Preferences/, and launchd service definitions live as plists in the various LaunchAgents and LaunchDaemons directories.

Plists come in three on-disk representations of the same data model. The XML form, defined by Apple's PropertyList-1.0.dtd, wraps values in tags like <dict>, <key>, <string>, and <integer>; it is human-readable and diff-friendly, which is why it is common in source control and what this viewer parses. The binary form (identified by the leading magic bplist00) is a compact packed encoding optimized for size and fast loading, and it is what macOS writes by default — but it is not text and cannot be read directly. A JSON-style plist also exists for tooling that prefers JSON. The plutil command converts freely between them: plutil -convert xml1 or -convert binary1.

Because all three encodings describe the identical structure, reading a plist is really about decoding whichever container you were handed and then walking the tree. This tool focuses on the XML encoding because the browser can parse XML natively and safely, with no need to ship a binary decoder or contact a server. The result is a typed, navigable view that makes it easy to verify a bundle identifier, check which keys an app declares, or inspect a preferences file without launching Xcode or a property list editor.

Common use cases

  • Inspecting Info.plist. Confirm the bundle ID, version, permission strings, and capabilities an app declares before submission.
  • Reading preferences. Explore an exported UserDefaults / preferences plist to see what an app has stored.
  • Debugging launchd jobs. Check the program arguments, labels, and run conditions inside a LaunchAgent or LaunchDaemon plist.
  • Reviewing config diffs. Read an XML plist as a typed tree to verify a change without trusting raw angle brackets.

Frequently asked questions

Can it open binary plists?

No. Binary plists (those beginning with the bytes bplist00) are a packed format that browsers cannot decode without extra libraries, so the viewer detects them and shows a notice. Convert one to XML first with "plutil -convert xml1 file.plist" and paste the result.

Which plist value types are supported?

All of the standard XML plist types: dict, array, string, integer, real, true/false booleans, date, and data (base64 blobs). Each value is labeled with its type in the tree.

How is the XML parsed?

With the browser built-in DOMParser, the same XML engine the page itself uses. There is no third-party parser and no network call, and malformed XML is reported with the parser error message.

What is shown for <data> elements?

Data nodes hold base64-encoded bytes; the viewer shows the value as base64 along with its decoded byte length, rather than attempting to render arbitrary binary content.

Is my plist uploaded?

No. The file is read and parsed entirely in your browser with client-side JavaScript. Nothing is sent to any server, so Info.plist files, preferences, and any embedded values stay on your device.
Embed this tool on your site

Free to embed, no attribution required (but appreciated). Paste this where you want the tool to appear: