Property lists and defaults
Open any property list — XML, binary (bplist00, every type including UIDs and dates), old-style OpenStep, `defaults read` output or JSON — edit it as a tree and get the plutil and defaults commands for each change, convert it byte-for-byte the way plutil does, take a binary plist apart, and browse a curated catalogue of defaults write tweaks with read and undo commands.
Added
How to use it
Property lists are everywhere on a Mac: preferences, Info.plist, launchd jobs, Xcode projects,
keyed archives. They come in four spellings and two of them aren’t readable as text. This page
reads them all, shows them as a tree you can edit, and writes them back out in any format — the
same bytes plutil would write.
How to use it
-
Paste a plist, or Open file… (or drop one on the page). Binary files work; so does the output of
defaults read, which isn’t quite a plist (it prints data as{length = 4, bytes = 0x…}and loses the difference between some types — the page says where). Examples has one of each, including a binary keyed archive with UIDs. -
Tree: change values, keys and types, and add or delete items. Integers keep their full 64-bit range (unsigned too); dates are edited in UTC; data as hex.
-
Commands: every edit, as the
plutil -replace / -insert / -removecommand that makes it in a file (keys with dots are escaped), and asdefaults write / deletefor top-level keys of a preference domain. Collections go in as-json, or-xmlwhen they hold dates or data. -
Convert: XML, binary, JSON (compact or readable), old-style ASCII, or the
plutil -pview, with a download button and the matchingplutil -convertcommand. JSON can’t hold dates, data or UIDs — plutil refuses, and so does this page unless you tick lossy. -
Binary layout: the header, trailer, offset table and each object’s offset, marker and kind — useful when a binary plist won’t open, or to see how it’s built.
-
defaults tweaks: a searchable list of
defaults writesettings — Dock, Mission Control, screenshots, Finder, desktop, keyboard and text, trackpad, windows and documents, menu bar clock, Xcode, Simulator, Safari and others — each with its write, read and undo commands and the macOS versions it’s known to work on. The page never runs any of them.
How exact is it?
The XML writer reproduces plutil -convert xml1 byte for byte (key order, tabs, base64 line
widths, real numbers printed the way Apple’s C library rounds them), and the JSON and plutil -p
views match too. The tests check this against several hundred random plists of every type that
were converted by the real plutil on macOS 27, and also that plutil reads the binary files this
page writes back to the same XML. Binary output holds the same objects as plutil’s, but not always
in the same byte order (plutil’s depends on hash tables). The tweak catalogue comes from
macos-defaults.com (with the versions it lists as tested) and Mathias
Bynens' dotfiles; each entry says which.
Use defaults rather than editing files in ~/Library/Preferences directly: preferences are cached
by cfprefsd, which can put old values back over your edit.
Related: launchd jobs builds and checks launchd plists; JSON workbench and jq for the JSON you convert to.
Feedback is a gift. Something to improve, a feature to add, or a bug? Tell me.
Runs entirely in your browser; nothing you type leaves this page.