Skip to content
TheSpreadFix

Remove Duplicates from CSV

Find and remove duplicate rows in a CSV file — exact duplicates, or records that share an email, ID, phone number or a combination of columns. You choose which copy to keep and see every removed row before you download.

Drop a CSV or Excel file here

.csv, .xlsx, .tsv

Your file stays on your device. It's read and cleaned in your browser — nothing is uploaded.

How it works

  1. Step 1

    Upload your CSV

    The file is processed in your browser, so customer lists never leave your computer.

  2. Step 2

    Choose how to match

    Use identical rows, or pick key columns such as email, or first name + last name + phone.

  3. Step 3

    Keep the right record

    Keep the first, last or most complete row. Preview removed rows, then download.

What it checks and fixes

Exact duplicate rows

Rows that are identical apart from letter case and extra spaces — often caused by combining exports.

Duplicate emails or IDs

The same customer ID, SKU, order ID or email appearing on more than one row, reported per column with examples.

Composite-key duplicates

Records that match on a combination of columns, for when no single column is unique.

Duplicates hidden by formatting

“ John@Example.com” and “john@example.com” only match after cleaning — so values are normalised before deduplicating.

Which duplicate should you keep?

Deleting duplicates is easy; deleting the right ones is what matters. If two rows share an email but one has a phone number and company and the other doesn't, you almost certainly want to keep the more complete row.

OptionKeepsUse it when
FirstThe earliest occurrenceThe file is sorted oldest → newest and the original record is the reference.
LastThe latest occurrenceLater rows are updates (e.g. an export appended to an older one).
Most completeThe row with the fewest empty cellsRows came from different sources with different fields filled in.

Choosing the right key

The key is the column (or columns) that identifies a real-world record:

  • Contacts and leads: email address — the identifier most CRMs match on.
  • Customers, orders, invoices: the customer ID, order ID or invoice number.
  • Products: SKU.
  • No reliable ID? Use a composite key such as first name + last name + phone.

Rows where the key is empty are never treated as duplicates of each other — ten contacts with no email are not the same person.

Normalise first, then deduplicate

Exact comparison misses duplicates that differ only in formatting. “Ravi Kumar ” (with a trailing space) and “Ravi Kumar” are different to a strict comparison, as are “ASHA@X.COM” and “asha@x.com”. TheSpreadFix ignores case and extra spaces when comparing, and when you apply email or phone fixes together with deduplication, the values are cleaned first so the duplicates are caught.

Frequently asked questions

Is matching case-sensitive?

No, by default “ASHA@X.COM” and “asha@x.com” match. You can turn case-insensitive matching off.

Can I see which rows will be removed?

Yes. After previewing, open the step details to see examples of removed rows with their row numbers.

Does it find similar but not identical names?

Not yet. Matching is exact after normalising case and spaces. Fuzzy matching for names and companies is planned, and will always show why two rows matched.

Is my contact list uploaded?

No. The duplicate finder runs in your browser; the file isn't uploaded.

What happens to rows with an empty key?

They're always kept. An empty email or ID never counts as a duplicate.