Skip to content

XML vs binary plist

The same property list can be stored as human-readable XML or compact binary. The data is identical — only the serialization differs. Drop a file below to see it as XML and convert it back.

  • Same data, two encodings
  • Convert both ways
  • Types and key order preserved
  • Nothing uploaded
Ready to open a file processed locally — nothing is uploaded

Two serializations of the same thing

Apple's Property List Programming Guide defines the property list as an abstract object graph — dictionaries, arrays, strings, numbers, booleans, dates and data — that can be serialized in more than one way. NSPropertyListSerialization names the two modern formats xml1 and binary1. Whichever one a file uses, reading it produces exactly the same object graph.

XML plist (xml1)

  • Starts with <?xml and declares Apple's PropertyList-1.0.dtd.
  • Readable and editable in any text editor; diffs cleanly in git.
  • Used for files developers maintain by hand: Info.plist in source control, .entitlements, most OpenCore config.plist setups.
  • Larger on disk — every value carries markup around it.

Binary plist (binary1 / bplist00)

  • Starts with the magic bytes bplist00, followed by an object table and a trailer.
  • Smaller and much faster to parse — no text scanning.
  • macOS writes user defaults (~/Library/Preferences), many system caches and most .mobileprovision profiles in binary.
  • Unreadable in a text editor — you must convert it first.

How to convert between them

On a Mac, Apple's own tool is plutil: plutil -convert xml1 file.plist turns binary into XML, plutil -convert binary1 file.plist goes the other way, and Xcode converts Info.plist files automatically when building.

Without a Mac, use the editor above: it detects the format on open, always shows the file as XML, and Download saves it as either xml1 or binary1. Conversion is lossless — types (integer vs real, dates, data) and dictionary key order are preserved exactly, so a round trip produces a file Apple's tools accept.

Which should you choose?

Keep XML in source control — it diffs and reviews well. Let binary stay where the system put it — preferences and profiles are rewritten by macOS anyway, and parsing speed matters there. When you need to inspect a binary file, convert a copy to XML rather than editing the original by hand.

Frequently asked questions

Is a binary plist a different file format?
No — it is the same property list object graph with a different serialization. Apple's PropertyListSerialization reads both transparently.
Does converting binary to XML lose anything?
Not with a correct converter. Types and dictionary key order survive the round trip; this editor guarantees both.
Why does git show my plist as binary?
Because it is a binary1 file. Convert it to xml1 to get readable diffs.
Can Xcode open binary plists?
Yes — Xcode's Property List Editor opens both formats and can save either.