
Restore testing for Postgres backups
A backup you've never restored is a hope.
Firedrill restores every backup on real infrastructure, verifies the data, and sends you the proof.
The auditor question
SOC 2 asks two things about backups: are they off-site, and are they tested?
Firedrill answers both — automatically. Off-site encrypted storage, and a restore drill on real infrastructure with per-check evidence for every backup.
Preparing for SOC 2? See how Firedrill fits your audit →


How a drill works
When did you last run a fire drill on your database? Firedrill runs one on every backup.
Backup
pg_dump streams from your database through a read-only role. We can't write to your data — ever.
Encrypt & store off-site
AES-256-GCM with a per-project key, before a single byte leaves the pipeline. Stored on independent infrastructure.
Restore to a real instance
Every backup is restored onto a fresh, ephemeral Postgres — same major version as yours. Not a checksum. An actual restore.
7 integrity checks
Restore exit, schema hash, table presence, row counts, index integrity (amcheck), sample queries, recovery time.
Drill report
Per-check evidence, appended to an immutable record. Forward it to your auditor unedited.
This is a drill report.
Every backup gets one. Evidence, not vibes.
| restore_exit | pg_restore completed cleanly | ✔ |
| schema_hash | sha256 matches source exactly | ✔ |
| table_presence | 142 / 142 tables present | ✔ |
| row_counts | 142 tables within tolerance | ✔ |
| amcheck | 38 btree indexes valid | ✔ |
| sample_queries | 10 / 10 tables readable | ✔ |
| duration | recovery time 94.2s — measured, not guessed | ⏱ |
This restore was performed on real infrastructure by Firedrill on 2026-07-04. Verification ID 3f9c2e1a.

Recovery time
Know your real recovery time before you need it.
Every drill measures how long the restore actually took — on real hardware, with your real data. Measured, not guessed, and trended as your database grows.
last drill: passed · recovery time 4m 12s
We drill ourselves
Firedrill runs on Firedrill.
A canary database we own goes through the exact pipeline your data does — backed up, encrypted, and restore-drilled every six hours, forever. And because nothing inside a system can report that system's own death, an independent monitor outside our infrastructure watches every stage and pages us on silence.
In its first hour of life, the canary caught a real gap — a brand-new Postgres major version our tooling didn't cover yet — and the alert was in our inbox within minutes. Fixed before a single customer could hit it. That's the product, working on us first.
canary: drill passed · every 6h · external dead-man watch
Point us at any pg_dump file.
Get a drill report in minutes. No signup for your database required — it works on backups made by Supabase, SimpleBackups, or your own cron job.
Run a free drill →one free drill per month · report in minutes · your data never stored