Guides / Import a CSV

How to import a CSV into Airtable without creating duplicates

The native CSV import is good at one thing: making new records. The moment you need to update rows that already exist, matched on an ID, you are on your own. Here is the way through.

Airtable's CSV import works well the first time and badly the second. Import a file, you get records. Import a corrected version of the same file, you get the records again — twice.

That is not a bug; the importer simply has no concept of a key. It appends. Everything below is about the gap between what it does and what a recurring import actually needs.

What the native importer does and does not do

NeedNative import
Create a new table from a fileYes — CSV import extension or paste
Append records to an existing tableYes
Map columns onto existing fieldsPartly — by name, and awkwardly
Update records matched on a keyNo
Tell you a value will not fit the field typeNo — it coerces or blanks silently
Handle semicolon-separated filesInconsistently

The last two rows cause more damage than the missing update. A date string the importer cannot parse does not raise an error; the cell simply ends up empty, and you find out three weeks later.

The upsert problem

"Upsert" — update if present, insert if not — is the shape of almost every recurring import. Your accounting system exports a CSV of invoices every Monday; you want Airtable to reflect it, not to accumulate five copies of invoice 4012.

Doing this by hand means, for each row: search the table for a record whose key field matches, update it if found, create it if not. The Airtable API does support this in bulk, but you have to write the request, batch it in tens, and handle rate limits.

Pick your key carefully. It has to be a column that is genuinely unique and stable — an invoice number, an external system ID, an email address. Customer name is not a key; two people share it and you will silently overwrite one with the other.

Importing with mapping, checks and upsert

  1. Sign in with your Airtable account, then pick the destination base and table. Existing fields are read from the table, so you map onto what is really there.
  2. Drop your CSV. UTF-8 is recommended; comma and semicolon separators are both handled.
  3. Map the columns. Close name matches are proposed automatically and flagged green; you adjust the rest, or set a fixed value for a field that is not in the file at all.
  4. Choose the mode. Create a record per row, or find records via a unique key and update them — with the option to add rows whose key is absent from Airtable.
  5. Run the compatibility check. Every CSV value is tested against its target field type before anything is written; mismatches are listed with the original value so you can correct them.
  6. Preview the first rows, then import.

The compatibility step is the one that pays for itself. It is the difference between finding out now that 40 of your dates are in DD/MM/YYYY where the field expects MM/DD/YYYY, and finding out in a quarterly report.

Free tool

CSV → Airtable Importer

Column mapping with automatic matches, type compatibility checking before write, and update-by-key so re-running an import corrects records instead of duplicating them.

Open the importer →

If the CSV has files in it

A CSV column holding file paths or URLs is a separate problem — Airtable will only accept an attachment as a publicly reachable URL, so local paths go nowhere. That case is covered in bulk uploading files to Airtable.

Frequently asked

Can Airtable update existing records from a CSV?
Not with the built-in importer, which only creates records or creates a new table. Updating in place requires matching each CSV row to a record on a unique key, which means the API, a script, or a tool that does the matching for you.
Why does my CSV import create duplicates?
Because the native importer has no concept of a key. Every row becomes a new record, whether or not a record with the same identifier already exists. Re-running an import therefore doubles your data.
What separator and encoding should my CSV use?
UTF-8 encoding, with either a comma or a semicolon as separator. Semicolon files are common when the CSV was produced by Excel on a French or German system, and are handled the same way.
What happens if a CSV value does not fit the Airtable field type?
The importer checks compatibility before writing anything and lists the mismatches — a date that will not parse, a select value that is not one of the field's choices, text going into a number field. You correct or override them, then import.
Does importing a CSV overwrite my whole table?
No. In create mode it appends records; in update mode it modifies only the records matched by the key column, and can optionally add rows whose key was not found.

Related guides