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
DOMParser is not defined
How plist types map to JSON
| plist element | JSON 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
- Choose a direction: plist to JSON to read a property list, or JSON to plist to generate one.
- Paste your XML property list or JSON into the input, or press Load example to see the format.
- 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.
- For JSON to plist, choose how JSON null is written (empty string or skipped) since the plist format has no null type.
- 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
TOML to JSON Converter
Two-way TOML and JSON converter for Cargo, pyproject, Hugo, and Netlify configs.
Open tool
ConverterINI to JSON Converter
Two-way converter between INI configuration files and JSON, with section nesting and duplicate key handling.
Open tool
ConverterProperties to JSON Converter
Two-way converter between Java .properties files and JSON, with dotted nesting and full escape handling.
Open tool
ConverterXML to JSON Converter
Convert XML to JSON with attribute, text, force-array, and value-parsing options.
Open tool
ConverterJSON to XML Converter
Convert JSON to XML with attribute keys, text nodes, indent, and array options.
Open tool
DeveloperXML Formatter
Format, minify, and validate XML with line and column error reporting.
Open tool