Match rows by key, not by position
The reason a text diff is useless on CSV exports is that rows move. Sort the
export differently, insert one record near the top, or delete a row in the
middle, and a line-based comparison marks everything below as changed. Pick a
key column — an id, a SKU, an email address — and this tool matches rows
by that value wherever each one sits in the file. A row that moved from line 4
to line 40 is not a change; a row whose price went from 0.50 to
0.55 is, and that is the cell you see highlighted.
If your data has no natural key, switch the selector to (row number) and rows are paired by position instead — deliberately simple, and appropriate when the two files really are meant to line up row for row.
New columns don't make every row "changed"
This is the detail most CSV comparison tools get wrong. When the second file adds a column, every single row technically has a cell it did not have before — so a naïve comparison reports the entire file as modified and the report is worthless. Column additions and removals are reported once, at the top, and cells belonging to those columns never make a row count as changed. A row with identical shared values is unchanged, even if it picked up a new column.
Quoted fields, delimiters, and other CSV realities
The parser follows RFC 4180 properly, which means fields wrapped in quotes
can contain commas, doubled quotes ("" for a literal quote), and
even embedded newlines without breaking the row structure. Delimiter detection
is automatic — comma, semicolon, and tab-separated files all work, which
matters because European locales export semicolon-delimited CSV by default —
and you can force a specific delimiter if a file's first line fools the
guess.
Cells compare as text, exactly as they appear in the file. That means
1.0 and 1 are reported as different, as are
2024-01-05 and 01/05/2024. This is deliberate: a
CSV file has no type information, so guessing that two spellings mean the same
number would hide genuine formatting changes that often matter more than the
values themselves.
Nothing leaves your browser
CSV exports are usually the most sensitive files anyone handles — customer lists, transaction records, payroll. Both files are parsed and compared locally, nothing is uploaded, and nothing is written to the URL.
Related tools: the JSON, YAML, and XML diff tools for structured formats, and the text diff for raw line-by-line comparison.