If you still have access to the base and the problem happened recently, start with Airtable's own tools; see how to recover deleted records. This guide is for the other case: the base is gone or out of reach, and what you have is an export or backup outside Airtable.
Rebuilding from files is slower than restoring a snapshot, and some things have to be recreated by hand. It goes much better if the backup has record IDs, field types and the attachment files themselves.
What you need
- Records for every table. CSV works; JSON with record IDs is better.
- Record IDs and links as IDs. Without them, linked records can only be matched by the text in the primary field, which fails when two records share a name.
- The field setup: field types, select options, formulas. A
schema.jsonor your own notes. - The attachment files, saved by record. Links in a CSV export will have expired.
Keep the original backup unchanged and work on a copy.
Step 1: create a new base and import each table
Create an empty base. For each table, choose Add or import, then CSV file.
- Turn off automatic field type detection, so values arrive as text exactly as saved.
- Make the column holding the original record ID the primary field for now. You'll use it to reconnect links and attachments.
- If a table was exported in several parts, import the first part as a new table and append the rest to the same table, excluding each part's header row.
Check each table's record count against the backup before moving on.
Step 2: reconnect linked records
Once every table is imported, convert each linked-record column to a "Link to another record" field pointing at the table it linked to. If the column contains original record IDs and that table's primary field holds the same IDs, Airtable matches every link exactly.
Airtable creates the reverse link field in the other table automatically. Convert only one side of each relationship, then check both sides.
Step 3: restore field types
Change each field back to its original type: numbers, dates, checkboxes, single and multiple selects (recreate the options first), and so on. Then rebuild computed fields: formulas, lookups, rollups and counts. Compare their results with the values in the backup, which saved what each computed field showed at the time.
When all links resolve, switch each table's primary field back to the original one. Keep the record ID column until you've finished checking.
Step 4: put the attachments back
Upload each saved file into its record's attachment field. Use the record ID to find the right record, and keep files with the same name attached to their own records. This is the slowest step for bases with many files; a script using the Airtable API can attach them for you.
Step 5: check, then recreate what backups can't hold
Compare record counts, links, empty values, checkboxes, dates, computed results and a sample of attachments with the backup. Then recreate what no API-based backup contains: views and their filters, interfaces, automations, permissions and sharing. Records get new IDs and creation times in the new base, so update anything outside Airtable that referred to the old ones.
Restoring a KeepMyBase archive
KeepMyBase archives are built for this process. Each copy has records.json with original record IDs and links as IDs, records.csv, schema.json with every field's type and options, the attachment files in the backup's files folder, and a manifest with checksums.
The free recovery preparation tool runs on your computer with Node.js. It checks every file against the manifest, then writes import-ready CSVs with the original record ID as the first column, recovery.json describing each table's fields and links, attachment maps listing which file belongs to which record and field, and step-by-step instructions. It needs no account or network connection.
We've tested the full process by restoring a 305-record base with linked tables, computed fields and attachments into a new base and comparing every value and file. The archive guide has the detailed steps.
If the backup only has CSV files
You can still rebuild the records. Import each CSV, then convert linked-record columns to links; Airtable matches them by the linked table's primary field text, so check for duplicates first. Attachment links in old CSV exports have expired, so the files can't be recovered from the CSV. That's the main reason to keep a backup that saves the files themselves; see how to back up Airtable.