CSV Diff Tool

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

Free online CSV diff tool. Upload or paste two CSV files, pick a key column, and instantly see which rows were added, removed or changed cell-by-cell. Export the diff. Runs entirely in your browser — nothing is uploaded. It runs free in your browser on Gera Tools, with nothing uploaded.

Last updated Source: Gera Tools

How does the CSV diff tool match rows between two files?

It matches rows by the key column you select. Each row in the original file is paired with the row in the updated file that shares the same key value. Rows whose key only appears in the updated file are reported as added, rows whose key only appears in the original are reported as removed, and matched rows with differing cells are reported as changed.

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.