CSV Diff
Compare two CSV files and see which rows were added, removed, or changed. Pick a key column and the tool pairs rows across the two files, highlighting the exact cells that differ. Your files never leave your browser.
Drop the LEFT CSV (before)
CSV, TSV · Max 2 GB
Drop the RIGHT CSV (after)
CSV, TSV · Max 2 GB
How to use CSV Diff
- 1
Drop the left (before) CSV
Drag the original CSV — the 'before' version — onto the left dropzone. It's parsed in your browser by PapaParse; nothing is uploaded.
- 2
Drop the right (after) CSV
Drag the updated CSV onto the right dropzone. The tool only starts comparing once both files are loaded.
- 3
Pick a key column
Choose the column that uniquely identifies a row (e.g. id, email, sku). Rows are paired by this key across the two files. If no natural key exists, pick 'whole row' to compare on exact match.
- 4
Review added / removed / changed
The summary cards show counts for each category. Click one to filter the table. Changed rows show the old value struck through and the new value beneath it, highlighted cell by cell.
- 5
Download the diff CSV
Click Download diff CSV to save every non-unchanged row with a __status column marking it as added, removed, or changed. Handy for PR reviews, data migrations, and pipeline sanity checks.
Frequently asked questions
- Does this tool upload my CSVs?
- No. Every parse, transform, and download runs entirely in your browser using JavaScript and Web Workers. The file never leaves your device — there is no upload endpoint and no server-side processing.
- How are rows paired across the two files?
- By the key column you pick. Rows with the same key in both files are compared cell by cell — any cell that differs puts the row in the Changed bucket. Rows present in only one file are Added or Removed accordingly. 'Whole row' mode treats every column as part of the key and matches exactly.
- What if my key column has duplicates?
- The first occurrence of each key in each file wins — later duplicates are ignored for the diff. Run CSV Deduplicator first if that's not what you want, or pick a composite key by concatenating columns ahead of time.
- What counts as 'changed' for cell comparisons?
- Values are compared after treating null, undefined, and empty string as equivalent (so a blank cell doesn't count as changed versus a missing one). Everything else is compared with strict equality after PapaParse's dynamic type coercion — numbers match numbers, strings match strings.
- How big a CSV can it diff?
- MakeMyStats uses streaming parsers (PapaParse worker mode for CSV, SheetJS for Excel) and virtualized rendering (react-window) so the UI stays responsive on multi-hundred-megabyte files. The hard ceiling is your browser's memory budget — usually 1–2 GB on desktop.
Related tools
View and explore CSV files with sorting, filtering, and column type detection. Handles 100k+ rows.
Merge multiple CSV files by stacking rows, joining on a key column, or concatenating columns.
Remove duplicate rows from a CSV. Pick which columns to compare and what to keep.