CSV Diff Tool

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

Ad placeholder (leaderboard)
Enjoying the tools? Go Pro for £4.99 (one-time) and remove all ads — forever, on this device. Remove ads — £4.99

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:

ResultCountDetail
Added1id 5 — Margaret Hamilton
Removed1id 3 — Grace Hopper
Changed1id 1 — plan Pro -> Team, mrr 49 -> 199
Unchanged1id 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.

Ad placeholder (rectangle)