Find duplicate rows

Detect exact duplicate records in a spreadsheet or delimited file. Everything runs locally, with no account required.

XLSX · CSV

XLSX ≤ 30 MB compressed · expanded ≤ 150 MB · 100,000 rows × 1,000 columns · CSV/TSV ≤ 50 MB

Duplicate Row Finder

Detect exact duplicate records in a spreadsheet or delimited file.

XLSX · CSV
File to inspect
Drop an .xlsx, .csv, or .tsv file here
Deterministic local comparison

Content is processed in your browser · Not sent to the application server · Free to use

Synthetic worked examples · 22 October 2026

Reconcile a warehouse and shop by SKU

Use the synthetic sample action above the workbench, then click Compare. To load files yourself, download warehouse.csv and shop.csv, select SKU as the key, and keep tolerance at 0. Row order differs intentionally. Preserve SKU codes such as 0001 as text.

The expected result is 16 changed, 2 added, 2 removed and 4 matched records. A repeated DUP key and a blank key are held for review, rather than paired by row order. Download the expected counts and rules. Negative stock is a reported value; ExactDiff cannot decide which source is correct.

  1. Load the synthetic sample above the workbench, or download both CSV files and open reconciliation.
  2. For manually selected files, choose the custom key SKU and leave numeric tolerance at zero.
  3. Compare the twenty stock differences and review the duplicate and blank-key groups separately. Download the report and keep both source files unchanged.

Product plus currency identifies a price

Before / after: use custom keys SKU, Currency in the CSV tool. SKU alone is ambiguous. The composite key yields one changed price and two matches. 001, 01 and 1 are different identifiers.

Equal totals can hide different records

Both before and after total 30, but A is duplicated. Reconciliation reports one withheld group, with no claimed matches. A full-row duplicate check is a different question from key uniqueness.

A formula becomes a stored value

Formula workbook / value workbook: Sheet!B2 changes from 1+1 to a stored 2. Formula diff reports the removed expression; data comparison sees the same cached value. Neither tool recalculates or approves the formula.

A European CSV is still text

Semicolon fixture includes a quoted semicolon, escaped quotation marks, a newline inside a field, Unicode and decimal commas. The parser keeps 10,50 as text. No date, currency or locale conversion is implied.

Three sheets, different coverage

Before workbook / after workbook: Inventory is unchanged; Prices and Archive values change, and Archive is renamed. Data reconciliation compares only the first worksheet, Inventory, and warns that the workbook has three sheets. Formula diff and structural audit scan all sheets for their respective tasks; neither is a full workbook value diff. Coverage and expected outcomes.

How Duplicate Row Finder works

The tool builds a normalized signature from every selected row value and groups records with identical signatures.

The comparison is deterministic: the same files and settings produce the same classification. File contents remain inside the current browser session.

Get a cleaner result

  1. 01Normalize whitespace before scanning.
  2. 02Review blank-heavy rows separately.
  3. 03Use CSV Compare by Key when only selected columns define duplicates.

Frequently asked questions

Does it delete duplicates?

No. ExactDiff reports them without changing the source file.

Are blank rows counted?

Completely blank rows are ignored; repeated populated rows are reported.

Private by design

Runs in your browser

Content is processed in your browser and not sent to the application server

Works without an account