FREE LOCAL DATA TOOL

Compare Two CSV Files by Key: Added, Removed and Changed Rows

Check the next order, product or database export against the previous one. Match by ID instead of row position, choose the fields to compare and download a before/after report. Try the worked order example without preparing files.

No account · Files stay in your browser · Working example included
Other CSV tools

See the order-export comparison with synthetic data, or start with your own files. The example runs locally and replaces the inputs below.

1. Add the two exports

UTF-8 · header plus data rows · up to 5 MiB. Files are read in this browser, without uploading.

UTF-8 · header plus data rows · up to 5 MiB. Files are read in this browser, without uploading.

2. Review keys and fields

Earlier: 7 records · Later: 5 records. Check that the key identifies the same item in both exports before comparing.

Unique key column pairs

Multiple pairs form one composite key. Each nonblank key must be unique within its table. Review the suggested mappings before comparing.

Fields to compare

Only selected fields determine changed versus unchanged. No selected fields means a key-membership comparison. Values are compared exactly.

Key matching options

Exact key matching is the default. Normalization affects matching only; raw keys and field values remain in the report. Any empty key component is unresolved. Duplicate keys in either table make all associated rows on both sides unresolved. Text IDs such as 0 and 001 stay distinct.

Reading a local file. Previous results have been cleared.
A REPRODUCIBLE ORDER EXPORT CHECK

The rows moved. What actually changed?

Use this when a new order, product or database export arrives and you need to check it against the previous one. A line-by-line diff can treat moved rows as changes. Here, you choose the identifying key and the fields that matter. The example matches order_id even though the second file changes both row order and column order.

Expected results from the built-in synthetic files
Order IDEarlier → laterResult
00102Total 85.00 → 90.001 changed key
00101Present → absent1 removed key
00105Absent → present1 added key
00103 and 0Same selected values2 unchanged keys
00104 and blankDuplicate or missing identity4 unresolved source records

Two earlier rows share 00104, so they and their one later match remain unresolved. One earlier row also has no ID. These four source records are listed individually; they are not four changed orders. The literal ID 0 is valid.

Use it for your next export

  1. Keep both originals. Use UTF-8 CSV/TSV, with a header row; XLSX input is not supported.
  2. Choose an ID that identifies one record, or map several columns as a composite key. Review every suggested column pair.
  3. Select the fields to compare. Only those fields determine changed versus unchanged; 12.50 and 12.5 differ as text.
  4. Resolve blank or duplicate keys before drawing conclusions. Review the full report before updating another system.

Limits: 5 MiB per input; 20,000 data records and 250,000 cells combined. This is an interactive file comparison, not a scheduled sync or an automatic repair. CSV reports cannot force Excel to keep IDs as text. Preserve a CSV report as text in XLSX ↗

Complete the task

  1. Load the before and after files. Select the correct separator for each source.
  2. Map a unique key and the fields to compare, including columns whose names or positions differ.
  3. Compare and download the complete report or a status-specific report. Review blank and duplicate keys before drawing conclusions.

Worked example

The worked order exports reorder both columns and rows. Order 00102 changes total from 85.00 to 90.00, 00101 is removed, 00105 is added and 00103 plus the literal ID 0 are unchanged. The two earlier 00104 records, their later match and a blank earlier key are four unresolved source records.

Method and limits

Comparison is based on the selected fields, not every cell automatically. Values compare as text: 12.50 differs from 12.5. Key normalization is optional and can create collisions. Ambiguous keys are never guessed or expanded into many-to-many rows. Combined inputs are limited to 20,000 records and 250,000 cells.

Only settings explicitly saved by you may persist. Input and results remain in page memory. Local file handling and privacy.