Skip to content
100% local

CSV diff

Compare two CSV files by a key column and see what was added, removed and changed.

Input
New CSV

CSV diff

Paste an old CSV export into the main field and a newer one into the second panel, and this tool matches their rows by a key column to show what changed. Rows that exist only in the new file are added, rows missing from it are removed, and rows present in both but with different values are changed — with the exact column and its old and new value listed for each difference. Use it for product feeds, user exports, price lists or any spreadsheet that gets re-exported over time.

The key column identifies a row across both files: a header name, several comma-separated names for a composite key, or a column number when there's no header row. The delimiter and header toggle match your file's structure. "Ignore column order" matches columns by name instead of position, for exports that list them in a different sequence. "Ignore case and surrounding spaces" treats "Active" and " active " as equal, and "exclude columns" skips fields you don't care about, like a timestamp that changes on every export. Three output formats fit different needs: a readable summary of each change, a compact unified diff of +/- rows, and a full CSV rebuilt with a status column you can filter or sort.

Parsing follows RFC 4180, so a quoted field may safely hold the delimiter, a doubled quote or an embedded line break, and CRLF and LF line endings are read the same way. A key that repeats within one file resolves to its last row's values. The result updates as you type or adjust an option.

Everything runs locally in your browser — nothing is uploaded, so it's safe to compare exports with customer data. Copy the result, download it as .txt, or send it back into the input for another tool.

FAQ

How does the tool decide which rows are "the same" row?
By the key column (or columns) you choose — usually an ID field. A row in the old file and a row in the new file are compared only when their key values match; everything else about the row can differ.
What happens if a row's key value itself changes between the two files?
The tool has no way to know it's the same row, so it appears as one removed row (old key) and one added row (new key). Pick a key column that stays stable across exports.
Can I compare two CSVs whose columns are in a different order?
Yes. Turn on "ignore column order" and columns are matched by header name instead of position, so a reordered export still compares correctly.
What is the difference between the three output formats?
"Summary" lists each added, removed and changed row with the exact column, old value and new value. "Unified diff" shows compact +/- CSV lines. "CSV with status column" rebuilds the full table with an extra column marking every row added, removed, changed or unchanged.
Is my CSV data uploaded anywhere?
No. Both files are compared entirely in your browser — nothing is sent to a server, so it is safe to use with private or sensitive exports.