CSV Compare Online
Find added, removed, and modified rows between two CSV files
Upload two CSV files — or paste contents directly. The tool auto-detects the delimiter, headers, and shows you the differences: added, removed, and modified rows. In "by key" mode you pick an identifier column (like id or email), and rows are matched across files even if the order differs. In "row-by-row" mode comparison is done line by line. All computation happens locally in your browser — files never leave your device.
Features
- Two matching modes: by key column or row-by-row — toggle with one click.
- Auto-detection of delimiter (comma, semicolon, tab, pipe) and encoding.
- Changed cells are highlighted inline — no guessing what is different.
- One-click filters: only added, only removed, only modified rows.
- Full-text search inside results — quickly find a specific value.
- Column ignore: exclude service fields like updated_at or id from comparison.
- Drag & drop, file picker, or paste — upload CSV however you want.
- Handles large files (up to ~50 MB) — parsing runs in a Web Worker without blocking the UI.
- Fully client-side: data never leaves your browser — safe for sensitive exports.
- Stats: how many rows were added, removed, modified — and which columns change most often.
How to compare two CSVs
- Upload the first file into panel A — drag & drop, pick a file, or paste.
- Upload the second file into panel B the same way.
- Pick the mode: "by key column" if row order differs, or "row by row" for a per-file diff.
- In "by key" mode, select key columns (usually id or email) and, optionally, columns to ignore.
- Click "Compare" — results appear below: summary, full diff, and filtered tabs.
- Use search and filter tabs to focus on the changes that matter.
Where CSV comparison helps
- Database exports — diff two snapshots of a table before and after a migration or job run.
- Data import validation — find rows that failed to load or changed unexpectedly.
- Analytics and reports — spot changes in user, order, or metric exports between periods.
- Reference data diffs — find new, removed, and updated entries between dictionary versions.
- Dedup and cleanup — find divergence between copies of the same dataset.
- QA and testing — compare expected vs actual CSV export output.
- Localization — diff two translation CSVs to catch missing or changed keys.
How CSV comparison works here
In "by key" mode the tool builds an index over the chosen columns for both files, then in a single pass finds added, removed, and modified records. For each modified record, cell values are diffed character-by-character and differences are highlighted inline. In "row by row" mode comparison is linear: row by row, no key involved. CSV parsing runs via the PapaParse library in a dedicated Web Worker so large files do not freeze the UI. All computation stays in your browser — files never touch a server.
FAQ
Are my CSV files sent to a server?
No. Parsing and diffing run entirely in your browser via JavaScript. Files never leave your device — it is safe to work with sensitive exports, user data, or financial reports.
What is the maximum file size?
In practice the tool handles files up to 50 MB smoothly. Parsing larger files can slow down — the limit is set by browser memory, not by this tool.
How does "by key" mode differ from "row by row"?
"By key" matches rows via a selected identifier column (e.g. id) regardless of order — this finds added and removed records correctly. "Row by row" compares row 1 of A with row 1 of B, and so on. The first mode is for DB exports; the second is for pre-sorted files.
What if files have different delimiters or encodings?
The tool auto-detects delimiter (comma, semicolon, tab, pipe) and encoding via PapaParse. If auto-detection fails, pick the delimiter manually in settings.
Can I ignore certain columns during comparison?
Yes. The settings include an "Ignore columns" multi-select — pick fields like updated_at, created_at, or anything else that should not affect the result. Rows that differ only in ignored columns fall into "unchanged".
Is a composite key supported?
Yes. If one column is not enough to uniquely identify a record — for example a composite (user_id, date) key — select multiple columns in "Key columns". The tool will use their combination as the key.
The online CSV compare tool helps you quickly find the differences between two data exports. It handles tables with millions of cells right in your browser, supports drag & drop, file picking, and content paste. Auto-detection of delimiter and encoding removes the need for manual setup — just drop two files and click "Compare".
The tool supports two matching modes: by key column for comparing records whose row order differs, and row-by-row for files with an identical structure. In "by key" mode you can define a composite key from multiple columns — useful for datasets with compound identifiers. Service columns (updated_at, created_at) can be excluded from the comparison.
All computation runs locally in your browser via PapaParse and Web Workers. Files are never sent to a server — safe for sensitive data, commercial exports, and user PII. The tool is free, requires no sign-up, and is available in English and Russian.