How to export your data from Supabase

Supabase has no single 'export all my data' button. On any plan you export your Postgres database (schema, data, roles, RLS policies, functions, triggers, and auth.users) as plain SQL files using the Supabase CLI's `db dump` command; Pro/Team/Enterprise plans additionally get automatic daily backups and Point-in-Time Recovery that can be restored from the Dashboard. Storage objects, Edge Functions, and auth/API configuration are not part of the SQL dump and must be migrated separately.

Formats: SQLPlan: Any plan can export via CLI `db dump` (including Free); automatic daily Dashboard backups require Pro, Team, or Enterprise; Point-in-Time Recovery is a paid add-on on Pro/Team/Enterprise with at least a Small compute add-onRole: Access to the project's database connection string/password (and Dashboard access to view backups on paid plans)

✓ Verified against Supabase's official documentation, October 2026

Step by step

  1. 1Install the Supabase CLI (or use `npx supabase`) and Docker Desktop, which the CLI needs to run pg_dump in a container
  2. 2In the Dashboard, open your project and click Connect to copy the database connection string (session pooler or direct connection)
  3. 3Export roles: run `supabase db dump --db-url "[CONNECTION_STRING]" -f roles.sql --role-only`
  4. 4Export schema: run `supabase db dump --db-url "[CONNECTION_STRING]" -f schema.sql`
  5. 5Export data: run `supabase db dump --db-url "[CONNECTION_STRING]" -f data.sql --use-copy --data-only`
  6. 6(Paid plans only) To grab a specific point-in-time snapshot instead, go to Database > Backups in the Dashboard and restore/download from the Scheduled or PITR backups list
  7. 7Separately export Storage bucket objects and redeploy Edge Functions if you use them, since neither is included in the database dump
  8. 8Keep roles.sql, schema.sql, and data.sql together off-site; these three SQL files are your portable export

What the export includes

  • ✓Database schema (tables, views, indexes)
  • ✓All table data
  • ✓Database roles
  • ✓Row Level Security (RLS) policies
  • ✓Database functions and triggers
  • ✓The auth.users table (user accounts)

What it doesn't include

  • ✗Storage API objects/files (only metadata about them exists in the database)
  • ✗JWT secrets and API keys
  • ✗Auth provider/OAuth settings (Google, Apple, GitHub, etc.)
  • ✗Edge Functions code
  • ✗SMTP/email configuration
  • ✗Custom domain and DNS settings
  • ✗Passwords for custom database roles (stripped from backups for security)

Before you start

  • ⚠Free tier projects get no automatic backups; Supabase explicitly recommends regularly running the CLI `db dump` command yourself and keeping off-site copies
  • ⚠Daily backup retention is 7 days on Pro, 14 days on Team, and 30 days on Enterprise
  • ⚠Enabling Point-in-Time Recovery stops daily backups (you only get one or the other)
  • ⚠Deleting a project permanently removes all associated data, including any backups stored in S3 - this is irreversible
  • ⚠Using raw pg_dump instead of `supabase db dump` will include Supabase-internal schemas and cause permission errors on restore; the CLI applies Supabase-specific filtering
  • ⚠Managed Supabase may run a newer Postgres version (e.g. 17) than self-hosted Docker images default to (currently 15), which can cause version-mismatch issues on restore
  • ⚠Custom role passwords must be reset manually after restoring from a dump/backup, since they are never stored in the export

Where to take your data

Free and cheaper tools that can take a Supabase export. See all Supabase alternatives →

Supabase Free

Create a new self-hosted or free-tier Supabase project, then restore with `psql --single-transaction --variable ON_ERROR_STOP=1 --file roles.sql --file schema.sql --command 'SET session_replication_role = replica' --file data.sql --dbname "[NEW_CONNECTION_STRING]"`

Neon

Since Neon is standard Postgres, point `psql` at your Neon connection string and load roles.sql, schema.sql, and data.sql the same way as a self-hosted restore

PlanetScale's core product is MySQL-compatible (Vitess), so a Supabase Postgres SQL dump is not directly compatible; you would need to convert schema/data to MySQL syntax or use PlanetScale's separate Postgres offering if applicable

Exporting from Supabase: common questions

Does Supabase have a one-click button to export all my data?+

No. Supabase exports data through the CLI command `supabase db dump`, which produces separate SQL files for roles, schema, and data.

Can I export my data on the Free plan?+

Yes. The CLI `db dump` command works on any plan. Automatic daily backups and Point-in-Time Recovery in the Dashboard require a paid plan (Pro, Team, or Enterprise).

Are my Storage files (images, uploads) included in the export?+

No. Database backups/dumps only include metadata about Storage objects, not the files themselves - you need to copy Storage objects separately.

What happens to my backups if I delete my Supabase project?+

They're permanently deleted along with the project, including backups stored in S3. This cannot be undone, so export your data first.

Can I move my exported Supabase data to another Postgres provider like Neon?+

Yes. Since the export is plain SQL compatible across Postgres versions, you can restore roles.sql, schema.sql, and data.sql into any Postgres database using psql.

Do I need Docker to export my Supabase data?+

Yes, if using the CLI. The Supabase CLI runs pg_dump inside a Docker container based on the Supabase Postgres image, so Docker Desktop must be installed.

Sources

This guide was written from Supabase's own documentation and checked against it in October 2026. If a step has changed, the official page wins.