CSV Diff
Compare two CSV files by a key column and see which rows were added, removed or changed.
Processing: This tool runs entirely in your browser. Your input and any file you open stay on your device — nothing is uploaded to a server.
How to use the csv diff
- Paste both CSV files, original on the left.
- Choose the column that identifies a row, or compare by position.
- Read the changed cells, and copy the report.
About this tool
A line-by-line text diff answers the wrong question about a CSV. Sort the file differently and every line is marked changed; add a column and every line is marked changed; alter one cell in a thousand rows and it looks the same as a rewrite. None of that is what someone comparing two exports wants to know.
This matches rows by a key column instead — an id, a SKU, an email — and then compares the cells within each matched pair. The result is the useful one: which rows are new, which have gone, and exactly which cells changed in the rows that remain. Column additions and removals are reported separately, since they affect every row and are usually a schema change rather than a data change.
Duplicate keys are reported rather than resolved. If two rows share an identifier, matching them against the other file is a guess, and a tool that guesses silently produces a diff that looks authoritative and is not.
Comparing by position is still offered, because some files genuinely have no identifier. It is the right choice there and the wrong one everywhere else, and the difference is visible immediately: the same two files compared by position here report every reordered row as changed, while comparing on the id finds the single altered cell.
Common uses
- Comparing two exports of the same data taken at different times.
- Checking what a data import actually changed.
- Finding the rows that differ between two systems.
Frequently asked questions
- Why not just use a text diff?
- Because reordering rows or adding a column marks everything as changed, and a single altered cell looks identical to a rewrite. Matching on a key finds what actually differs.
- What if rows share a key?
- The duplicates are reported and only the first row with each key is compared. Matching the rest would be a guess, and a guess dressed as a diff is worse than no diff.
- Can it compare files with no id column?
- Yes, by position — which is right when there is genuinely no identifier and misleading when there is one, because any reordering then reads as a change.
Related tools
CSV Viewer
Open a CSV as a sortable, filterable table and see which rows are malformed.
CSV Validator
Check a CSV for ragged rows, duplicate headers and structural problems before importing it.
JSON Diff
Compare two JSON documents structurally, ignoring key order and formatting.
Text Diff Checker
Compare two blocks of text line by line and highlight what was added, removed and unchanged.