Gate2Home · Data tools

CSV Compare

Compare two CSV files online by ID or row order. See what changed and download a CSV diff report.

  1. 1. Inputs
  2. 2. Match rows
  3. 3. Differences

Add your two CSV datasets

CSV 1

No file chosen

Drop one CSV, TSV or TXT file here.

CSV 2

No file chosen

Drop one CSV, TSV or TXT file here.

Import options
No files handy?
More examples
Supported formats and limits

UTF-8 CSV or TSV text, not Excel workbooks. Each input: up to 1,000,000 UTF-16 units, 10,000 data records, 100 columns and 100,000 cells including headers. Files: up to 2 MiB. Headers: up to 256 units each. Each complete export: up to 8,000,000 units. Oversized or malformed data is rejected without truncation.

Quoted delimiters, doubled quotes and multiline cells are supported. Blank records are kept and must have the same field count. Delimiters are chosen in Import options; no automatic detection. Comparison runs in this page. Inputs are not saved when you reload.

How to compare two CSV files

  1. Add the two datasets. Choose files, drop one into each input, or paste CSV text. If the separator is not a comma, change it in Import options.
  2. Choose how rows match. Select an ID column such as SKU, or a combination of columns that identifies one record. Use row order when positions are what you want to compare.
  3. Review the differences. Switch between Changed, Added and Removed. Open a record to inspect its values, then download a CSV diff report or keep the structured JSON.

CSV diff examples

A CSV diff shows which records were added or removed and which cell values changed. These examples show the inputs and results from this tool. Load one to try the comparison yourself.

A product name changes

The ID stays the same, so these two rows describe the same record. The name is the cell that changed.

CSV 1
idname
1Tea
CSV 2
idname
1Coffee

Result when matching by id

1 changed · 0 added · 0 removed · 0 unchanged

  • id 1 · name: “Tea” → “Coffee”

Rows move, a price changes, and products come and go

Match by SKU to keep each product together when rows and columns move. A different position alone does not count as a changed cell.

CSV 1
skunameprice
A1Tea, green010.00
B2Coffee20
C3Cocoa30
CSV 2
priceskuname
21B2Coffee
010.00A1Tea, green
40D4Water

Result when matching by sku

1 changed · 1 added · 1 removed · 1 unchanged

  • sku B2 · price: “20” → “21”

Added in CSV 2: D4.

Removed from CSV 1: C3.

One column is removed and another is added

The region column disappears and status is added. A missing column is different from a cell that exists but is empty.

CSV 1
idnameregion
01AdaNorth
02SamSouth
CSV 2
idnamestatus
01Adaactive
02Samempty

Result when matching by id

2 changed · 0 added · 0 removed · 0 unchanged

  • id 01 · region: “North” → (column absent)
  • id 01 · status: (column absent) → “active”
  • id 02 · region: “South” → (column absent)
  • id 02 · status: (column absent) → (empty cell)

Columns added: status. Columns removed: region.

ID matching or row order?

Match records by a stable ID

Use an ID, SKU or another unique key when each row describes an item. The same item stays matched even after sorting the file. If an ID changes, it appears as a removal and an addition.

Compare the same row positions

Use row order when the first data row should match the first data row, and so on. An inserted or moved row can change many pairs. Only extra rows at the end count as added or removed.

Questions about CSV comparison

Do the CSV files need the same row or column order?

With ID matching, rows can be in any order. Columns are matched by their exact header names, so their order can also differ. Added and removed columns are listed separately, and their cells also appear as changed in each matched record. Without headers, columns are compared by their position.

What if an ID is missing or appears more than once?

The comparison stops at the first empty, whitespace-only or repeated key and identifies its record or records. Choose additional key columns to form a unique combination, correct the data, or explicitly choose row-order matching. The tool does not guess which duplicate row belongs with another.

Are 001 and 1, or 10.0 and 10, treated as equal?

No. Values and keys are compared as exact strings. Leading zeros, spaces, capitalization, number spelling and date formatting remain significant. CSV quotes are parsed as syntax, so a quoted value and the same unquoted value compare equally.

Can I compare Excel files, TSV files or semicolon-separated data?

Open UTF-8 CSV, TSV or TXT files, or paste their text. Choose comma, semicolon, tab or pipe in Import options for each input. XLS and XLSX workbooks are not supported; export the sheet as CSV UTF-8 first. Quoted delimiters, escaped quotes and multiline cells are supported.

Can I save all the differences?

Open “Export the complete report” below the results to download CSV, or copy/download JSON. CSV has one row for each changed, added or removed cell, plus column changes, with source record numbers and matching keys. Fields ending in _json use JSON notation to retain exact text and distinguish empty cells from missing values. JSON keeps the structured groups and summary counts. Exports include all differences within the stated limits, even when the preview shows only the first 20 records.