How to use the csv diff tool
- Paste the old CSV and the new CSV, each with a header row.
- Type the key column, the name of a column whose value is different in every row, such as an ID, an email address or a SKU.
- Choose whether to ignore spaces at the ends of cells and differences in capital letters.
- Read the counts and the table of differences: rows added, rows removed, and each changed cell with its before and after value.
Formula
Added = a key in the new CSV that is not in the old one
Removed = a key in the old CSV that is not in the new one
Changed cell = a column in both files whose value differs for a key in both
Unchanged row = a key in both files where every shared column matches
Rows are matched by key and not by position, so reordering rows is not a change. If a key repeats, only its first row is compared and the repeats are counted.
Two versions of a customer list
The old file has ids 1 to 4 and the new file has ids 1, 2, 3 and 5. Matching on id, row 4 (Dee Moss) is removed and row 5 (Eli Roy) is added. Among the rows in both files, id 1 has a balance that changed from 120.00 to 150.00 and id 3 has a city that changed from Chicago to Seattle. Row 2 is unchanged.
That makes 1 row added, 1 removed and 2 changed rows with 2 changed cells, so 4 differences in all, and 1 row unchanged. Columns compared are name, city and balance. A column that exists in only one file is listed separately and is not compared.
Why compare by key
A line-by-line text compare treats a re-sorted export as if every row changed. A key-based compare answers the question people really have: which records were added, which were removed and which values changed. It is the right tool for two exports of the same list taken on different days.
For plain text, use the Diff Checker, and to compare two lists of items without columns, try Compare Two Lists. If you need to combine the two files instead of comparing them, use the CSV Join Tool.
Getting reliable results
The key must be unique in each file. If a key appears twice, the tool compares only the first row and reports how many repeats it ignored. Dates and numbers are compared as text, so 1.0 and 1 count as a change, and so do 2026-01-05 and 01/05/2026. Make both files use the same format before you compare.
Turn on ignoring spaces and capital letters when the two files come from different systems that format text differently. Only the shared columns are compared, which lets you check an old export against a new one that gained a column.
Assumptions and limits
- Both files have a header row with unique column names, and the key column exists in both.
- Matching of column names ignores capital letters, but cell values are compared exactly unless you choose otherwise.
- Up to 100,000 rows per file are read, and the table shows the first 500 differences.
- Nothing is uploaded or stored.
Frequently asked questions
What should I use as the key?
Use a column that identifies a record and never repeats, such as an order number, an email address or an employee id. A name is risky since two people can share one.
Why does a number show as changed when it looks the same?
Cells are compared as text. A value of 1.0 is different text from 1, and so is 1,000 from 1000. Make both files use the same format, or turn on the options to ignore spaces and letter case.
What if the files have different columns?
Only columns that appear in both files are compared. The columns that appear in one file only are listed in the summary so you know they were left out.
Can I download the differences?
Yes. Use the CSV button to save every difference, including those beyond the first 500 rows shown on the page.