CSV Diff Viewer
This tool compares two CSV files side by side and highlights every difference between them. Paste two CSV datasets, and the tool shows you which rows were added, removed, or changed, with cell-level highlighting so you can see exactly what moved. No data is uploaded to a server. Your spreadsheets, exports, and internal records stay on your device. The tool is free, requires no account, and works offline after the page loads.
CSV A (baseline)
CSV B (new version)
Compare columns
| Status | Key | id | name | status |
|---|---|---|---|---|
| changed | 2 | 2 | Robert | active |
| removed | 3 | 3 | Cara | pending |
| added | 4 | 4 | Dan | new |
CSV comparison runs in your browser. Files are read locally and are not uploaded to a server.
How this tool works
The CSV diff viewer compares two CSV files and categorizes each row as added, removed, modified, or unchanged. You designate one or more columns as the join key -- the column(s) that uniquely identify a row across both files (typically an ID or a composite natural key). The tool performs a full outer join on the key: rows present in File A but not File B are deleted; rows in File B but not File A are added; rows in both files where any non-key column differs are modified, with changed cells highlighted. Rows identical in both files are unchanged. A summary shows counts by change type. Output can be filtered to show only changed rows. Key assumption: join key values must be unique within each file. If the same key appears more than once in either file (duplicate keys), the comparison is undefined and the tool flags the duplication before proceeding. Edge case: column order differences between the two files do not affect the comparison -- columns are matched by name, not position. If a column exists in File A but not File B (or vice versa), the tool treats it as a schema change: all rows that would have a value for the missing column are shown with that column as an addition or deletion, clearly labeled as a structural difference rather than a data difference.
Worked example
You receive a nightly customer export and need to see who was added or updated. Match on email, filter to changes only, and download the diff CSV for your ticket.
Frequently asked questions
Is my CSV data sent to a server?
No. Both files are parsed and compared entirely in your browser using JavaScript. There is no upload, no network request, and no server-side processing. You can confirm this with your browser's DevTools Network tab.
Can I compare files with different column orders?
Yes, if you select a key column. The tool matches columns by header name, not by position. If File A has columns in the order \\\\\\\"name, email, phone\\\\\\\" and File B has \\\\\\\"email, name, phone,\\\\\\\" the tool still compares the correct columns against each other as long as the header names match.
What happens if the two files have different numbers of columns?
The tool detects added and removed columns. A column that appears in File B but not in File A is highlighted as a new column. A column in File A that is missing from File B is marked as removed. Cell comparisons only apply to columns that exist in both files.
Does it handle large files?
Files up to 10 MB (roughly 50,000 rows) compare in under three seconds in modern browsers. Very large files may cause the browser to slow down because the entire diff is rendered as an HTML table. For files over 50 MB, consider a command-line diff tool like csvdiff or diff with sorted inputs.
Can I export the diff results?
Yes. You can download the diff as a CSV file with an added \\\\\\\"status\\\\\\\" column indicating whether each row was added, removed, modified, or unchanged. You can also copy the diff summary to your clipboard.
What if my CSV files use different delimiters?
Each file's delimiter is detected independently. If File A uses commas and File B uses semicolons, the tool handles both correctly. You can also override the delimiter for each file manually.