How to remove duplicate records in Airtable (and what to do on the Free plan)
On a paid plan, Airtable's Dedupe extension finds and merges duplicate records inside your base. On the Free plan, extensions aren't available, so download the table as a CSV and clean the file: same-email rows merged, possible duplicates flagged, every change logged, back in 24 hours on Quick Clean (up to 200 rows). Not affiliated with Airtable.
Rather not do it by hand? Skip to done-for-you cleanup, from $25.
How to remove duplicate records in Airtable
On a paid plan, use Airtable's Dedupe extension. "The dedupe extension helps you find and manage duplicate records in a table. You can delete duplicates or merge individual fields from duplicate records together." It is listed for "All paid plans" (Airtable Support: Dedupe extension), and "Extensions are a paid-plan feature." (Airtable Support: Airtable extensions overview) On the Free plan, download the table as a CSV (step 6) and clean the file.
- Check your plan. "Extensions are a paid-plan feature." On downgrading: "When you downgrade to Free plan, existing extensions on your bases are removed from the view and can no longer run." (Airtable Support) New accounts get a trial: "After creating a new account in Airtable, your first workspace is automatically upgraded to a 14-day complimentary trial of the Team plan." (Airtable Support: Airtable plans overview)
- Paid plan: add the Dedupe extension. "Click Tools in the upper-right corner." "Click the Extensions option." "Click Add an extension." "Search for and locate the dedupe extension." "Click Add, then Add extension." (Airtable Support)
- Pick the fields to match on to remove duplicates from a table. "Next, you'll need to pick the field or fields that you want to use to find duplicates." For text fields you choose how strict the match is, for example "Exact: Has the same, case-sensitive value" or "Similar: Has the same value, but may have different capitalization, punctuation, accents, whitespace, or ordering of words."
- Review, merge and delete each set. "Click Review duplicates when you're ready to start deduping your records." Use as primary record: "This will choose that particular record and mark all other records for deletion." "Selecting a primary record means that you are specifically preserving that record's comments and revision history." "For some field types that support multiple values (multiple select, multiple collaborator, linked records, and attachments), you can choose to keep multiple values in the final result." "Click Merge and delete x records when you have reviewed the record set and are ready to delete the duplicates." Airtable notes: "Note that you must go through each set of duplicate records individually to ensure the final “merged” record contains the correct information." (Airtable Support)
- Flag new duplicates as they arrive. "You can set up an automation that checks for duplicate records whenever a new record is created and flags any matches automatically." "Add a trigger and select When a record is created. Choose the table you want to monitor." Airtable's own limit: "Automation-based duplicate detection runs after records are created. It won't prevent duplicates but can help you identify them immediately for review." (Airtable Support) The Free plan lists automations with limits ("75 unique automations per base", "100 automation runs per workspace per month"; Airtable Support). We haven't tested this automation on a Free base.
- Free plan, or no extension: download the CSV. "Click the down arrow icon to the right of the view name you want to export." "Click Download CSV." "If you want to download all of the records from a table, then ensure that the view you are exporting as a CSV does not contain any filters." "All field values visible in the view will be included in the export." "Exporting grid views to CSVs is only available on our web and desktop applications." "Each table in a base will need to be downloaded as its own CSV." (Airtable Support: Getting started with Airtable views)
Where our cleanup fits: after step 6, when the Dedupe extension isn't available on your plan. We go through the whole downloaded file at once and log every change. You then delete the duplicates in your base yourself, or import the cleaned file into a new table and check it. On a paid plan, the Dedupe extension (steps 2 to 4) works inside your base and keeps comments and revision history. Use it.
Before you delete records or re-import in Airtable
- A merge in our file isn't a merge in Airtable. Every record stays in your base until you delete it there.
- The cleaned file doesn't go straight back in unchanged. Its headers change: our standard columns come first (full_name, email, phone, company, title, website, linkedin), then status and qa_notes, then your other columns as lowercase names (for example last_contacted), then source_row. Your own Status field comes back as status_src. When you import, check which column goes into which field: "From here, you can manually select fields to include" (Airtable Support: Importing third-party data into Airtable). With the CSV import extension: "Mappings are tied to your CSV's column headers." (Airtable Support: CSV import extension)
- Importing into a new table keeps your original table as it is: "Click the ⌄ icon and select Create a new table." (Airtable Support) On the Free plan, a second table counts toward "1000 records per base (1000 records per table max will also hit base record limit)" (Airtable Support).
- Take a snapshot first: "Before importing data into your base, we recommend taking a base snapshot." (Airtable Support) The Free plan keeps "2 weeks of revision and snapshot history" (Airtable Support).
- Multiple-select values are not combined. When two same-email rows have different values in a field such as Tags, we keep the first row's value and list the other in the change log. Airtable's Dedupe extension can do this instead: "you can choose to keep multiple values in the final result." (Airtable Support)
- Attachments: "Attachment fields will be included in the CSV file as a filename and URL." And: "As of November 8th, 2022, attachment URLs obtained via the CSV export functionality will expire after a few hours." (Airtable Support) We pass that column through as text. We don't download or re-attach files.
We don't overwrite your values. Our cleanup keeps every column in your CSV as an extra column. When two rows share an email, a blank cell on the kept row can be filled from the other row; every fill is listed in the change log. When both rows disagree, the first row's value is kept and the other value is listed in the change log. A disagreement in a status column (such as your Status field) also sets the row to needs_review, with both values in qa_notes. Rows that are only possible duplicates are never merged in the file. We never log in to or touch your Airtable base.
Or let us clean the downloaded CSV
- You send one downloaded CSV (one table), or an Excel (.xlsx) file. With Excel, we clean the first sheet of the workbook, and the file comes back as a cleaned CSV plus a change log. We don't take old Excel .xls files; save them as .xlsx or CSV first. We clean one file per job and don't add a column showing where each row came from. Your own Status field comes back as status_src, because the cleaned file has its own status column. If your file has a plain Email or Email Address column, that's the email we use, wherever it sits. Other columns with "email" in the header (opt-in, status or permission columns, or ones you add) are kept as their own columns, and one only fills a blank email when it holds a real address. Pricing is by rows in the file you send. We never log in to Airtable. We don't delete, merge or edit records, add extensions or automations, or run any import.
- Same-email rows are merged and logged. Emails are compared ignoring capitalization and spaces at the start or end. The first row is kept, and its blank fields are filled from the duplicate. Where both rows have different values (for example two phone numbers or two Tags values), the first row's value is kept and the other is listed in the change log.
- Possible duplicates are flagged for review, not merged. These are rows with the same full name and the same company, where both are present, but a different or missing email (case, punctuation and suffixes like Inc or LLC are ignored). Each one is marked needs_review, with a note naming the row it may match. Rows with no company aren't compared on name.
- Invalid, missing and personal (for example Gmail or Yahoo) emails are flagged in qa_notes. We don't fix or verify mailboxes.
- Names in ALL CAPS or all lowercase are re-cased. US phone numbers are formatted +1-XXX-XXX-XXXX. Numbers with a non-US country code (starting with + or 00) are kept as you sent them (extra spaces trimmed only). Numbers with no country code and 10 digits are treated as US. Placeholder phones like N/A are blanked and logged. Anything we can't read is kept as-is, with a note in qa_notes. Line breaks inside cells are turned into spaces (except in the email column, where a broken email is flagged invalid instead), and the CSV is saved as UTF-8. Rows with no company get a "missing company" note and are marked needs_review; rows with no phone get a "missing phone" note.
- You get back the cleaned CSV (with status, qa_notes and source_row columns), a change log with every merge, every fill from a duplicate, every email and possible-duplicate flag, and every edited cell listed by row, with its old and new value, a QA report with counts (rows in and out, duplicates merged, possible duplicates flagged, emails flagged and cells edited), and your original file, unchanged.
- What we don't do: we don't combine Tags or other multiple-select values, and we don't keep Airtable's field types, linked records or attachments as files (the CSV is text). We don't delete, merge or edit anything inside Airtable. We don't promise deliverability, inbox placement or bounce rates, we don't verify mailboxes, we don't find, buy or add contacts, and we don't merge rows that only might be the same person.
Clean my Airtable CSV · $25 (up to 200 rows, back in 24h)
Rather hand off the cleanup? $25 Quick Clean: up to 200 rows, cleaned CSV (same-email duplicates merged, possible duplicates flagged) plus a change log within 24 hours.
Not affiliated with Airtable.
Bigger list? Intro $99 for up to 500 rows (48h) · Growth $299 for 501 to 2,000 rows (72h) · Bulk $499 for 2,001 to 5,000 rows (5 business days) · over 5,000 rows, custom quote. See all sizes.
Check your CSV free first
Check your Airtable CSV for exact-email duplicates and formatting problems free in your browser. Your file never leaves your computer.
Run the free CSV Preflight Checker
How it works
Pay
Pick the size that fits your list and check out on Stripe. Quick Clean is $25 for up to 200 rows.
Email us your CSV (reply to your receipt or send it to slrescue@mail.grokbot.com)
No Airtable login, no call, no upload form.
Get it back: 24h (Quick Clean, up to 200 rows), 48h (Intro), 72h (Growth), 5 business days (Bulk)
A clean CSV plus a change log. Over 5,000 rows, the turnaround is scoped in your custom quote.
Flat pricing
- Quick Clean, up to 200 rows, back within 24h, $25 (credits toward a larger pack within 14 days)
- Intro, up to 500 rows, back within 48h, $99
- Growth, 501 to 2,000 rows, back within 72h, $299
- Bulk, 2,001 to 5,000 rows, 5 business days, $499
- Over 5,000 rows: email us for a custom quote
Your $25 Quick Clean counts toward any bigger cleanup within 14 days.
Quick Clean, Intro, Growth and Bulk: If the file isn't what we promised, we fix it once for free within 48 hours. If it still isn't right, you get your money back for the part we couldn't deliver. If we're late, you choose a full refund or a free rush job.
Not sure how messy it is? CRM Hygiene Scorecard (written diagnosis), $29. Agencies: white-label batches.
Questions
Can I remove duplicates in Airtable on the Free plan?
Not with the Dedupe extension: "Extensions are a paid-plan feature." (Airtable Support) You can delete duplicates by hand, flag new ones with an automation (step 5; untested by us on a Free base), or download the CSV and have it cleaned.
Does Airtable remove duplicates when I import a CSV?
The paid CSV import extension says: "The extension doesn't deduplicate rows within the CSV itself" and "If the CSV file contains multiple rows which contain the same value for the merge field, the extension will only use the first of those rows, and subsequent rows will be ignored." Airtable's advice: "clean up duplicates in the CSV before importing, or use the Dedupe extension on your table after the import completes." (Airtable Support)
Will my Tags or multiple-select values be combined?
No. When two same-email rows have different values, we keep the first row's value and list the other in the change log. If you need the values combined, the Dedupe extension can: "you can choose to keep multiple values in the final result." (Airtable Support)
Can I import the cleaned file straight back?
Not unchanged. The headers change (see the caution box), so check which column goes into which field when you import. Import into a new table first: "Click the ⌄ icon and select Create a new table." (Airtable Support)
What happens to attachments?
"Attachment fields will be included in the CSV file as a filename and URL." (Airtable Support) We keep that text as it is. We don't download or re-attach files.
Is this the same as Airtable's Dedupe extension?
No. The Dedupe extension works inside your base, lets you choose how strict the match is, and keeps the primary record's comments and revision history. We compare email (ignoring capitalization and spaces at the start or end) and name plus company across your downloaded file, flag the pairs and log every change. You review and delete in Airtable.
Do you need access to my Airtable account?
No. You export a file and email it. We only clean the exported file and never log in to or touch your Airtable base.
How fast is delivery?
From when we receive your file: Quick Clean (up to 200 rows) within 24 hours, Intro within 48 hours, Growth within 72 hours, Bulk within 5 business days. Over 5,000 rows is scoped in your quote.
What if the cleaned file isn't right?
If the file isn't what we promised, we fix it once for free within 48 hours. If it still isn't right, you get your money back for the part we couldn't deliver. If we're late, you choose a full refund or a free rush job.
What happens to my data?
Your file is used only for your job and deleted after delivery on request (see Anonymous aggregate statistics). We never log in to your CRM, and we never invent, buy, or append emails.
Anonymous aggregate statistics. After a cleanup we keep a small record of counts about your file: rows in and out, duplicates merged, rows flagged for review, which fields were present, and the CRM you told us it's for. This record contains no contact data, names, emails, company names, domains, file names or cell values, and it isn't deleted when your file is deleted. We only publish these counts combined with at least 19 other lists (and at least 5 different customers), so no single customer can be identified. To opt out, reply 'opt out' to your delivery email and we'll delete your record.
Not affiliated with Airtable. Quotes are from Airtable's public support pages.