Skip to content
M2TOOLKIT

Developer · free tool

CSV CompareFind Differences Between Two CSV Files

Compare two versions of a spreadsheet export and see exactly which records changed, which were added and which were removed — down to the cell.

Use it as often as you like — it's free, with no sign-up and no limits.

  • Developer
  • Free
  • No sign-up
  • Runs in your browser
  • Updated

Paste, type, or drop a file here

Paste, type, or drop a file here

Match rows

Comparison

Paste or drop two CSV or TSV files. Rows are matched by an ID column when there is one.

Want to inspect one file as a sortable table? Open it in the CSV Viewer. For plain text files, use the Diff Checker.

Everything you type is processed in your browser. Nothing you enter is sent to our servers or stored by us.

How to use the CSV Compare

  1. Paste or drop the original CSV on the left and the new CSV on the right. The delimiter is detected for each file.
  2. Pick the column that identifies a record — an ID, email or SKU. A unique column is suggested automatically.
  3. Optionally ignore columns that always change, such as a last-updated timestamp.
  4. Filter the results to changed, added or removed rows, then download the changes or the full report as CSV.

What does this tool do?

A line-by-line text diff is the wrong tool for spreadsheets: sort the file differently or add a column and every line changes. CSV Compare reads both files as tables — quoted fields, commas inside quotes and line breaks inside cells are handled properly — and then compares records, not lines.

When you choose a key column, rows are matched by that key wherever they are in the file, so sorting doesn't matter. Several key columns can be combined (for example order_id + line_no). Columns are matched by header name, so reordering columns isn't a difference either; columns that exist in only one file are shown and labelled, but not compared. Without a key, rows are compared by position.

Real data is messy, and the tool tells you what it did: duplicate keys are paired in the order they appear and reported, rows with missing or extra fields are padded with empty cells and counted, and the “How rows were matched” box explains every rule that was applied.

Why use it?

  • Matches records by key, so row order doesn't create false differences.
  • Cell-level highlights: old value → new value.
  • Handles quoted fields, TSV, semicolons and pipes.
  • Exports a changes-only or full CSV report you can open in Excel.

Use cases

  • See which products, prices or stock levels changed between two catalogue exports.
  • Reconcile a CRM or mailing-list export against last month's.
  • Check what a data-cleaning script or Excel macro actually changed.

Example

Comparing two customer exports matched on customer_id (load them with “Try an example”):

Statuscustomer_idWhat changed
Changed1002plan: Starter → Pro, seats: 1 → 2
Changed1003email: li.chen@example.com → li.chen@example.org
Removed1004Dara Singh is not in the new file
Added1005Eva Novak is new
Unchanged1001Same values, although the row moved

Common mistakes

  • Comparing by position when the files are sorted differently — every row looks changed. Choose a key column instead.
  • Picking a key that isn't unique, such as a name or city. The tool will still pair duplicates in order, but a true ID is more reliable.

Accuracy and limits

  • Values are compared as text, so 1.0 and 1 or 2026-10-01 and 01/10/2026 count as different. Tick “Ignore spaces” and “Ignore upper/lower case” for looser matching.
  • Excel files (.xlsx) need to be saved as CSV first.
  • Large files of tens of thousands of rows work well; everything runs in your browser and nothing is uploaded.

Privacy

Everything you type is processed in your browser. Nothing you enter is sent to our servers or stored by us. There's no account to create and nothing to install.

Frequently asked questions

Do both files need the same columns?

No. Columns are matched by name. Columns that exist in only one file are shown with a label and left out of the comparison.

What if my file has no header row?

Untick “First row is a header”. Columns are then named Column 1, Column 2… and matched by position.

Can I compare by more than one column?

Yes. Select several key columns to build a combined key, for example order ID plus line number.

What do duplicate keys do?

The first occurrence in the original file is paired with the first occurrence in the new file, the second with the second, and so on. The tool lists which keys were duplicated.

Last reviewed by the M2Toolkit team.

Other tools people use alongside the csv compare.