Skip to content

JSON to Plist

Paste or open JSON and get a valid Apple property list back — as XML or as binary — with every value's type visible before you save.

  • JSON in, plist out
  • Fix types in the tree
  • XML or binary download
  • Browser-only
Ready to open a file processed locally — nothing is uploaded

Preview types before downloading. JSON strings stay strings; null and unsafe integers are rejected. Use the tree to set Date, Data or Real explicitly.

How to use it

  1. Paste JSON into the input above, or open a .json file, then preview the conversion.
  2. Check the types in the tree — whole numbers become integers, others reals.
  3. Adjust any value that should be a date, data blob or real, then download XML. Use Other formats for binary output.

Why the type check matters

JSON cannot express the difference between <integer>1</integer> and <real>1.0</real>, and it has no date or data type at all. The tree lets you set the right plist type per key before exporting.

Try an input and compare the output

These small synthetic examples contain no personal data. Use Load sample above to inspect the same values in the tree.

{"Name":"Example","Enabled":true,"Count":3}
<dict>
  <key>Name</key><string>Example</string>
  <key>Enabled</key><true/>
  <key>Count</key><integer>3</integer>
</dict>

The XML fragment is wrapped in a complete plist document when downloaded. Strings that look like dates remain strings until you change their type in the tree.

Conversion rules and limits

PlistJSONWhat to check
integer / realnumber1 and 1.0 become the same JSON number; JSON import uses integer for whole numbers.
date / datastringISO date / Base64 text. Reverse conversion does not infer their original types.
UIDnumberThe UID tag is lost. XML export uses a CF$UID dictionary; confirm archive compatibility.
No equivalentnullJSON to Plist rejects null instead of silently replacing it.
dictobjectDuplicate keys collapse and numeric-looking keys may reorder in JSON. Use unique keys.

Numbers use JavaScript precision. JSON imports reject non-finite numbers and integers outside ±9,007,199,254,740,991. Decimal fractions can round; represent exact identifiers or decimals as strings. This tool is not an arbitrary-precision converter.

Keep plist types when editing · Apple's property-list types

Frequently asked questions

Will key order be kept?
Ordinary unique keys follow JavaScript object order. Numeric-looking keys may reorder, and duplicate JSON keys collapse during parsing. Keep the source if those distinctions matter.
Can I output a binary plist?
Yes, choose Download → Binary plist.