PLIST Studio (open and convert plist)

Drop a .plist file to see its contents as a tree, whether it is XML or binary (bplist00). You can also save it as XML, binary or JSON. For the internal structure of an .exe or .dll, use EXE/DLL Info Viewer; for XML formatting or XPath search, use XML Studio.

On-device・No uploadMobile friendlyWorks offline

Your files and input are processed only inside your browser on this device and are never uploaded to our servers.

plist file

Drop a plist file (.plist)

or

Reads XML plist and binary plist (bplist00). Files are not uploaded.Accepts: PLIST / BPLIST / XMLPaste (Ctrl+V) also works

Paste XML text that starts with <?xml. Binary cannot be pasted; open it as a file.

The file is read only inside this browser. Nothing is sent to a server.

Structure

Open a file or paste XML.

How to use

  1. Drop a .plist file onto the frame, or choose it with "Choose file". XML and binary (bplist00) are detected automatically.

  2. Expand dict and array in the Structure panel to check keys and values. Dates show as ISO 8601 (UTC); data shows its byte count and the first bytes.

  3. If you already have the XML text, paste it into "Paste XML plist" (binary cannot be pasted).

  4. Use "Save as XML", "Save as binary" or "Save as JSON" to convert. The JSON can also be copied.

  5. Broken values are shown in red with their place and reason. A file that cannot be read shows where it stopped.

What it does

Reads XML and binary

Opens XML plist 1.0 and binary plist bplist00 in the same screen. Binary offsets, lengths and the trailer are checked to be in range before they are read.

Shows each type

Labels dict, array, string, integer (keeps digits beyond 64 bits), real, true/false, date (UTC) and data (byte count and the first 16 bytes).

Converts between XML, binary and JSON

Saves the content as XML plist 1.0 or binary bplist00, and as JSON. The page states how dates and data are written in JSON, since JSON cannot keep their types.

Points at broken parts

A cycle (an array or dictionary that refers to itself), an out-of-range offset, or nesting deeper than 512 levels stops the walk at that point, marks it as broken, and gives the reason. The rest still loads.

No external fetches in XML

Internal entity declarations (<!ENTITY) in a DOCTYPE are refused. External DTDs and entities are never fetched. Only the five predefined entities and numeric references are decoded.

Use cases

  • Check the keys in an Info.plist or entitlements file as a tree, without reading raw XML
  • Convert a binary plist (bplist00) from a Mac or iPhone to text XML so you can diff it
  • Turn a plist into JSON for a script or another tool
  • See which type each setting uses (string, integer, boolean, date)
  • Find where a broken plist fails, using offsets and cycle detection

Supported formats

Input

XML plist 1.0 (.plist)Binary plist (bplist00)Pasted XML text (UTF-8, UTF-16)

Output

XML plist 1.0 (.plist)Binary plist (bplist00, .bplist)JSON (.json)

Capability matrix

FeatureSupportNotes
Reading XML plist 1.0Supported—
Reading binary plist (bplist00)Supported—
Writing XML, binary and JSONSupportedIn JSON, date, data and uid become strings
Date precision in XMLPartialWritten XML keeps whole seconds only (milliseconds are dropped)
Binary versions other than bplist00 (such as bplist15)Not supported—
Following NSKeyedArchiver referencesNot supportedShown as a plain tree; UIDs appear as values
Fetching external DTDs or entitiesNot supportedNever fetched; internal entity declarations are refused
Editing valuesNot supportedViewing and saving only
XML character encodingsPartialUTF-8 and UTF-16 (with BOM) only; other encodings are not read
Offline useSupportedWorks without a network connection after the page has loaded once

Limits & notes

  • Files up to 10 MB. Larger files are refused before they are read.
  • Nesting up to 512 levels and up to 200,000 values. In binary, a value that is referenced several times is counted each time. Anything past the limit is left out.
  • The screen shows the first 2,000 values. Save the file to see all of them.
  • XML integers up to 40 digits; binary integers up to 128 bits. Larger values cannot be written.
  • Control characters (some of 0x00–0x1F) and unpaired surrogates cannot be written to XML.

Privacy & safety

The contents of a plist you open are processed only inside your browser. Nothing is sent to or stored on a server, including identifiers and certificates inside an Info.plist.

FAQ

What opens a plist file?
A text XML plist opens in any text editor. A binary plist (bplist00) is unreadable as text, so open it here to see the tree, and save it as XML if you need text.
How do I convert a binary plist to XML?
Drop the file in and choose "Save as XML". The XML keeps the same structure and key order. Note that milliseconds in dates are dropped.
Can I convert a plist to JSON?
Yes. Use "Save as JSON" or "Copy JSON". JSON has no date or data type, so dates become ISO 8601 strings and data becomes Base64 text.
Why does a plist show as broken?
In binary, an offset or length outside the file, or an object that refers to itself, stops the read. In XML, check that tags close correctly, entities are written properly, and the encoding is UTF-8 or UTF-16. The page shows where it stopped.

XML Studio — Formatter & Validator

Paste XML to format, minify or validate it. Errors show the exact line, column and cause, and whitespace that carries meaning (mixed content, xml:space) is never touched. XPath search and JSON conversion are on the same screen. Your data never leaves your device.

No upload

JSON Studio — Formatter & Validator

Paste JSON to format, minify or validate it instantly. Errors are shown with the exact line, column and cause, and comments or trailing commas can be auto-repaired. Your data never leaves your device.

No upload

Binary Data Studio (Hex Viewer)

Drop a file to open it as a hex dump with offsets, hex bytes and a text column. Only the visible rows are read, so even multi-gigabyte files open without freezing, and nothing leaves your device. Search, value interpretation, compare and export are on the same screen.

No upload

YAML / TOML Studio — Validate, Format & Convert

Paste YAML, TOML or JSON to validate, format or convert it. Errors show the exact line and column, and type traps such as “no becomes false” and anything lost in conversion are flagged up front. Your data never leaves your device.

No upload

Diff Tool — Text & Code Compare

Paste or drop two versions and see added and removed lines, plus the exact words that changed inside each line. Copy or save the result as a unified patch. Nothing leaves your browser.

No upload

UUID / ULID / NanoID / Token Generator

A UUID is ready the moment the page opens. Switch to UUID v7, ULID, NanoID or a random token, generate up to 10,000 at once and save them as .txt, .csv or .json. Paste an existing UUID or ULID to read its embedded time and version.

No upload

Last updated: