Developer tools ● Local processing

Compare two CSV files by key

Find added, removed and changed CSV rows by one or more identifier columns. Compare exact cell values locally and download JSON or text reports.

Preparing tool…
Try a small example

Try a small example

Load the fictional example in a cleared form. Check the options, run the tool if needed, and compare the result below.

A keyed CSV comparison matches records by an identifier, even when rows move. Choose one column or a composite key to find added records, removed records and changed cells without turning identifiers into numbers. Find added, removed and changed CSV rows by one or more identifier columns. Compare exact cell values locally and download JSON or text reports. The output reflects the method and inputs described here. Check it before relying on it for an important decision.

Before CSV

sku,warehouse,quantity,note
001,North,10,"Blue, small"
002,North,5,Keep
003,South,2,Retire

After CSV

sku,warehouse,quantity,note
002,North,5,Keep
001,North,12,"Blue, small"
004,South,3,New

Expected output

Comparison totals
Before CSV
3
After CSV
3
Added rows
1
Removed rows
1
Changed rows
1
Unchanged rows
1
Changed cells
1
Preview: up to 100 differing rows and 500 cells. Download a full report for every difference.
Values use JSON quotes and escapes so empty text, spaces, tabs and line breaks remain distinguishable. Record numbers include the header as record 1; a quoted line break does not start a new record.
Changed rows (1)
Key: ["001","North"]Before CSV · CSV record 2 · After CSV · CSV record 3
Column	Before CSV	After CSV
"quantity"	"10"	"12"
Added rows (1)
Key: ["004","South"]After CSV · CSV record 4
Column	After CSV
"sku"	"004"
"warehouse"	"South"
"quantity"	"3"
"note"	"New"
Removed rows (1)
Key: ["003","South"]Before CSV · CSV record 4
Column	Before CSV
"sku"	"003"
"warehouse"	"South"
"quantity"	"2"
"note"	"Retire"

The example is unavailable until the tool is ready.

Text is processed in your browser.

✓ Local processing✓ No account✓ Inputs processed here✓ Free

Quick answer

A keyed CSV comparison matches records by an identifier, even when rows move. Choose one column or a composite key to find added records, removed records and changed cells without turning identifiers into numbers.

The page and its assets load from the site; this operation uses your entered values only in this browser and does not send them to a calculation endpoint.

How to use it

Find added, removed and changed CSV rows by one or more identifier columns. Compare exact cell values locally and download JSON or text reports.

Limits

The output reflects the method and inputs described here. Check it before relying on it for an important decision.

Frequently asked questions

Does sorting a CSV create changes?

No. Records match by their selected key, and columns match by exact header name. Changing only their order produces no changed cells.

Can I use several identifier columns?

Yes. Select each part of the key, such as sku and warehouse. Each full tuple must be unique in each export, and no component may be empty or contain only whitespace.

What happens to leading zeros, spaces and dates?

Values remain exact strings. 001 differs from 1, 1 differs from 1.0, and spaces and letter case count. Dates are not parsed.

What if a key changes or a column disappears?

A changed key becomes one removed record and one added record. Different header sets are rejected rather than silently ignoring columns.

Are my CSV files uploaded or stored?

The comparator reads and compares inputs in this page’s memory. It does not upload them or put them in browser storage. Loading the site still requires ordinary page requests; optional site analytics may run with your consent. Reports you download remain on your device.

A reproducible CSV comparison example

A reproducible CSV comparison example