Where apps hide your files
Things stores your to-dos in one database bundle inside a group container, and it makes its own daily backups. Here is the path, what is inside, and how to copy it safely.
~/Library/Group Containers/JLMPQHK86H.com.culturedcode.ThingsMac/ThingsData-xxxxx/Things Database.thingsdatabase
Cultured Code's support pages give this layout for Things 3.13.1 and later. xxxxx stands for a short identifier that differs from Mac to Mac, and the SQLite file inside the bundle is main.sqlite. Beta builds use com.culturedcode.ThingsMac.beta in place of com.culturedcode.ThingsMac. Cultured Code notes that Things 3.13 and older produced a file called Things.sqlite3 instead.
Things was not installed on the Mac used to check this guide, so these paths come from Cultured Code's documentation. List the folder to see your own identifier:
ls ~/Library/Group\ Containers/JLMPQHK86H.com.culturedcode.ThingsMac
In Finder choose Go > Go to Folder (⇧⌘G) and paste the group container path, which is also what Cultured Code's restore guide tells you to do. In Terminal:
open ~/Library/Group\ Containers/JLMPQHK86H.com.culturedcode.ThingsMac
A .thingsdatabase bundle looks like a single file in Finder. Right-click it and choose Show Package Contents to see main.sqlite inside.
| Item | What it is |
|---|---|
ThingsData-xxxxx | The data folder for Things on this Mac |
ThingsData-xxxxx/Things Database.thingsdatabase | The live database bundle |
.../Things Database.thingsdatabase/main.sqlite | The SQLite database with your to-dos, projects and areas |
ThingsData-xxxxx/Backups | Backups Things makes automatically |
Things has no export button. Cultured Code's export article lists the routes instead:
Things Database.thingsdatabase bundle to wherever you want to keep it.Reading main.sqlite needs a database viewer, its structure is private to Things, and your task text is private data. Never write to it.
Cultured Code says Things for Mac backs up your to-dos every 24 hours while it is running, into the Backups folder inside ThingsData-xxxxx. That is a safety net for mistakes such as deleting a project. Cultured Code does not say how many backups are kept.
Cultured Code's restore article applies to Things 3.17.4 and later. Its steps, in short:
ThingsData-xxxxx.Things Database.thingsdatabase to Things Database.thingsdatabase.old, so the current data is kept.Backups, copy the backup you want, go back to ThingsData-xxxxx and paste it there.Things Database.thingsdatabase.The last step matters. Without it, Things Cloud overwrites the data you just restored with the cloud version.
The database is small for most people. Backups add up over time because each one is a full copy. Quit Things before touching the folder, and if you remove old backups, move them to the Trash in Finder rather than deleting them in Terminal, keeping the most recent ones. Never delete the live Things Database.thingsdatabase bundle, and do not delete the .old copy from a restore until you are sure the restore worked.
Install Things, turn on Things Cloud with the same account, and your data arrives by sync. Without Things Cloud, quit Things on both Macs, copy the database bundle into the same place in the new Mac's group container, and open Things.
Things on iPhone and iPad keeps its data inside the app with no folder you can reach, and syncs with Things Cloud. Cultured Code's export article notes that iOS-only users cannot print to PDF and suggests installing the Mac trial to do it.
Spotlight does not show results from ~/Library, and a .thingsdatabase is a package, so the file inside it is hidden from ordinary searches. Your to-dos are rows in a database anyway, not separate files.
These commands only list names and sizes:
ls -la ~/Library/Group\ Containers/JLMPQHK86H.com.culturedcode.ThingsMac
du -sh ~/Library/Group\ Containers/JLMPQHK86H.com.culturedcode.ThingsMac/ThingsData-*/*
The second line shows the database bundle and the Backups folder separately, so you can see which one is taking the space.
Before restoring anything, check the Logbook and Trash in Things, since completed and deleted items live there. A restore replaces everything after the backup was made, so it should be the last step, not the first.
For structured output without opening the database, Things offers AppleScript on the Mac, Shortcuts support and a URL scheme, all documented by Cultured Code. The URL scheme is built for adding, updating and showing items rather than reading them out, and commands that change existing data need an authorisation token from Things > Settings > General > Enable Things URLs > Manage. Treat any output as private. The database file is the wrong tool for automation, because its structure can change between versions.
If two Macs share a Things Cloud account, each holds its own local database and Things Cloud merges changes between them. That is why copying a database between machines is only for moving, not for syncing.
With Full Disk Access granted, so it can see inside Group Containers, typing thingsdatabase or ThingsData into Everywhere lists the database bundle and its Backups folder even though Spotlight hides them, and ⌘↵ shows the match in Finder. It searches names only, so find a task in Things itself.
In ~/Library/Group Containers/JLMPQHK86H.com.culturedcode.ThingsMac/ThingsData-xxxxx/, as a bundle named Things Database.thingsdatabase with main.sqlite inside (Things 3.13.1 and later).
Yes. Cultured Code says Things for Mac backs up your to-dos every 24 hours while it is running, into a Backups folder inside the ThingsData folder.
Go offline, quit Things, rename the current database to .old, copy a backup from Backups into its place with the original name, reopen Things, then turn Things Cloud off and on and choose Keep only the to-dos from this device.
There is no export button. Cultured Code suggests printing lists to PDF, copying the database bundle while Things is quit, or using AppleScript.
Everywhere keeps track of every file on your Mac — including the folders Spotlight hides and drives you have unplugged. Free for a day, then $19 once.
Version 2.20.3 · macOS 13+ · 4.7 MB · notarised