Guide · Restore
Restore Airtable from a CSV backup, links included
Getting data back into Airtable is easy for one table and fiddly for a base full of links. Here's the order that works, for a few records, a whole table or an entire base, and the things a CSV can't bring back, so you know before you start.
Last updated October 15, 2026
First: check whether Airtable still has it
A CSV restore creates new records. Airtable's own tools put back the originals, with their IDs, links and comments, so try them first:
- Deleted in the last 7 days: open the base, click the base history icon next to Share, then Trash, and restore. Records, fields, tables and views all wait there for 7 days.
- A whole base deleted: the workspace trash keeps bases for 30 days (longer on Enterprise Scale). Only workspace owners can restore them.
- Everything as it was on a date: restore a snapshot. It becomes a new base you copy from.
If none of those cover it, because the trash has emptied, the snapshot expired or you only want some rows back in your live base, restore from a CSV as below.
Before you import: shape the CSV
- One column per field, named like the field. Airtable maps matching column names for you.
- Linked records as names, not IDs. Each linked-record cell should hold the linked record's primary field value, with several values separated by commas and any value containing a comma wrapped in double quotes. A record ID like
recXXXXXXXXXXXXXXwon't match anything. - Leave out computed fields. Formulas, rollups, lookups, counts, autonumbers and created or modified times can't be written to; Airtable recalculates them.
- Attachments as files, not links. Attachment URLs in an exported CSV stop working after a few hours. You need the files themselves to upload again.
A few records back into a table
- Put just the missing rows in a CSV.
- Open the table, click the arrow next to its name and choose Import data, then the CSV file.
- Check the column-to-field mapping. Skip columns you don't need, such as an old record ID.
- Import, then open a few restored records and check that their links point where they should.
Links in Airtable are two-way: a link set on a restored row also appears in the matching field of the record it points to. So restoring the deleted rows' own link columns puts back both sides; you don't need a second file for the other table.
On a paid plan the CSV import extension can instead merge rows into existing records, matched on a field with unique values. Use that when records were edited rather than deleted. Turn on Skip blank or invalid CSV values so empty cells don't wipe good data.
A whole table
- Click + Add or import, choose CSV, and import the file as a new table. Airtable tries to detect field types; you can turn that off and set them yourself.
- Fix field types: single selects, dates, numbers and checkboxes are the usual ones to check.
- For each linked-record column, change the field type to Link to another record and pick the table it links to. Airtable matches the text against that table's primary field, and creates records for any names it can't find. Check those afterwards, because a typo becomes a new, empty record.
- Recreate the computed fields, then point views, automations and interfaces at the new table.
An entire base
Order matters, because links need both tables to exist:
- Create every table, primary field first, then the plain fields.
- Import each table's rows, with linked-record columns coming in as text.
- Convert the link columns to linked-record fields, once the tables they point at are filled.
- Add formulas, rollups and lookups last, since they depend on the links.
- Rebuild views, interfaces and automations, and re-upload attachments.
Importing takes seconds. Field types, links and automations take the time, so a base with many links between tables is a job to plan for, not a click.
What a CSV can't bring back
- Record IDs. Every restored row is a new record, so scripts, API integrations and bookmarks that stored IDs need updating.
- Table and field IDs, when you rebuild a table or base. Automations, interfaces, sync and API scripts point at IDs, so they need re-pointing.
- History. Revision history and record comments stay behind, and created time becomes the time of the import.
- Autonumbers. Restored records get the next numbers, not their old ones.
- Views and interfaces: filters, sorts, colors and layouts aren't in a CSV.
Limits to know
| Method | Plans | Limit |
|---|---|---|
| Import data / Add or import → CSV | All | 100 MB per CSV |
| CSV import extension (add or merge) | Paid | 25,000 rows and 5 MB per file |
| Records per base | Free / Team / Business | 1,000 / 50,000 / 125,000 |
How Nightclerk shapes its backups for this
Every backup download has, for each table, an airtable-import.csv with computed fields left out and linked records written as names, plus a STRUCTURE.md listing each table's fields in the order to create them. When a backup finds records deleted, the receipt lists them with their values and downloads just those rows as an import-ready CSV, with links named as they were before the deletion. Downloads include the attachment files we kept, even ones Airtable has since deleted. In the deleted-rows CSV, each attachment field also gets a column of download links to those files that work for 7 days without signing in. Import that column as a URL field, then turn the links into attachments with an automation or Airtable's “Convert URLs to attachments” script. The import files keep every value exactly, so send them straight to Airtable rather than opening them in Excel or Google Sheets first, which would run any value that starts with = as a formula; records.csv is the copy made safe for spreadsheets. If you'd rather do it for free, the free export builds the same ZIP once, without an account.
Questions
Do linked records survive a CSV import?
Not as links. A CSV holds text, so a linked-record column needs the linked record's primary field value in each cell. Airtable matches that text to the linked table's primary field exactly (spacing, capitalization and punctuation). Unmatched values become new records, unless the primary field is a formula, in which case they're dropped.
Will restored records keep their record IDs?
No. Imported rows are new records with new IDs. Only Airtable's own trash (7 days) and snapshots keep the original IDs. Anything that stored a record ID, like a script, an automation pointing at one record or a bookmarked URL, needs updating.
How big a CSV can Airtable import?
The built-in import takes CSV files up to 100 MB on every plan. The CSV import extension, which can also merge rows into existing records, is on paid plans and takes up to 25,000 rows and 5 MB per file. Your plan's records-per-base limit still applies: 1,000 on Free, 50,000 on Team, 125,000 on Business.
Should I restore from a CSV or from a snapshot?
Use the trash first if it's been under 7 days: it puts records back with their IDs and links. Use a snapshot when you want a whole base as it was, as a new base. Use a CSV when the trash has emptied, the snapshot is gone or you only need some rows back in your live base.
Sources, checked October 15, 2026: Airtable: importing data into Airtable · Airtable: CSV import extension · Airtable: linking records · Airtable: trash. Nightclerk is not affiliated with Airtable. Compare backup options.