Skip to content
ReviveDB

Supabase backup options: what each one covers and misses

Supabase includes daily database backups on paid plans and point-in-time recovery as an add-on. The free plan has neither. No database backup contains your Storage files or Edge Functions, so a complete backup needs a separate copy of those. Below is every option, what it covers and what it leaves out.

What Supabase includes per plan

Supabase makes the daily backups itself and keeps them with the project. They are database backups: Storage metadata is included, the files themselves are not.

PlanDaily backupsPoint-in-time recovery
FreeNoneNot available
ProKept 7 daysAdd-on, $100 to $400 a month
TeamKept 14 daysAdd-on, $100 to $400 a month
EnterpriseKept up to 30 daysAdd-on, $100 to $400 a month

From the Supabase backup and PITR documentation. PITR also needs at least a Small compute add-on. database backup documentation

Downloading a backup from the dashboard

Daily backups are listed in the dashboard under Database, then Backups. Newer projects use physical backups, and Supabase documents that those restore inside the platform but cannot be downloaded as a file.

For a copy you can keep somewhere else, you need a logical export: pg_dump or the Supabase CLI.

How to download a Supabase database backup

Point-in-time recovery

PITR restores the database to any second within its retention window, with a worst-case recovery point of about two minutes. It costs about $100 a month for 7 days, $200 for 14 days and $400 for 28 days, on top of the plan and compute. Like the daily backups, it covers the database only and restores into the same project.

Supabase PITR pricing, explained

Back up yourself with the Supabase CLI

This is the free route, and the one Supabase recommends for projects on the free plan. Export roles, schema and data as three files, with the session pooler connection string in an environment variable:

supabase db dump --db-url "$SUPABASE_DB_URL" -f roles.sql --role-only
supabase db dump --db-url "$SUPABASE_DB_URL" -f schema.sql
supabase db dump --db-url "$SUPABASE_DB_URL" -f data.sql --use-copy --data-only

Run it on a schedule, store the files outside Supabase and alert when a run is missing. The export covers the database and Auth. It does not contain Storage files.

What no database backup contains

Storage files

The database keeps a row for each file, not the file itself. After a database-only restore, the Storage UI lists every file while every download fails. Copy the bytes separately through the S3-compatible endpoint.

Do Supabase backups include Storage files?
Edge Functions

Function code lives outside Postgres. If you deploy from git with CI, your repository is the backup. If you deploy from the dashboard or a tool such as Lovable, the deployed version is the only copy.

How to back up Supabase Edge Functions
Settings and secrets

Bucket settings, Auth configuration and API keys live in the platform, not the database. Secret values cannot be exported at all, so keep them in your own secret store.

Every option side by side

ComponentSupabase backups / PITRYour own backup jobReviveDB
PostgreSQL databaseIncludedUsually includedRestored and compared
Auth users and identitiesIncludedDepends on dump scopeProvider-specific restore
Storage object bytesNot in database backupsSeparate job or add-onIncluded and hash-verified
Edge Function bundlesSeparate from database backupSeparate job or add-onBundles captured and verified
Project configurationSeparate recovery workUsually exported separatelyBucket and Function settings
Restore-tested automaticallyNot reportedDepends on setupRestored and compared
Copy survives project deletionDoes not survive project deletionDepends on setupIncluded
Secret valuesManualDepends on setupChecklist generated; values never copied

Supabase documents that its database backups exclude Storage object bytes and that restoring to a new project requires separate work for several platform components. See the official database backup documentation and new-project restore documentation.

Test the restore, not the backup

A backup job that finishes without errors proves a file was written. It does not prove the file restores. Check it regularly, or after every backup if you can automate it:

  1. Restore into an empty, isolated database, with errors treated as fatal.
  2. Compare tables, row counts and Auth users with the source.
  3. Download a few Storage files through the restored project.
  4. Time it, so you know how long a real recovery takes.
How to test the database layer of a Supabase backup

Which option fits your project

A side project on the free plan
Run the CLI export weekly and copy Storage with aws s3 sync. It costs nothing except the time to keep it running.
A paid plan, with only database data
The daily backups cover it. Add PITR when losing up to a day of writes is not acceptable.
Users upload files
Add a separate copy of Storage, whichever tool makes it. Neither the daily backups nor PITR include files.
Project deletion is a risk you plan for
Supabase removes a project's backups when the project is deleted. Keep a copy outside Supabase that includes Storage and Edge Functions, and test that it restores.

How ReviveDB covers the whole project

ReviveDB runs these steps for you. Each run makes one recovery point with the database and Auth, Storage files and Edge Functions, stored in the EU. It is free for one project.

  1. 1

    Back up each project component

    Database, Storage files, Edge Functions in one pass.

  2. 2

    Check the database, Storage files and Edge Function bundles

    Restore and compare the database; hash-check files and function bundles.

  3. 3

    Recover in the right order

    Safety backup first, then database and Auth, Storage and Edge Functions.

See how verification works

Authorize the project with Supabase OAuth

OAuth creates and removes a temporary Postgres login for each backup. Supabase labels that action Database write; the backup login itself is read-only. Your production password is not used.

Read the implementation notes
Created per run
A random password expires after one hour. Cleanup removes the role after every run.
Complete read access
The backup role reads every table, including Auth and RLS-protected rows. It cannot write, create roles, replicate or act as superuser.
Verified before setup
Onboarding checks table access and a schema-only dump before accepting the project.

Supabase backup guides

Supabase backup questions

Paid Supabase plans include database backups and optional PITR. Storage file bytes, Edge Functions, settings and secrets have separate recovery paths.

No. Free projects get no automatic backups. Supabase documents that free projects should export their data themselves with the CLI db dump command.

Daily backups are kept 7 days on Pro, 14 days on Team and up to 30 days on Enterprise. PITR keeps 7, 14 or 28 days, depending on the add-on.

In the dashboard under Database, then Backups. Newer projects use physical backups, which restore inside Supabase but cannot be downloaded as a file. For a portable copy, export one yourself with the CLI.

PITR gives fine-grained database rollback on the same project. Scheduled, multi-component recovery points live outside Supabase instead. Many teams use both.

No. Storage files, bucket settings and Edge Functions are included in the same recovery point and restored from the dashboard.

No. Secret names are recorded, and what must be configured during recovery is listed, but their values are never copied.

Yes. Restore database and Auth data, Storage files and buckets, and Edge Functions from the dashboard. Add any missing secrets and reconnect external services before using the new project. Existing project settings are kept.

OAuth creates and removes a temporary login for each backup. Supabase labels this management action Database write; the backup login itself is read-only. Your production password is not used.

Not if every function is deployed from your repository by CI. Functions created in the dashboard or by tools such as Lovable often have no other copy, and a manual deploy can differ from what is committed. Each recovery point keeps the deployed Edge Function bundles next to the database from the same moment, with their JWT setting and the names of the secrets they use. A restore deploys them into the new project. Secret values are never copied and have to be set again.

Yes, on every plan. Download the database dump in pg_dump custom format. Restore the database, Storage files and Edge Functions together from the dashboard. Recovery and Storage manifests are also available to download.

Start with a checked backup of one project

One Supabase project, up to 1 GB, no card required.