Skip to content
Open beta — everything’s free right now, and your rate is locked when it ends.

How to export an Airtable base — and what doesn't come with it

Airtable exports one grid view at a time, as CSV. How to get that into Google Sheets, Excel, JSON or another database, and what doesn't survive.

Updated September 2026

Two separate questions get asked as one. How do I get a copy of my data has a straightforward answer. How do I get a copy I could rebuild from has a longer one.

The short version

Airtable exports per view, as CSV. The command is easy to miss, because it isn't where most people look for it:

  1. Open the view you want.
  2. Click the view's name in the toolbar — the dropdown at the top left, next to the view icon.
  3. Choose Download CSV.

Not the right-click menu on the view in the left sidebar: that one offers rename, duplicate and delete, and no export at all.

Because the command belongs to a view, you get that view — its columns, in its order. Repeat per table. A base with nine tables is nine downloads.

The four things that don't come with it

This is the part worth knowing before you rely on a CSV as a backup.

1 · Attachments aren't in the file — and the links go dead in about two hours. A CSV cell holds a URL pointing at the file, not the file. Since November 2022 those URLs expire: Airtable's own documentation says a URL obtained through the API is "only be active for a short period of time (~2 hours)", with a guarantee that it stays live for at least two hours after you receive it.

So a CSV export is not a backup of your attachments in any meaningful sense. It is a list of links that will be broken by this afternoon. If the files matter, fetch the bytes immediately — a script that walks the export and downloads each URL, run in the same session as the export itself. Airtable is explicit that using them as a CDN is discouraged, which is the same point from the other direction.

2 · Links between tables become text. A linked record cell exports as the display value of the record it pointed at — usually a name. So "Layla Hassan" survives; the fact that it was a pointer to a row in another table does not. Rebuilding elsewhere means matching those strings back into real links, which works exactly as well as your display values are unique. Two clients with the same name is where this goes wrong.

3 · Field types are gone. CSV has no notion of "this column is a currency, that one is a single select with these six options and these six colours". You get text. Whatever you import into has to guess the types again.

4 · Views, filters, groupings and formulas don't come. You're exporting the output of a formula field, not the formula. The structure of the base — what made it useful — isn't in there.

Where you're taking it

Airtable downloads one thing: a CSV of a grid view. Every destination starts there, and which of the four losses hurts depends on where the file lands.

A Google Sheet. Two steps — download the CSV, then import it into a sheet. This is the destination the flattening costs least, because a sheet wanted text and numbers anyway, and a linked record reading as a name is what you'd have typed there yourself. Two things to watch. A code like 00412 is text in Airtable and bare digits in a CSV, so a spreadsheet left to guess hands you 412; set those columns to text as the file comes in, not after. And an attachment column arrives as links rather than files — the expiring ones from point 1.

Excel. Airtable's own documentation says it doesn't export .xlsx directly, and gives the same two-step: download the CSV, open it in Excel, save it as .xlsx. The coercion problem is sharper here, because dates get read against the machine's locale — a day-first computer opening a month-first column turns the 4th of March into the 3rd of April without complaint. Import with the column types stated rather than double-clicking the file.

A CSV going into another database. This is where all four losses bite at once: types are gone so the destination guesses again, links are names so relationships have to be matched back by string, and the export is per view, so the base arrives as one file per table with nothing in any of them describing how the tables joined. Two more things Airtable documents about the file — a filtered view exports the filtered set, so "the whole table" means an unfiltered grid view; and record comments, field descriptions and anything held only in an extension aren't in the CSV at all.

JSON. The interface downloads CSV; JSON comes from the API, which is also the answer for the whole base in one run rather than a download per table. That is the next section, and it's the version worth having anyway — types intact, links as record ids rather than display strings.

If you want a real backup

CSV is the wrong shape for it. The options, in order of effort:

  • The API. Airtable's REST API returns records as JSON with types intact and links as record ids rather than display strings. A script that walks every table and writes the JSON gives you something you could actually restore from — attachments still need fetching separately, from those URLs, promptly.

  • A third-party backup service. Several exist and they're doing the above on a schedule. Worth it if the base matters and nobody wants to maintain a script.

  • Airtable's own snapshots. Worth knowing that these exist on every plan, free included — what changes with the plan is how long they're kept. Airtable's documentation puts free-plan snapshots at two weeks before deletion, paid plans at up to a year, and Enterprise Scale at three years by default, adjustable in one-year steps to a maximum of ten.

    Two caveats before you treat that as your backup. A snapshot lives inside Airtable, so it answers "somebody broke the base" and not "we want to leave" or "our account is gone". And a base restored from a snapshot arrives without its revision history — the records and comments come back, the audit trail doesn't.

If a ceiling is what started this rather than a decision to leave, Airtable's free plan covers where those numbers stop and what happens when you reach one.

Moving it into Tabla

If the destination is us, the CSV path isn't the one to take. Our importer connects to Airtable directly: tables, fields, records and attachment bytes come across in one run, with types and links reconstructed rather than flattened into text. The words that change on the way over have their own short page.

And the reason we wrote this page rather than just the sales pitch: the same question is worth asking about us. The answer is that a Tabla database exports whole, in one file — every table as CSV, every record, every attachment's actual bytes, and a manifest describing the structure — on every plan, free, without asking anyone. That's the export we designed first, on the theory that you should know how to leave before you arrive.

Tabla is the database we build these on.

A no-code database with real Postgres underneath: every feature on every plan, a million records per database, and your whole database back out in one file, any day.

More guides