Changing only row/column order is not a change
Input and settings
Old: id,value / 001,A / 002,B New: value,id / B,002 / A,001 / Key id
Expected result
Added 0; removed 0; changed 0; unchanged 2
Match old and new CSV rows by a key column and review added, removed and changed cells. Compare leading zeros and date formats as text.
Comma-separated, with headers in the first row. Each CSV: up to 2 MB, 10,000 data rows and 100 columns. Inputs are not saved or sent.
Copy and TXT use compact JSON. Changed rows include only changed values in columns order; added and removed rows include all values in headers order. Export is limited to 5 MB in UTF-8. If it exceeds the limit, counts and the first 200 changes remain visible, but copy and save are unavailable.
The example uses id as the key. For 001, name changes from Apple to Apples; 002 is removed and 003 is added. The result is 1 added, 1 removed and 1 changed row. Expand a changed row to see the old and new cell values.
001 and 1 are different keys. 2026/10/01 and 2026-10-01 are different values; neither is converted to a number or date. Case and spaces are significant. Row and column order changes are ignored.
Both inputs need the same header names and number of columns. Duplicate or empty headers and duplicate or empty keys stop comparison. A changed key is shown as a removed row and an added row.
The page shows the first 200 changed rows. Copy and TXT include all changes as JSON text. This tool does not edit the original CSVs or apply changes.
Match rows by a key to separate reordering from changes to cell values.
Example buttons replace the inputs and settings above and calculate. Restore previous input steps back one example at a time. After trying multiple examples, repeat restore to return to your original input. This history is lost when the page closes.
Old: id,value / 001,A / 002,B New: value,id / B,002 / A,001 / Key id
Added 0; removed 0; changed 0; unchanged 2
Old: 001→01, 002→B / New: 001→1, 003→C Key id
Added 1; removed 1; changed 1; unchanged 0
Rows match by the selected key, not line number. Columns match by header name, so reordering is ignored. Cells compare as strings: 01 versus 1, whitespace and date-format differences count. Empty or duplicate keys are rejected instead of matched ambiguously.
Use comma-delimited CSVs with the same header names. Each allows 2 MB, 10,000 data rows and 100 columns. Line endings, including inside quoted cells, normalize to LF. The screen shows the first 200 changes; copy/TXT includes all changes up to 5 MB. Restore returns original text and key selection; compare again for results. The existing clearing of file controls after loading is retained.
Verification: independent key maps give counts 0/0/0/2 and 1/1/1/0, with duplicate-key rejection. Browser checks compare original CSVs, loaded state, key and restoration after multiple examples.
Choose a stable, unique identifier such as a product ID or employee number. Composite keys across multiple columns are not supported.
Quoted commas and line breaks, and doubled quotes inside quoted cells, are supported. CRLF and CR are normalized to LF, including inside cells. The delimiter is always a comma.
XLSX files are not supported. Export CSV as UTF-8 first. Files are decoded as UTF-8 and invalid encodings produce an error. Processing stays in the browser; inputs, file names and results are not stored or sent.
Share only the tool name and public URL. Your input and results are not included.
Keep any content you need before clearing. This tool does not autosave inputs or results. Reloading or closing the page, clearing inputs or resetting may discard your work.
Favorites and language preferences are stored separately and may be lost when site data is cleared. Tool resets and site-data deletion do not delete files already downloaded to your device.