Plist to JSON Converter

Convert Apple Plist files (XML or binary format) to JSON, and back. Works for macOS/iOS config files, Info.plist, preference files. No Mac required.

1.0.0
Version
Auth
Batch

About Plist to JSON Converter

Apple's Property List (plist) format ships with two faces. Older config files (LaunchAgents, some preferences) are human-readable XML. Modern Apple apps almost always write binary plist — a proprietary format that looks like gibberish in a text editor on Windows or Linux. The official conversion path is Apple's plutil CLI, which only ships on macOS. Open-source ports exist but require an install. Online converters either handle XML only (failing silently on binary) or upload the file to a SaaS, which is awkward for an Info.plist that may include bundle IDs and provisioning metadata.

This Plist to JSON converter handles both formats in both directions. The parser auto-detects XML vs binary from the file's first bytes (<?xml versus the magic bplist00 header) and decodes either. Output goes to clean pretty-printed JSON with the source-format reported, root type identified (dict, array, etc.) and top-level keys surfaced. The reverse direction lets you write JSON, optionally with an output format choice (XML plist for git-diffable readability or binary plist for production-size efficiency), and download a fresh .plist file. Bytes / Data fields are preserved through base64 encoding on the JSON side; datetime fields survive the round-trip in ISO-8601 form. Files up to 20 MB.

Use it to inspect an iOS app's Info.plist on a Windows or Linux dev machine, modify a LaunchAgent property list someone emailed you, audit an extracted app bundle's metadata, build a CI pipeline that generates plists from JSON templates, or fix a binary plist that won't open in Xcode by round-tripping through JSON. Files are processed in a stateless serverless function and discarded immediately after the response.

Plist to JSON Converter Use Cases

  • Windows or Linux developers inspecting an iOS app's Info.plist without macOS
  • Modifying a LaunchAgent .plist someone emailed without spinning up a Mac
  • Reverse-engineers auditing extracted app-bundle metadata in readable JSON
  • CI pipelines generating .plist files from JSON templates per build target
  • Repairing a binary plist that won't parse by round-tripping through JSON
  • Comparing two .plist versions for a code review by converting both to JSON first
  • Building cross-platform tools that consume Apple plist data via the JSON output

Plist to JSON Converter Features

  • Handles both XML and binary plist formats — auto-detects from the first bytes (bplist00 magic or <?xml header)
  • Two-way conversion — plist → JSON for inspection and JSON → plist for generation
  • Output format choice on the reverse side — XML plist (git-diffable) or binary plist (compact, production)
  • Bytes / Data fields preserved as base64 strings in JSON so binary blobs survive the round-trip
  • Datetime fields survive as ISO-8601 strings in JSON and convert back to plist <date> on reverse
  • Source-format and root-type reporting so you can see at a glance what kind of plist you have
  • Files up to 20 MB processed in a stateless serverless function and discarded immediately after the response

How to Use Plist to JSON Converter

Pick a direction

Plist → JSON when you have a .plist (XML or binary) and want readable structured JSON. JSON → Plist when you have JSON and want to produce a real .plist file for an iOS or macOS toolchain.

Upload your file

Drag-and-drop a .plist or .json file (up to 20 MB). The format of the .plist input (XML or binary) is detected automatically — no need to specify.

For JSON → Plist, pick output format

XML plist is human-readable and diff-friendly — good for files that live in git. Binary plist is more compact and is the default modern macOS/iOS format — good for shipping to production. Both forms parse identically in Apple tooling.

Click Convert

The result panel shows the source format detected, the root type (dict, array, string, etc.), top-level key names and item count, plus a preview of the converted data so you can spot a date-format misread before downloading.

Download the result

JSON is UTF-8 with 2-space indent, ready for jq, scripting or storage. .plist output (XML or binary) is ready for Xcode, plutil, defaults read, or your iOS app bundle's resources directory.

Plist to JSON Converter FAQ

Both. The parser checks the file's first bytes — a binary plist starts with the magic 'bplist00' header, an XML plist starts with the standard <?xml prolog. Detection is automatic; you don't need to tell it which format your file is in. Output for the reverse direction defaults to XML plist (git-diff friendly) with binary as an explicit option.

JSON has no native binary type, so plist Data (NSData) fields are base64-encoded in the JSON output. On the reverse direction, the converter recognises base64-looking strings under a known data-bearing key (or under an explicit '__data' marker) and emits proper plist <data> blocks. This round-trip is what plutil does and what most CI tooling expects.

Yes. Plist <date> values become ISO-8601 strings in JSON (2026-06-04T10:00:00Z). On the reverse, ISO-8601 strings that look like full timestamps become plist <date> entries again. If you want a string that looks like a date to stay a string, wrap it in a non-ISO format or add a sentinel character.

Yes, to a stateless serverless function — the binary plist format needs a Python plistlib pass that doesn't run cleanly in the browser. The file is deleted immediately after the response and nothing is logged to durable storage. For maximum privacy on macOS, plutil is the obvious local choice (plutil -convert json file.plist); on Linux/Windows the Python plistlib library is a one-liner.

20 MB. This covers Info.plist files (typically a few KB), full UserDefaults dumps (a few hundred KB), and most binary plist application caches. iOS/macOS occasionally use plists for large embedded data — for those, plistlib in a local script handles arbitrary sizes.

plutil is Apple's CLI shipped with macOS — fastest and most authoritative, but Mac-only. This tool gives you the same conversion (XML and binary, both directions) from any browser including Windows and Linux. Useful when you're cross-platform, when you need to share a conversion with someone who doesn't have a Mac, or when CI pipelines need the conversion without a macOS runner.

Yes. Convert plist → JSON, edit the JSON in your preferred editor (VSCode, vim, Nano), then convert JSON → plist back to a .plist file. Pick XML on the reverse side if the file will live in git so diffs are readable; pick binary if it's destined for a production iOS bundle or shipped resource where compactness matters.

Upload your .plist file

XML or binary plist • Max 20MB

Requires login • 1 credit

Plist to JSON Converter Tutorial

What is a .plist file?

A Property List (plist) is Apple's standard format for storing serialized objects — used everywhere on macOS and iOS for configuration, preferences, app metadata (Info.plist), launch daemons, and more. They come in two flavors:

  • XML plist — human-readable, verbose
  • Binary plist — compact, unreadable without tooling (bplist00 magic header)

Why This Tool Exists

If you're on Windows or Linux and receive a .plist file, or you want to read/edit an Info.plist without installing Xcode, binary plists are opaque. This tool opens both formats in your browser and converts to JSON you can actually read.

Special Type Handling

Plist supports types JSON doesn't. To keep round-trip conversions lossless, we encode them as marker dicts:

  • Bytes{"__bytes__": "<base64>"}
  • Date{"__date__": "ISO timestamp"}
  • UID{"__uid__": N}

These markers are automatically restored when converting JSON back to plist.

Common Use Cases

  • Read Info.plist from an .ipa or .app bundle on any OS
  • Inspect LaunchAgents / LaunchDaemons configs
  • Edit preference files manually, then convert back
  • Diff two plist files by comparing their JSON output
  • Bulk-process plist configs with any JSON-aware tool