Exit code 0 is not a backup. We check the bucket.
Your backup job says it succeeded. BackupWitness looks at S3, R2, B2, Wasabi or Hetzner and checks that a fresh, normal-sized backup actually landed. It only lists the bucket and never reads your backups; use the narrowest key your provider offers.
Metadata-level proof, not restore proof.
Every bucket, one glance.
- litestream - app dbFailingCloudflare R2 / app-db-backups / generations/1 d ago · 1.1 MB
- pg_dump - nightlyErrorBackblaze B2 / db-dumps / nightly/9 h ago · 212.0 MB
- kopia - laptopPendingAWS S3 / kopiaNo backup listed yet
- restic - homelabOKCloudflare R2 / homelab-restic / snapshots/2 h ago · 4.6 MB
- borg - office nasOKWasabi / office-borg5 h ago · 500.0 MB
The failures a green exit code hides.
The backup stopped arriving
The newest object under the prefix is older than you allow, or the prefix is empty.
The backup shrank
The newest object is below a minimum size, or far from the 7-day median (Pro).
Files went missing
Fewer objects under the prefix than you expect.
The storage stopped answering
The key was revoked, the bucket is gone or the endpoint is down.
Three steps, no agent to install.
- 01
Point it at the bucket
Endpoint, bucket, prefix and a narrow key. Presets for restic, Litestream and database dumps.
- 02
It lists, on a schedule
Every few minutes it lists the prefix and checks the newest object: fresh, normal size, enough of them.
- 03
You hear when it breaks
Email on every plan; webhook, Slack, Telegram and ntfy on Pro. Again after 24 h while it stays broken.
Start free. Pay when it matters.
- 3 checks
- every 60 min
- 25 checks
- every 15 min
- email, webhook, slack, telegram, ntfy
- 150 checks
- every 15 min
- email, webhook, slack, telegram, ntfy
Before you hand over a key.
- Can BackupWitness read my backups?
- It never calls anything but ListObjectsV2. On AWS, Wasabi and B2 you can give it a key that can only list. Cloudflare R2 has no list-only key; the narrowest one is read-only for one bucket, and the R2 guide says so plainly.
- How is this different from a heartbeat monitor?
- A heartbeat proves your job ran. BackupWitness checks what landed in storage, so an upload that failed silently, or an empty dump, still raises an alert.
- Does it prove I can restore?
- No. It proves a fresh, plausibly sized backup exists. Test restores separately.