Skip to content

What is a .plist file?

A property list is Apple's standard serialization format for structured settings — app metadata, user defaults, entitlements and configuration profiles. Open one below to see how it is built.

  • Three storage formats
  • Typed keys and values
  • Used across macOS and iOS
  • Open yours below
Ready to open a file processed locally — nothing is uploaded

The short answer

A property list — .plist for short — is Apple's standard file format for storing structured data: a dictionary of keys and typed values. It is the same format Apple's own frameworks use everywhere, described in Apple's Property List Programming Guide. Every macOS and iOS app ships one as its Info.plist, user defaults (the defaults system) live in plist files under ~/Library/Preferences, and launchd jobs, entitlements and configuration profiles are all property lists.

The seven property list types

Apple's documentation defines a closed set of primitive types. In Core Foundation they map to CF types; in Foundation, to NS classes:

  • string (CFString / NSString) — text, stored as UTF-8.
  • integer and real (CFNumber / NSNumber) — whole numbers and floating point, and they are different types.
  • boolean — true / false.
  • date (CFDate / NSDate) — a timestamp.
  • data (CFData / NSData) — raw binary, shown Base64-encoded in XML.
  • array and dictionary (CFArray / NSArray, CFDictionary / NSDictionary) — ordered lists and ordered key/value maps that can nest to any depth.

XML vs binary vs OpenStep

  • XML (xml1) — human-readable markup starting with <?xml, conforming to Apple's PropertyList-1.0 DTD. This is what you normally see in a source repository.
  • Binary (binary1) — a compact encoding starting with the bytes bplist00; smaller and faster to parse, but unreadable in a text editor. macOS writes user defaults and many system files in this format.
  • OpenStep / ASCII — the older { Key = "Value"; } style, still used by .strings localization files and readable by Apple's APIs for compatibility.

How Apple tools convert between them

On a Mac, plutil -convert xml1 and plutil -convert binary1 convert a plist between formats, and plutil -lint validates it. In code, NSPropertyListSerialization (Swift) or CFPropertyList (Core Foundation) read and write all three formats. This editor does the same job in the browser: drop a file above and download it back as XML, binary or JSON.

Why types matter

A property list records whether 1 is an integer, a real or a string, and keeps dictionary keys in their written order. Tools that convert through generic JSON objects lose that distinction and reorder keys, which produces noisy diffs and occasionally broken builds — Xcode will happily reject an Info.plist where a CFBundleVersion drifted from string to real. This editor preserves both.

Frequently asked questions

What opens a .plist file?
Xcode's Property List Editor on macOS, a text editor for XML plists, plutil on the command line, or this browser editor for all three formats on any operating system.
Can I convert a plist to JSON?
Yes, though dates, data and the integer/real distinction do not survive JSON, which only knows one number type.
Is a .mobileconfig a plist?
Yes — Apple configuration profiles are property lists with a defined set of payload keys, optionally wrapped in a CMS signature.
How do I validate a plist on a Mac?
Run plutil -lint file.plist. In this editor, invalid files are rejected with the exact offset of the problem.