Compare two versions of a price list export to see which prices changed.
This tool runs entirely as JavaScript in your browser. both CSV files you load is never transmitted over the network to this site's server or any third party, and is never written to a cookie, to browser storage, or to any log — there is nothing on our end to breach, subpoena, or accidentally leak, because it was never received in the first place. Closing or refreshing this tab clears it completely.
This describes only what this specific tool does with what you type into it. It doesn't cover the rest of this site — see the Privacy Policy for how analytics and advertising cookies are handled elsewhere.
Load two CSV exports — an older one and a newer one — and see exactly which rows were added, which were removed, and which changed, down to the specific column that's different. This is different from a plain text diff (like this site's Diff Checker), which only compares line by line and has no idea that two files are really the same table with rows in a different order — a CSV diff needs to match rows by identity, not by position.
That's what the key column is for: pick whichever column uniquely identifies a row (an ID, an email, an order number) and rows are matched across both files by that value, regardless of what order they're in or whether rows were inserted or deleted in between. Once rows are matched, every other column is compared cell by cell, so a row that moved to a different position in the file but didn't actually change any values is correctly shown as unchanged, not as a false add-and-remove pair.
Useful for comparing two exports of the same data pulled a day (or a month) apart, checking what a script or import actually changed, or reviewing a data migration before trusting it. Nothing here touches a server — both files are parsed and compared entirely in your browser, and nothing is saved between visits.
If it compared purely by position, a single inserted or deleted row partway through the file would make every row after it look changed, even though nothing about them actually is. Matching by a unique key (like an ID) correctly follows each real-world row even if its position shifted.
That’s fine — columns that exist in one file but not the other are still compared, and show up as a difference (going from a value to blank, or blank to a value) for any row that has one but not the other.
No — both files are parsed and compared entirely in your browser. Nothing is uploaded to a server.
Values are compared as text after parsing, so 500 and 500.0 would currently show as changed even though they represent the same number — worth knowing if your export tool is inconsistent about number formatting between runs.
Yes — the delimiter (comma, tab, semicolon, or pipe) is detected automatically for each file, the same as the CSV SQL Query Tool.