The CSV Diff Tool compares two versions of a CSV file and tells you exactly what changed: which rows were added, which were removed, and which were changed cell-by-cell. Instead of squinting at two spreadsheets side by side or writing a one-off script, you paste or upload both files, pick the column that uniquely identifies a row, and get a structured, exportable diff in a fraction of a second. It is built for data analysts reconciling exports, engineers reviewing a database dump before and after a migration, marketers comparing two contact lists, and anyone who needs to know precisely how a dataset evolved between two snapshots.
Everything runs 100% in your browser using the battle-tested papaparse library. No file is ever uploaded, which makes the tool safe for customer lists, financial extracts and any other data you would not want to send to a third-party server.
How it works
You provide two CSVs — an original (before) and an updated (after). The tool
parses both with full header detection, then asks you to choose a key column: the
field that uniquely identifies each row, such as id, email or sku. Using that key,
it builds an index of every row in each file and walks through them:
- A key present only in the updated file is an added row.
- A key present only in the original file is a removed row.
- A key present in both, but with one or more differing cell values, is a changed row — and the tool lists each changed cell with its before and after values.
- A key present in both with identical values is counted as unchanged.
You can refine the comparison without touching your data: ignore specific columns
(handy for volatile fields like updated_at), trim whitespace so a trailing space is
not treated as a real edit, and ignore case so Active and active match. The tool
also warns you when a key value is duplicated, because duplicate keys make any
row-matching diff ambiguous.
Example
Suppose your before.csv lists four customers keyed by id, and after.csv reflects a
month of activity. Customer 1 upgraded from the Pro plan to the Team plan, customer 3
churned and no longer appears, and a new customer 5 signed up. Selecting id as the key
column produces:
| Result | Count | Detail |
|---|---|---|
| Added | 1 | id 5 — Margaret Hamilton |
| Removed | 1 | id 3 — Grace Hopper |
| Changed | 1 | id 1 — plan Pro -> Team, mrr 49 -> 199 |
| Unchanged | 1 | id 2 |
Click Export diff CSV and you get a single file with a _change column plus
plan: Pro -> Team style annotations on every edited cell, ready to drop into a report
or hand back to a colleague. Prefer a human-readable summary? Export report produces a
Markdown file listing each changed row and its modified fields. None of your numbers,
names or emails ever leave the page.