A CSV diff helps you find the records that changed between two spreadsheet exports without confusing a different row order with a different value. This checker matches rows by one unique identifier, such as an order ID or SKU, then reports additions, removals and changed cells. Choose the original file first and the revised file second, enter the matching column name, and review the downloadable differences. Both files are compared in your browser; the CSV diff tool does not merge or overwrite either source.
How to run a CSV diff by ID or SKU
- Use the file chooser to select exactly two CSV files in the order you want to compare them: original first, updated second.
- Enter the exact header name in Unique key column. The initial value is
id; change it if your export usesskuor another identifier. - Select Process files. For a harmless demonstration, select Try an example instead.
- Read the result table and download
differences.csvwhen you need an audit trail.
The files must contain the same column names in the same order. This implementation compares comma-delimited text files, not Excel workbook sheets. Save each sheet as CSV before choosing it.
What counts as an added, removed or changed record?
A key that appears only in the second file is added. A key found only in the first file is removed. When a key exists in both files, the checker compares each field and writes a separate changed entry for every unequal value. The report columns are key, change, column, before and after.
Moving an unchanged record from the top of a spreadsheet to the bottom does not create a difference. Conversely, changing Blue to blue does: matching is exact, including capitalization and spaces. This makes the result reproducible, but you should decide whether formatting differences are meaningful before treating them as business changes.
Worked example: a renamed contact
The built-in example uses the following original file:
id,name
1,Ana
2,Bo
Its second file changes the value for ID 2 to Bobby. The report shows one changed field: key 2, column name, before Bo, after Bobby. Ana remains unchanged and is not listed as a difference. If you add 3,Chao to the revised export, the new key is an added record rather than a modification to Bo.
Use a small synthetic pair like this to confirm that you selected the intended file order. Reversing the files reverses added and removed classifications and swaps the before/after values.

Choosing a reliable matching column
A good key identifies exactly one record in each file and stays stable between exports. Customer numbers, product IDs and transaction IDs usually work better than display names. Two customers can share a name; a renamed product may retain its SKU. The checker rejects empty or duplicate keys rather than guessing which rows belong together.
Composite-key matching is not available here. If your data is uniquely identified by several fields, prepare one stable combined identifier in the source spreadsheet and include it in both exports. Check that your joining convention cannot produce collisions. Do not select a changing field, such as price, as the key when your aim is to detect price changes.
Prepare exports and interpret the download safely
Keep the header row, preserve quoted commas inside fields, and avoid saving a numeric-looking ID in a way that removes its leading zeroes. A CSV comparison cannot reconstruct zeroes that the spreadsheet already discarded. If names contain broken accents, fix the source bytes with the CSV encoding converter before comparing the corrected exports.
The download is a differences report, not a complete replacement dataset. Added and removed records appear as serialized row values, while modifications identify individual fields. Formula-looking report text is prefixed for safer spreadsheet opening; account for that protective prefix if a later script compares the exported text byte for byte. Sensitive customer data still deserves appropriate access controls after you save the report.
When this comparison is useful, and when it is insufficient
Use this CSV diff tool to review a product-catalog update, check whether a data migration changed contact names, or compare a repeat export from the same system. It is particularly useful when sorting differs but the schema and identifiers remain stable. It does not reconcile differently named columns, ignore selected fields, trim whitespace or apply numeric tolerances.
For statement data still in a bank exchange format, first use the OFX to CSV converter to obtain ordinary transaction rows. For a shopping feed, a clean comparison says what changed; the Google Merchant feed preflight checks a separate set of common formatting issues. Neither result proves that an upstream database or a receiving platform accepted the changes.
Troubleshooting an empty or rejected result
An empty difference table can mean that both inputs contain identical values even if their rows are shuffled. A header error means the schema differs; put the columns into matching order before retrying. A duplicate-key error requires correcting the source identifier rather than repeatedly running the same files. If you selected one file twice, choose both versions again.
The file-size limit displayed by this page also applies to this comparison, and browser memory limits still matter. Split oversized exports by a consistent key range, keeping corresponding ranges together. Finish by checking the report against a few original records and use Clear files and results on a shared device.
Common CSV diff tool errors and how to fix them
When the CSV diff tool cannot use a file, it stops with one clear message instead of producing a half-finished download. These are the problems people run into most often, with the fix for each. Most CSV diff tool errors trace back to how the source file was exported, so correcting the source and running the CSV diff tool again is usually faster than working around the message.
- Choose exactly two files for comparison. Select the old and the new export together.
- The CSV files must use identical ordered headers. Both files need the same columns in the same order. Reorder or rename columns in one export first.
- A required field or column is missing. The Unique key column you entered (id by default) is not in the header. Type the exact header name, such as sku.
- Keys must be present and unique. Review duplicate keys before exporting. A row has an empty key, or the same key appears twice in one file.
- Duplicate CSV column names. Two header cells have the same name, so values cannot be matched reliably.
Privacy: the CSV diff tool runs in your browser
CSV diff tool processing happens with JavaScript in a background worker on this page. Your file is not uploaded to a FileFix server, and the results you download are created in your browser’s memory. Bank and payment files contain account numbers and amounts, so keeping them off third-party servers matters. When you finish with the CSV diff tool on a shared computer, clear the selection or close the tab.
For the underlying format rules, see the RFC 4180 (CSV). The CSV diff tool follows the subset described on this page rather than every optional feature in those documents.
Sources
Questions about this tool
Can a CSV diff ignore rows that moved?
Yes. Rows are matched by the unique key column, so a change in row order alone does not create a difference.
Why are duplicate IDs rejected?
A repeated key can represent several possible matches. This checker stops instead of silently selecting the first record and potentially hiding a change.
Do column names and order have to match?
Yes. Both files need identical ordered headers. This tool does not align renamed or rearranged columns automatically.
Does differences.csv replace my original spreadsheet?
No. It is an audit report of added, removed and changed values. The original files remain untouched.
Does comparison ignore spaces or letter case?
No. Values are compared exactly, so spacing and capitalization can produce changed-field entries.
Review the supported formats and limitations before using an output file. File processing happens in your browser.