---
title: "CSV Dedupe"
description: "Remove duplicate rows from a CSV or TSV file by the columns you choose, keeping the first or last copy. Runs in your browser; the file is not uploaded."
url: https://findutils.com/convert/csv-dedupe/
category: convert
---

# CSV Dedupe

Remove duplicate rows from a CSV or TSV file by the columns you choose, keeping the first or last copy. Runs in your browser; the file is not uploaded.

**Use this tool:** [CSV Dedupe](https://findutils.com/convert/csv-dedupe/)

## Programmatic access

- REST id `csv-dedupe`: POST https://api.findutils.com/api/tools/csv-dedupe/execute (reference: https://findutils.com/api/csv-dedupe/)
- MCP tool `csv_dedupe` on https://mcp.findutils.com (reference: https://findutils.com/mcp/csv-dedupe/)

## Why Use CSV Dedupe?

Exports from CRMs, newsletter tools, forms and shops often hold the same record more than once: a customer who signed up twice, a contact typed once in lower case and once in capitals, or a row appended by a second import. CSV Dedupe removes those repeats by the columns you choose, such as email, and hands back two files: the cleaned table and the rows it removed, so you can check every decision. It reads the file in your browser, keeps the cells exactly as written, and never changes the order of the rows it keeps.

## Frequently Asked Questions

### What is the difference between whole-row and key-column matching?

With no key columns picked, a row is a duplicate only when every cell matches another row. With key columns picked, only those columns are compared: pick email and two rows with the same email but a different phone number or country count as duplicates, and one of them is removed.

### Which copy is kept, and does the row order change?

Keep first row keeps the earliest occurrence of each key and Keep last row keeps the latest. The order never changes: the kept rows are written in the order they had in your file, and so are the removed rows in the duplicates file.

### Can I match on more than one column?

Yes. Pick several key columns and they form a composite key. A row is a duplicate only when all of the picked columns match, for example the same first name, last name and postcode.

### Do spaces and upper case letters count?

By default spaces at the start and end of a cell are ignored and letter case counts. Turn off Trim whitespace to make spaces count, and turn on Ignore case to treat ADA@northwind.io and ada@northwind.io as the same. The downloaded cells keep their original spaces and case either way.

### What happens to rows with an empty key?

A row whose key cells are all empty is kept as unique by default, so ten rows with no email are all kept. Choose Collapse into one under Blank keys to deduplicate them like any other value, which keeps one of them.

### Does it handle quoted fields, commas and line breaks inside cells?

Yes. A field in double quotes may contain the delimiter, line breaks and doubled quotes, and it is read as one cell and written back quoted. If a quote opens and never closes, the page stops, names the line and removes nothing until it is fixed.

### How large a file can it handle?

Up to about 10 MB of text. Inputs over about 2 MB are processed in the background so the page stays responsive while it works. The preview shows the first rows; the downloads always contain every row.

### Is my file uploaded?

Runs in your browser; the file is not uploaded. Analytics and ads may load on the page.

### Can it find near-duplicates, like Jon Smith and John Smith?

No. Matching is exact after the optional trimming and case folding. Different spellings, typos, nicknames or reformatted phone numbers are different values, and the tool does not guess whether two records belong to the same person.

### Can I use it from code or an AI assistant?

Yes. The same logic is available as the csv_dedupe tool through the [FindUtils REST API](https://findutils.com/api/) and the [MCP server](https://findutils.com/mcp/). It takes the CSV text, the key columns and the same options, and returns the cleaned CSV, the duplicates CSV and the counts. Text sent there is processed on the server rather than in your browser.

## Related Tools

- [CSV Merger](https://findutils.com/convert/csv-merger/)
- [CSV Diff](https://findutils.com/convert/csv-diff/)
- [CSV Viewer](https://findutils.com/convert/csv-viewer/)
- [Dedupe Bookmarks](https://findutils.com/convert/dedupe-bookmarks/)
- [CSV Column Extractor](https://findutils.com/convert/csv-column-extractor/)
- [JSON to CSV](https://findutils.com/convert/json-to-csv/)
