Skip to main content

Backup & Restore

Convex supports Backup & Restore of data via the dashboard.

Backups Page

Backups

A backup is a consistent snapshot of your table data and file storage made at the time of your request.

Take a backup by pressing the "Backup Now" button. This may take a few seconds to a few hours, depending on how much data is in your deployment.

Backups are stored for 7 days. You can download or delete backups via this page.

Deployment configuration and other data (code, environment variables, scheduled functions, etc.) will not be included.

Periodic Backups

Schedule a periodic daily backup by checking the "Backup automatically" box. You can select what time of day to have the backup occur.

Periodic backups require a Convex Pro plan.

Periodic backups require a Convex Pro plan. Learn more about our plans or upgrade.

Restoring from backup

Restore from a backup by selecting restore from the submenu of an individual. You can restore from backups in the same deployment or from other deployments on the same team by using the deployment selector on the backups page. Restores may take a few seconds to a few hours depending on how much data is in your backup.

Note that restoring is a destructive operation that wipes your existing data and replaces it with that from the backup. It's recommended that you generate an additional backup before doing a restore.

Downloading a backup

You can download your manual and periodic backups from the dashboard via the download button in the menu.

Alternatively, you can generate an export in the same format with the command line:

npx convex export --path ~/Downloads

The backup comes as a generated a ZIP file with all documents in all Convex tables in your deployment.

The ZIP file's name has the format snapshot_{ts}.zip where ts is a UNIX timestamp of the snapshot in nanoseconds. The export ZIP file contains documents for each table at <table_name>/documents.jsonl, with one document per line.

Exported ZIP files also contain data from file storage in a _storage folder, with metadata like IDs and checksums in _storage/documents.jsonl and each file as _storage/<id>.

Using the downloaded backup.

Downloaded ZIP files can be imported into the same deployment or a different deployment with the CLI.

FAQ

Are there any limitations?

Each backup is accessible for up to 7 days.

On the Starter plan, up to two backups can stored per deployment at a time. Paid plan deployments can have many backups with standard usage based pricing.

How are they priced?

Backups uses database bandwidth to read all documents, and file bandwidth to include user files. The generation and storage of the backup itself is billed with the same bandwidth and storage pricing as user file storage. You can observe this bandwidth and storage cost in the usage dashboard. Check the limits docs for pricing details.

What does the backup not contain?

The backup only contains the documents for your tables and files in file storage. In particular it lacks:

  1. Your deployment's code and configuration. Convex functions, crons.ts, auth.config.js, schema.ts, etc. are configured in your source code.
  2. Pending scheduled functions. You can access pending scheduled functions in the _scheduled_functions system table.
  3. Environment variables. Environment variables can be copied from Settings in the Convex dashboard.