How to use the CSV Compare
- Paste or drop the original CSV on the left and the new CSV on the right. The delimiter is detected for each file.
- Pick the column that identifies a record — an ID, email or SKU. A unique column is suggested automatically.
- Optionally ignore columns that always change, such as a last-updated timestamp.
- 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”):
| Status | customer_id | What changed |
|---|---|---|
| Changed | 1002 | plan: Starter → Pro, seats: 1 → 2 |
| Changed | 1003 | email: li.chen@example.com → li.chen@example.org |
| Removed | 1004 | Dara Singh is not in the new file |
| Added | 1005 | Eva Novak is new |
| Unchanged | 1001 | Same 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.