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.
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.
Share this tool
Only the tool’s public link is shared. Your inputs and results stay here.
Show link to copy manually
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.
