all Presets gone away

While I was trying to create a new Stream Deck trigger, BTT deleted all my presets. Specifically, I couldn't access the button I had just created—it had simply disappeared. Then BTT crashed, and after restarting, everything was gone. After trying three times to open three of the most recent automatic backups, I was still left with a blank BTT interface. What can I do about this?

Before trying any further restoration I'd recommend to do a full backup

Which version of BTT are you currently on? Do you maybe already have a backup system like Apple's Time Machine or similar running (then you could just back in date for the BTT folder ~/Library/Application Support/BetterTouchTool )

I just finished creating the full backup. Unfortunately, there's no global backup option via Time Machine or similar tools. The ZIP file from the backup is 192 MB in size, which, when extracted, becomes a folder that's 1.2 GB in size. That seems like a lot to me, but the folder on drive C is the same size. However, at first glance, I can’t find anything in the folders that would explain this size. Achja, ich nutze Version: 6.885 (Build 2026100205)

Can you open the BTT Data folder and post a screenshot of the last modified files here? Maybe the file sizes show which ones are corrupted.


I would try to quit BTT and delete all files starting with
btt_data_store.version_6_885_ from that folder. Then BTT will try the previous ones.

There seems to be a large drop in file size going from 6.864 to 6.885.

I just gave the AI those two lock files as well, and it did something in response, so I’ve now asked it to write down exactly what it did. Maybe it’ll help some of the colleagues.

"Before deleting anything I looked at the store files, and I was able to restore everything without falling back to 6.864. Details in case they help you:

Situation (BTT 6.885, macOS 15.7.9)
While editing Stream Deck buttons, a button vanished from the UI (it was still shown on the physical Stream Deck). This had happened a few times before. Then BTT crashed, and after the relaunch all presets were gone. The log showed error loading master preset and 0 trigger row(s) fetched on every start.

What was in the folder

btt_data_store.version_6_885_build_2026100205 (the main store): 5.5 MB, dated Oct 3, intact (integrity_check ok), but with 0 triggers. This is the "drop in file size" you mentioned. BTT loaded this one on every start and recorded it as BTTLastSuccessfullyOpenedDataStore.
Several copies of the same name with a UUID suffix, plus their -wal and -shm files. One of them (suffix 9D258FFD-…, 25 MB, WAL from today) was complete: 2014 gestures, 1511 key triggers, 66 apps, 613 traits. integrity_check ok.
The older 6.864 store from Oct 2 (25 MB), which is where BTT would have fallen back to.

Important: all of these files start with btt_data_store.version_6_885_. Deleting everything with that prefix would also have deleted the complete UUID copy and left me with the Oct 2 state, losing several days of work, including newly built Stream Deck buttons.

What I did

Quit BTT and backed up the folder.
Copied the 9D258FFD-… store with its WAL to a scratch location and ran PRAGMA wal_checkpoint(TRUNCATE) plus integrity_check there.
Moved all 15 6_885_ files (empty main store, UUID copies, WALs) into a separate folder instead of deleting them.
Put the checkpointed copy in place under the original main store name (no WAL or SHM from the old files).
Started BTT. All presets and triggers were back. Only the one button I was editing during the crash was missing.

What I could not determine

Why BTT started from the empty main store instead of the full copy. I suspect the crashes that afternoon (a SIGSEGV and a SIGABRT in DiagnosticReports) left BTT working in a UUID copy, and the next relaunch opened the empty base file. The log from the afternoon contains no store lines, so I can't confirm that.
Whether the vanishing Stream Deck buttons and the crash are related. They happened during the same editing session.

Perhaps worth checking on your side: when BTT relaunches after a crash, does it validate that the store it picks actually contains triggers before marking it as BTTLastSuccessfullyOpenedDataStore? An empty store was recorded as "successfully opened" here, which hid the complete UUID copy.

I can send the crash reports and logs if useful."

great, glad you got your triggers back! The crashlogs would be great (andreas@folivora.ai)