CSV Diff
Compare two CSV files online and see added, removed and changed rows. Match on a key column or by row position, with a downloadable change report.
What is the CSV Diff?
CSV Diff compares two versions of the same dataset and tells you exactly what moved. Paste or drop the original and the updated file, choose whether to match rows on a key column such as an id or simply line by line, and you get counts of added, removed, changed and unchanged rows straight away.
- Match rows by key column or by line position
- Counts of added, removed, changed and unchanged rows
- Cell-level detail showing old and new values
- Flags columns present in only one file and duplicate keys
- Ignore-case and ignore-whitespace comparison options
- Downloadable CSV change report — nothing is uploaded
How to use the CSV Diff
- 1
Paste the original CSV into box A and the updated CSV into box B, or drop the files.
- 2
Choose the delimiter and tell the tool whether the first row is a header.
- 3
Pick a key column to match rows on, or match by row position instead.
- 4
Optionally ignore surrounding spaces or letter case when comparing.
- 5
Review the changed-cell table, then copy or download the change report.
About the CSV Diff
CSV Diff compares two versions of the same dataset and tells you exactly what moved. Paste or drop the original and the updated file, choose whether to match rows on a key column such as an id or simply line by line, and you get counts of added, removed, changed and unchanged rows straight away.
For every changed row the tool lists the individual cells that differ, with the old and new value side by side, so you can see that a plan changed from Pro to Enterprise rather than just that 'something' changed. It also reports columns that exist in only one file and any duplicate key values, which are the two things that quietly break a comparison.
The whole comparison runs locally in your browser — neither file is uploaded, so you can safely diff exports containing customer records or financial data. Export a change report as CSV with a status column and old/new value pairs for sharing or auditing.
Frequently asked questions
How do I compare two CSV files?
Paste the old file into box A and the new one into box B, then choose the column that uniquely identifies a row — usually an id or an email. The tool immediately lists which rows were added, removed or changed.
What if my CSV has no unique key column?
Set 'Match rows by' to row position. Row 1 of file A is then compared with row 1 of file B and so on, which works well when both files are sorted the same way and only values changed.
Why does it warn about duplicate keys?
If the same key appears twice, only the first occurrence can be matched, so the comparison would silently ignore the rest. The warning lists the offending values so you can fix the export or switch to positional matching.
Does row order affect the result?
Not when you match on a key column — rows are looked up by their key, so re-sorted files still compare correctly. With positional matching, order matters, and a single inserted row shifts everything below it.
Are my files uploaded anywhere?
No. Both files are parsed and compared by JavaScript in your browser. Nothing is transmitted, logged or stored, so confidential exports stay on your machine.
Related tools
CSV Column Statistics Calculator
Profile a CSV column by column: type, blanks, distinct values, min, max, mean, median, standard deviation and percentiles, plus top values — all in-browser.
CSV Viewer & Table
View CSV as a clean HTML table online. Live search filter, row and column counts, delimiter and header options — all processed locally in your browser.
Text Compare
Compare two texts online free and highlight every difference. A private text comparison tool that finds matches and changes right in your browser.
CSV Join Tool
Join two CSV files on a shared key column online — inner, left or full join like VLOOKUP or SQL, with collision-safe headers and an unmatched-key report.
CSV Cleaner & Deduplicator
Clean CSV online: remove duplicate rows, trim whitespace, drop empty rows and normalise the delimiter. See before/after counts — 100% in your browser.