# Backups

> How SupaHost backs up your project databases every day, how long backups are kept on each plan, where they're stored, and why Storage files need their own export.

Source: https://supahost.app/docs/platform/backups · Updated 2026-11-11

Every SupaHost instance backs up its databases automatically, every day, to a private bucket in the instance's region. You don't need to set anything up. This page covers what's in a backup, how long it's kept, and what isn't covered, so you can fill the gaps yourself.

## What gets backed up

SupaHost backs up the whole Postgres server on your instance, which holds every project's database. There are two parts:

1. **Base backups.** A full physical copy of the Postgres server, compressed. A new one is taken 24 hours after the last.
2. **WAL (write-ahead log).** Postgres records every change in WAL files. Each segment is archived at least every 60 seconds and shipped to the backup bucket every 20 seconds. On Pro and Business this is what makes [point-in-time recovery](/docs/platform/point-in-time-recovery) possible.

Because a backup covers the server, the size column on the Backups tab reads **Size (whole instance)**. Restores still work one project at a time, without touching the others; see [Restoring a project](/docs/platform/restore).

A database backup includes everything inside the project's database: your tables and data, functions, triggers, RLS policies, Auth users and their identities, Storage bucket settings and the `storage.objects` rows that describe each file.

## What isn't backed up

**Storage files aren't in the daily backups.** The files themselves live on the instance's disk, outside Postgres. A restore brings back the `storage.objects` rows but not the file contents, and it doesn't roll files back to an earlier state.

To protect your files, download them from the Backups tab with **Package files**. You get a `.tar.gz` with every file plus the bucket settings and object metadata. Do this on a schedule that matches how much you'd lose otherwise. See [Exporting your data](/docs/platform/exports) and [A restore didn't bring back Storage files](/kb/restore-storage-files).

Also outside the database backups:

- Edge Function code and secrets (keep your function source in git).
- Cron jobs, which are stored outside the project database.
- Project settings such as Auth settings, OAuth providers and custom domains.

## Retention

| Plan | Daily backups kept | Point-in-time recovery |
|---|---|---|
| Builder | 7 days | No |
| Pro | 7 days | 7 days |
| Business | 14 days | 14 days |
| Enterprise | Custom | Custom |

Old backups are pruned every 6 hours. The newest base backup that's older than your window is kept, so the very start of the window can still be restored.

## Where backups are stored

Backups go to a private bucket that belongs to your instance, in the same region as the instance. They don't leave the region. See [Regions](/docs/platform/regions).

## The Backups tab

Open **Dashboard → your project → Backups**. You'll see:

- The list of available backups with their time and size (whole instance).
- **Back up now** (owner only), which starts a fresh base backup. You can use it at most once every 10 minutes. Run it before a risky change, such as a large migration, so you have a recent restore point.
- **Restore** on each backup, and **Restore to this point** on plans with point-in-time recovery.
- **Exports**: **Create pg_dump** for the database and **Package files** for Storage.

## A simple backup routine

Automatic backups cover the database. For a production project, add these:

1. **Before risky changes**, click **Back up now** and wait for it to appear in the list.
2. **Weekly or daily**, run **Package files** and keep the archive somewhere outside SupaHost.
3. **Monthly**, run **Create pg_dump** and keep a copy outside SupaHost too. A backup you control is your insurance against anything going wrong with the platform or your account.
4. **Every few months**, test a restore. The easiest test is to load a pg_dump into a local Supabase and check your data:

```bash
supabase start
pg_restore --no-owner --no-privileges --schema=public \
  -d "postgresql://postgres:postgres@127.0.0.1:54322/postgres" \
  app-one-20261111-0930.dump
```

## Related

- [Point-in-time recovery](/docs/platform/point-in-time-recovery)
- [Restoring a project](/docs/platform/restore)
- [Exporting your data](/docs/platform/exports)
- [How long does a restore take?](/kb/how-long-restore-takes)
