The problem: two exports, thousands of rows
A very common task looks like this: you have yesterday's export and today's export of the same dataset — a customer list, an inventory file, a report from a database — and you need to know exactly what changed. Which rows are new? Which were deleted? Which existing rows had a value edited?
Scanning thousands of rows by eye is impossible, and the two files often look nearly identical at a glance. The differences are hidden in a handful of cells somewhere in the middle. This is exactly the kind of problem a diff tool solves in seconds, but only if you prepare the files correctly first — otherwise you get a wall of false differences that tells you nothing.
Why a naive CSV comparison shows everything as changed
CSV comparison tools compare rows positionally: row 1 against row 1, row 2 against row 2, and so on. This works perfectly when both files are in the same order — but breaks completely when they are not.
If today's export is sorted differently from yesterday's, or a single row was inserted near the top, every row below the change shifts down by one. The tool then compares each row against the wrong counterpart, and almost every row appears "changed." The data barely moved, but the diff is unreadable.
The fix is simple and it is the most important step in this whole process: sort both files by the same column before comparing. Ideally sort by a column that uniquely identifies each row — an ID, an email, a SKU. Once both files are sorted identically, matching rows line up and only genuine changes stand out.
Step-by-step: comparing two CSV files
1. Open both CSV files in a spreadsheet program (Excel, Google Sheets, LibreOffice Calc) or a text editor.
2. Sort both by the same unique key column, in the same direction (ascending). This is the step people skip — do not skip it.
3. Make sure both files have the same columns in the same order. If someone added or reordered a column, align them first, or the tool will show the shifted columns as changes.
4. Save both as CSV.
5. Open the Excel & CSV Difference Checker at freediffchecker.com/excel and upload the original on the left and the revised file on the right.
6. Read the result: green rows are new, red rows were removed, and amber cells were edited — hover to see the previous value.
Reading the three kinds of change
Added rows exist in the new file but not the old one — a new customer, a new line item. They appear highlighted as additions. If you sorted by a unique key, an added row slots into its correct position and is easy to spot.
Removed rows exist in the old file but not the new one — a deleted record. They appear as removals.
Edited rows exist in both files with the same key but a different value in one or more cells — a changed price, a corrected spelling, an updated status. These are the ones that matter most and are hardest to find by eye. A cell-level diff highlights the specific cell that changed, not the whole row, so you can see at a glance that only the "phone" column moved.
Handling files without a unique key
Sometimes a CSV has no reliable unique identifier — say, a log of events where several rows can look identical. Positional comparison still works, but you have to be more careful about ordering, because there is no key to sort by that guarantees a stable order.
In that situation, sort by as many columns as it takes to make the order deterministic (for example: date, then category, then amount). The goal is that if you sorted both files, identical rows always end up in the same position. If the data genuinely has duplicate rows and you only care about which distinct rows were added or removed, deduplicate both files first, then compare — that answers "what set of rows changed" rather than "which specific row moved."
CSV vs XLSX: which to compare
If your data lives in Excel workbooks, you can compare the XLSX files directly — the tool reads every sheet. But for pure row-and-column data, exporting both to CSV first often gives a cleaner result. CSV strips out formatting, formulas, and metadata, leaving only the values, so the diff reflects data changes rather than incidental formatting differences.
One caveat: CSV loses the distinction between, say, a number and text that looks like a number, and it flattens dates into whatever string format the export used. As long as both files were exported the same way, this is fine — they will be consistent with each other. Problems only arise when the two files were exported by different tools with different date or number formatting, in which case you will see spurious differences. When that happens, normalise the formatting in both files before comparing.