Skip to main content

Remove Duplicate Rows from CSV

Find or remove duplicate CSV rows in your browser. Match on chosen columns, ignore case and spacing, and keep the first or last copy.

All Data tools →

This tool runs entirely in your browser. Nothing you enter is sent to our servers, so there is nothing for us to store or see.

About the Remove Duplicate Rows from CSV

Paste CSV and get it back with the duplicate rows removed — or with only the duplicates shown, if what you actually need is to see what went wrong. Everything runs inside this page on your own device, so a mailing list or a customer export is never uploaded.

What counts as a duplicate is the whole question, and matching entire rows is usually the wrong answer. Two records for the same customer rarely agree on every field: one has a timestamp, or a trailing space, or [email protected] where the other has [email protected]. So you choose which columns define identity — match on the email column alone and the other differences stop mattering. Case and surrounding whitespace can each be ignored independently, because those are the two ways the same value gets typed twice.

You also choose which copy survives. Keeping the first is right for a file in the order it was collected; keeping the last is right when later rows are corrections. The header row is never treated as data, so it cannot be removed as a duplicate of anything, and row order is otherwise left exactly as it was — nothing is sorted behind your back.

How to use the Remove Duplicate Rows from CSV

  1. Paste your CSV

    Paste into the left pane, or drop a .csv file onto it — dropping reads the file locally and never uploads it.

  2. Choose the matching columns

    Leave it empty to match whole rows, or name the columns that define identity — by heading, by position counting from 1, or as a range like 1-3.

  3. Decide how strict to be

    Ignore case and ignore surrounding spaces are the two settings that catch the same value typed twice. Then pick whether the first or last copy survives.

  4. Copy or download

    The result appears on the right with a count of what was removed. Copy it, or download it as a .csv file.

Frequently asked questions

Is my data uploaded anywhere?

No. The whole operation runs inside your browser and nothing is sent to a server. You can disconnect from the internet once the page has loaded and it will keep working exactly as before.

Why would I match on some columns rather than the whole row?

Because two records for the same thing rarely agree on every field. One will have a timestamp, an internal note or a slightly different spelling, so a whole-row match finds nothing. Matching on the email or ID column alone identifies the real duplicates and ignores the fields that were never meant to be part of identity.

Should I keep the first or the last copy?

Keep the first when the file is in the order it was collected and the earliest record is the original. Keep the last when later rows are corrections or updates, which is usual for an export that appends rather than edits in place.

Can I see the duplicates instead of removing them?

Yes — switch the mode to "show only duplicates" and you get just the rows that had a twin, in their original order. That is usually the more useful first step, because it lets you check that your matching columns are identifying what you actually think they are.

Is my header row safe?

Yes. The header is held aside and never compared against the data, so it cannot be removed as a duplicate of a row that happens to repeat the column names. Row order is otherwise untouched — nothing is sorted as a side effect.