Updated · Built and checked by the PlinzoTools team, formulas tested against published sources
Remove exact duplicate rows from CSV data.
Your deduplicated CSV will appear here.
This tool removes exact duplicate rows from pasted CSV data, keeping only the first occurrence of each -- useful for cleaning up a data export that has accidental repeated rows.
Paste your CSV data. The de-duplicated CSV appears instantly, ready to copy or download.
The tool reads your pasted CSV into rows and treats the first row as the header, which is always kept and is never compared against the data. It then walks through the remaining rows in order. For each row it builds a comparison key by joining all of that row's fields together, and if it has already seen that key it drops the row. Otherwise it keeps the row. The first occurrence always survives, and the original order of the kept rows is preserved.
The comparison is exact and case-sensitive, so Alice and alice are different. Spaces count too, so a trailing space makes a row different from an otherwise identical one.
The key is built by joining a row's fields with nothing between them. That means two rows can be treated as identical when their fields merge into the same string, even though they are split differently. For example, a row with the fields ab and c produces the same key as a row with the fields a and bc. In real data this is rare, since rows usually have consistent structure, but it can occur with short fields in unusual files. If exactness is critical, compare the output row count with what you expect and scan the removed cases.
Take a hypothetical list with the header row name,email and the rows Alice,a@x.com then Alice,a@x.com then Bob,b@x.com then alice,a@x.com. The second row is an exact repeat of the first and is removed. The last row differs only by the capital letter and is kept, since matching is case-sensitive. The result is the header, Alice, and Bob, plus alice, for a total of four lines, and the tool reports one duplicate row removed. If you want case differences ignored, convert the text to a single case before pasting.
The parser recognizes double-quoted fields, so commas and line breaks inside quotes stay inside their field. Blank lines are ignored. Both Windows and Unix line endings work. The output uses commas and newlines. Fields are wrapped in quotes only when they contain a comma, a quote, or a line break, so the quoting can differ from your input even for unchanged rows. Only comma-delimited data is supported, so a semicolon or tab separated file would be treated as one long field per row.
Everything runs in your browser, and nothing you paste is sent to a server.
A row is a duplicate only if every field matches exactly (case-sensitive) another row that already appeared -- partial matches aren't removed. One caveat: fields are joined without a separator before comparing, so rows like ab,c and a,bc would be treated as duplicates.
No. The first row is always treated as the header and kept, and it is not compared with the data rows.
No. Comparison is case-sensitive, so those rows are both kept. Normalize the case before pasting if you want them merged.
Not with this tool. It compares entire rows, and a row is removed only when all its fields match an earlier row.
The first occurrence stays in its original position, and later identical rows are dropped.