llms.txt
# BackupDrill
> BackupDrill is a Supabase disaster-recovery service: it backs up the Postgres database — plus Storage files once the project's Storage S3 keys are added — into the customer's own S3/R2/B2/Wasabi bucket, then runs restore drills (weekly on paid plans, once on Free) that prove the backup actually restores. Plans: Free $0, Solo $19/month, Team $49/month, Agency $99/month — versus Supabase's official PITR add-on at $100/month per project, which covers the database only.
Key facts:
- The Free plan needs no credit card and has no time limit: 1 project, weekly backups, and one restore drill on the first backup. The first month of a first monthly subscription is $1, then full price; it does not apply to a resubscribe or to annual billing.
- A Supabase database restore only brings back storage.objects metadata; the actual Storage files live in a separate object store and need their own backup.
- Backups are written to the customer's own bucket — BackupDrill never stores backup data.
- Restore drills restore the latest snapshot into a throwaway Postgres and verify it against a checksummed manifest.
- The backup engine is an open-source (MIT) CLI.
## Pricing
- [Pricing](https://backupdrill.com/pricing): the four plans, the $1 first month, annual billing, size and project limits, cancellation, and the 14-day refund
## Docs
- [Docs index](https://backupdrill.com/docs): overview of hosted setup, CLI, restore, and bucket setup
- [Quickstart](https://backupdrill.com/docs/quickstart): set up hosted Supabase backups in six steps
- [CLI](https://backupdrill.com/docs/cli): the open-source backupdrill CLI — commands, config, GitHub Actions scheduling, egress costs
- [Restore & recovery](https://backupdrill.com/docs/restore): four ways to get the database and Storage files back from your bucket — the console recovery wizard (read-only preflight on every plan, one-click execution on paid plans, database-only in its first release), the CLI, your own artifacts, or raw pg_restore
- [Bucket setup](https://backupdrill.com/docs/buckets): create a bucket and S3 credentials on Cloudflare R2, AWS S3, Backblaze B2, or Wasabi
## Evidence
- [A real restore drill report](https://backupdrill.com/drill-report): the full terminal output of an actual drill (13 tables, 1,495,250 rows, 250 Storage files checksummed), what each check proves and does not prove, and a script that reproduces the run
## Guides
- [How to back up a Supabase project](https://backupdrill.com/guides/supabase-backup): every option compared — built-in Pro backups, PITR, DIY pg_dump, BackupDrill
- [The best Supabase backup tools in 2026](https://backupdrill.com/guides/best-supabase-backup-tools): six tools compared on coverage, restore verification, and price — official backups and PITR, Databasus, SimpleBackups, supabackup, DIY GitHub Actions, BackupDrill
- [How to test that your Supabase backup actually restores](https://backupdrill.com/guides/test-supabase-backup-restore): the manual restore drill with working commands, the open-source CLI, and scheduled hosted drills
- [Automatic Supabase backups with GitHub Actions](https://backupdrill.com/guides/supabase-backup-github-actions): the Free plan has no automated backups — a complete scheduled workflow with secrets setup, the 5 GB/month egress reality, and restore verification
- [How to monitor Supabase backups and restore drills with Prometheus](https://backupdrill.com/guides/supabase-backup-prometheus): the open-source backupdrill CLI (2.6.0 and newer) has an exporter command that reads the backup bucket on every scrape and serves metrics on 127.0.0.1:10059 (last complete backup time, dump and Storage sizes, last drill result and restore time); drill --record leaves the drill outcome in the bucket; a scrape config, five alert rules, and what each scrape costs in bucket requests
- [Does the Supabase free plan include backups?](https://backupdrill.com/guides/supabase-free-plan-backups): no — what Free actually gives you, the one-week pause clock and 1-year restore window, and three ways to back up a free project
- [Supabase project paused: why it happens and how to unpause it](https://backupdrill.com/guides/supabase-project-paused): the 7-day inactivity rule, the Resume steps, why the 90-day deadline is now 1 year, and how to migrate the data out once that window closes
- [How to download a Supabase backup as a .sql file](https://backupdrill.com/guides/download-supabase-backup-sql): physical-backup projects cannot download Supabase's own backups — the pg_dump command that produces a restorable .sql, the supabase db dump no-data trap, and scheduling
- [How to export a Supabase database](https://backupdrill.com/guides/export-supabase-database): schema-only vs data-only vs a full archive, the three-command CLI sequence, pg_dump flags, cloning to a new project, and why Storage files are never in an export
- [How to restore a Supabase backup and roll back bad changes](https://backupdrill.com/guides/restore-supabase-backup): dashboard restore, PITR, pg_restore into a fresh project (never --clean), and single-table rollback from a custom-format dump
- [How to back up a Supabase project built with Lovable](https://backupdrill.com/guides/lovable-supabase-backup): Lovable Cloud offers export paths but not the underlying Supabase project; a connected Supabase project is a normal project you back up yourself
- [How to back up and restore a Supabase database with pgAdmin 4](https://backupdrill.com/guides/pgadmin-supabase-backup): direct connection vs Session pooler, the pg_dump version pgAdmin picks from Binary paths, backing up the public schema in Custom format, restoring with Do not save: Owner, the exact pg_dump and pg_restore commands pgAdmin 9.18 builds, which restore errors are harmless, and why REVOKEs from anon do not survive a restore into a new project
- [How to back up self-hosted Supabase (Postgres and Storage) and test the restore](https://backupdrill.com/guides/self-hosted-supabase-backup): for the official Docker Compose stack; pg_dumpall --globals-only plus pg_dump --create per database as supabase_admin (a plain pg_dumpall restore loses the postgres database owner, grants and settings), the pgsodium_root.key in the db-config volume that Vault needs, tar --xattrs for volumes/storage because Storage keeps content types in extended attributes, .env, rclone crypt to an S3-compatible bucket, and a restore drill into a supabase/postgres container with its init scripts switched off. BackupDrill itself does not support self-hosted Supabase
- [How to monitor Supabase backups with Healthchecks.io](https://backupdrill.com/guides/supabase-backup-healthchecks): the open-source backupdrill CLI (2.5.0 and newer) pings a Healthchecks.io check at the start and end of every backup and restore drill (BACKUPDRILL_PING_URL, --ping-url or pingUrl); Grace Time must exceed the slowest run because of the start ping; failure messages go into the alert email with connection details removed; a ping that fails never fails the backup
- [Supabase restores don't bring back Storage files](https://backupdrill.com/guides/supabase-storage-backup): why, and how to back the files up
- [Supabase point-in-time recovery (PITR), explained](https://backupdrill.com/guides/supabase-point-in-time-recovery): WAL archiving every 2 minutes, the $100/$200/$400 retention tiers, the Small-compute requirement that makes the real bill ~$130/month, what PITR replaces, and how to remove it
- [A disaster recovery runbook for Supabase](https://backupdrill.com/guides/supabase-disaster-recovery): RPO/RTO in Supabase terms, a failure-scenario-to-recovery-path matrix, a triage runbook, and a 15-point checklist
- [GDPR and Supabase backups: EU regions, DPA, data residency](https://backupdrill.com/guides/supabase-gdpr-backup): the four EU regions vs London and Zurich, where the Supabase DPA and sub-processor list live, and where each backup option (Supabase, SimpleBackups, ReviveDB, BackProve, Databasus, BackupDrill hosted vs CLI) rests, processes, and holds keys
- [Back up Supabase to Cloudflare R2](https://backupdrill.com/guides/supabase-backup-to-cloudflare-r2): bucket and S3 credentials, endpoint and path-style details, CLI config, GitHub Actions schedule — and why zero egress fees matter for restores
- [Back up Supabase to AWS S3](https://backupdrill.com/guides/supabase-backup-to-aws-s3): bucket and least-privilege IAM with the exact policy, CLI config with region instead of endpoint, GitHub Actions schedule, and lifecycle rules for old snapshots
- [Back up Supabase to Backblaze B2](https://backupdrill.com/guides/supabase-backup-to-backblaze-b2): the cheapest storage of the three destinations — bucket and application key setup, the keyID to Access Key ID mapping, CLI config, and lifecycle housekeeping
- [Back up Supabase to Google Drive](https://backupdrill.com/guides/supabase-backup-to-google-drive): BackupDrill's hosted service backs up the database to your Google Drive (connect your Google account, no keys; Storage files need a bucket), or DIY with pg_dump + rclone + GitHub Actions — and when a bucket is the better home
## PostgreSQL guides (any host)
- [PostgreSQL backup: which method you need and how to test it](https://backupdrill.com/guides/postgresql-backup): pg_dump vs pg_dumpall vs pg_basebackup (including PostgreSQL 17 incremental backups) vs WAL archiving and point-in-time recovery, with tested commands; what Supabase, Neon, RDS, Render, Heroku, DigitalOcean, and Railway back up themselves and whether you can download it; how to test restores
- [The best Postgres backup tools in 2026](https://backupdrill.com/guides/best-postgresql-backup-tools): pgBackRest, Barman, WAL-G, pgBackWeb, Databasus, SimpleBackups, BackupDrill, and pg_dump with cron compared on backup type, PITR, managed-host support, and restore testing (only Databasus and BackupDrill restore into a real database)
- [pg_dump to S3: a scheduled PostgreSQL backup you can restore](https://backupdrill.com/guides/pg-dump-to-s3): a tested script that dumps, reads the whole archive back with pg_restore (--list alone misses a truncated file), and uploads to S3/R2/B2 with a checksum; why piping pg_dump into aws s3 cp can leave a truncated backup; systemd, cron, and GitHub Actions schedules; age encryption; lifecycle retention; a restore-check script
- [pg_restore: restore a PostgreSQL dump and check it worked](https://backupdrill.com/guides/pg-restore): the command and flags, pg_restore vs psql for plain SQL dumps, partial restores, --jobs, the common errors (role does not exist, already exists, unsupported version in file header, transaction_timeout on PostgreSQL 16 and older, permission denied for schema public) with fixes, and how to verify a restore
- [pg_dumpall: back up every Postgres database, with examples and restore steps](https://backupdrill.com/guides/pg-dumpall): examples and options (globals only, roles only, exclude database, --clean --if-exists, gzip), plain SQL only, .pgpass for multi-database runs, pg_dumpall vs pg_dump, restoring with psql (the expected "role postgres already exists" error, why ON_ERROR_STOP backfires, \restrict and older psql), restoring one database from the file, permission denied for table pg_authid on AWS RDS and --no-role-passwords, Windows
## Statistics
- [Vibe coding statistics (2026)](https://backupdrill.com/research/vibe-coding-statistics): AI coding agents that deleted production databases, vibe-coded apps that leaked data, security research, and adoption numbers, each linked to its original source
- [Backup and restore failure statistics (2026)](https://backupdrill.com/research/backup-restore-failure-statistics): how often restores fail, how rarely teams test them, downtime costs, real incidents, and popular backup statistics that have no traceable source
- [Supabase statistics (2026)](https://backupdrill.com/research/supabase-statistics): Supabase funding, developers, databases, GitHub and npm numbers, survey adoption, plan limits and backup retention, each with its source
## Compare
- [Supabase PITR vs BackupDrill](https://backupdrill.com/compare/supabase-pitr): cost and coverage — PITR wins outright on recovery granularity
- [SimpleBackups vs BackupDrill](https://backupdrill.com/compare/simplebackups): breadth versus verified restorability
- [Databasus vs BackupDrill](https://backupdrill.com/compare/databasus): both restore-test backups — free self-hosted versus hosted with Storage files in the drill
## Open source
- [backupdrill CLI on GitHub](https://github.com/backupdrill/cli): the MIT backup engine the hosted service runs
- [backupdrill on npm](https://www.npmjs.com/package/backupdrill): install with npm install -g backupdrill
## Optional
- [Full site facts for LLMs](https://backupdrill.com/llms-full.txt): condensed product definition, pricing, drill checks, egress costs, FAQ
- [Terms of Service](https://backupdrill.com/terms)
- [Privacy Policy](https://backupdrill.com/privacy)