Zero Signup ToolsFree browser tools

Converter Tools

plist to JSON Converter

Convert an Apple XML property list to JSON, or JSON back to plist, in your browser. Handles dict, array, integer, real, bool, date, and base64 data.

plist to JSON converter

Dates and data

<date> and <data> become { "__date__": ... } and { "__data__": ... } so a round trip back to plist is exact.

JSON indent

Output

JSON

How plist types map to JSON

plist elementJSON value
<string>"text"
<integer>number (whole)
<real>number (decimal)
<true/> / <false/>true / false
<date>{ "__date__": "ISO 8601" } or a string
<data>{ "__data__": "base64" } or a string
<array>array
<dict>object

Binary property lists (the bplist00 format) are not text and cannot be pasted here. Convert one to XML first with plutil -convert xml1 file.plist on macOS, then paste the result.

Privacy

Parsing and conversion run entirely in your browser with the native XML parser and JSON engine. The property lists and JSON you paste, including any Info.plist, entitlements, or preference data, are never uploaded, logged, or stored.

How to use

  1. Choose a direction: plist to JSON to read a property list, or JSON to plist to generate one.
  2. Paste your XML property list or JSON into the input, or press Load example to see the format.
  3. For plist to JSON, pick how dates and base64 data are represented: tagged objects keep a round trip exact, or raw strings keep the output flat.
  4. For JSON to plist, choose how JSON null is written (empty string or skipped) since the plist format has no null type.
  5. Read the converted output, copy it with the copy button, or press Swap and reuse output to round-trip the result back the other way.

About this tool

plist to JSON Converter turns Apple's XML property list format into JSON and converts JSON back into a valid property list, all in your browser. A property list, or plist, is the small XML dialect Apple uses for configuration across iOS, iPadOS, macOS, watchOS, and tvOS: Info.plist files that describe an app bundle, entitlements files, launchd job definitions, preference files, and most of the *.plist files you can open as text. The format is a handful of typed elements nested inside containers: <string>, <integer>, <real>, <true/> and <false/>, <date>, <data>, plus <array> for ordered lists and <dict> for key and value maps where every value is preceded by a <key>. This tool parses that XML with the browser's own DOM parser, walks the tree into a plain value, and serializes it as JSON, so a <dict> becomes a JSON object, an <array> becomes a JSON array, <integer> and <real> become numbers, <true/> and <false/> become booleans, and <string> becomes a string. Two plist types have no native JSON equivalent, and a naive converter quietly mangles them, so this tool handles them deliberately. A <data> element holds base64-encoded binary, which JSON cannot represent, so by default each one becomes a tagged object shaped like { "__data__": "<base64>" }; a <date> element holds an ISO 8601 timestamp, which becomes { "__date__": "..." }. The tagged form means a round trip is exact: convert plist to JSON and back and the dates and data survive as real <date> and <data> elements rather than collapsing into ordinary strings. If you prefer flatter output you can switch dates and data to plain strings instead. The reverse direction reads any JSON and emits a clean, indented XML plist with the standard XML declaration and Apple DOCTYPE: objects become <dict>, arrays become <array>, whole numbers become <integer>, decimals become <real>, booleans become <true/> or <false/>, and the same { "__date__": ... } and { "__data__": ... } wrappers are recognized and turned back into <date> and <data>. Because the plist format has no null type, you choose how JSON null is written, either as an empty <string> or by skipping that key entirely. The converter also catches the things that trip people up: a binary property list (the bplist00 format) is not text and cannot be pasted, so the tool detects it and tells you to run plutil -convert xml1 first; a <dict> whose keys and values are out of order is reported with the exact problem; and malformed XML returns the parser's own error rather than failing silently. It accepts either a full <plist> document or a bare top-level element. Everything, the XML parsing, the JSON serialization, the type mapping, and the reverse generation, runs locally in your browser, so the Info.plist, entitlements, preference data, or configuration you paste is never uploaded, logged, or stored.

Free to use. Works in your browser. No signup, no login.

Related tools

You may also like

All tools
All toolsConverter Tools