Compare two CSVs
Find added, absent and changed rows. Private · No upload · No sign-up
Old CSV
New CSV
Files never leave your browser. Supports UTF-8 and UTF-16 text.
Match rows by
Choose a unique ID columnAdvanced settings Column mapping, formats & saved settings
All key normalisation options are off by default. Blank or duplicate keys are quarantined.
Diagnostics
Run the embedded parser and comparison tests.
How it works · Privacy · FAQ · Licence
How to use
- Choose your old and new CSV exports, or click Try sample.
- Confirm a key column such as customer ID. Add columns for a composite key.
- Review the column mapping and adjust comparisons when needed.
- Compare, inspect each bucket, and download the reports you need.
How the comparison works
Each input row is assigned to exactly one category: added, absent from new, changed, unchanged, duplicate key or blank key. If a key repeats on either side, rows with that key are quarantined on both sides. They are never paired automatically.
Compare modes are opt-in per column. The source-row equations are shown above and must balance before downloads are enabled.
Privacy
Comparison runs locally. This page contains no analytics, CDN requests, account system, server upload or storage write. It blocks programmatic network APIs. You can verify activity in your browser’s developer tools under Network (external link clicks are separate). Data and filenames are not written into the URL.
Limits
CSV/TSV and other supported delimited text only; not .xlsx. Files are limited to 100 MB each. There is no fuzzy matching, inferred locale or guessed date order. An “absent from new file” result alone does not prove deletion from another system. Column mappings are explicit; unmatched columns appear in the schema report. CSV exports prefix formula-like text with an apostrophe, but some spreadsheet programs may remove it on save/reopen. Treat reports containing untrusted text carefully.
FAQ
Are files uploaded?
No. The tool reads files inside your browser and has no network code for uploading them.
What should I use as a key?
Use a stable, unique, nonempty record ID. For example, invoice number plus a line-item ID. Confirm suggestions before comparing.
Why are some records quarantined?
Blank or repeated keys cannot be paired reliably. Correct the source data or choose a different key.
Can I compare numbers or dates?
Yes. Choose a numeric locale for each file or an explicit date format. Exact text is the default.
What do the row numbers mean?
They identify the physical source line on which a CSV record begins. Records containing quoted line breaks can span more than one line.
Changelog & licence
v1.0.0 — Local CSV comparison, explicit key matching, duplicate quarantine, column mapping, exports, reconciliation, and built-in tests.
MIT Licence — Copyright © 2026 AshenTheFox. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files, to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.