Skip to main content

Compare two Excel or CSV files

Analyze two tables side by side, identify added, removed, or changed rows, and export a detailed comparison report.

  • Batch processing
  • Export

Embed this widget

Customize the result, check the live preview, then copy the code.

Preview

Embed code type

Code to copy

Responsive and automatically resized by Bethemesh.

Your files are processed locally in your browser and are never sent to our servers.

Drop your file here

Recommended size: up to 40 MB

Comparison settings

Result

Was this tool useful?

How does this tool work?

Comparing spreadsheet versions helps identify added, removed or changed records without reading every line manually. This comparator uses one shared column as a key, then compares complete matched records. It produces a difference report rather than an Excel workbook with colored cells or comments. The first file is the earlier state and the second is the newer state, determining the direction of additions and removals. Choose a stable key and inspect imported value types before interpreting the report.

Select exactly two CSV, TSV, XLSX, XLS or flat tabular JSON files. The drop zone permits up to 40 MiB per file; both tables and the report must fit browser memory. Only the first sheet of each workbook is used here. Styles, macros and active formulas are not compared. Displayed workbook values are read as text while scalar JSON types may remain distinct. Available keys are column names shared by both imported tables.

The selected key becomes text for matching, without trimming spaces or ignoring case. JSON numeric 1 and text 1 may match as keys but their complete records still differ by type. Empty or null keys also form a group rather than being skipped. With repeated keys, identical records match first, then remaining occurrences are paired. Extra occurrences become additions or removals. Records are not overwritten merely because the same key appears more than once.

Complete pairs are compared using field names and types, ignoring JSON property order. Spaces, case, missing columns and value differences remain significant. Unchanged rows are omitted. Added and removed records include their data with _status and _key; changed records contain JSON text in _before and _after. If a report field name already exists in the sources, a free suffix such as _status_2 preserves the original data. The same metadata name is used throughout the report. XLSX, CSV and JSON exports contain differences without cell-by-cell highlighting.

How to use this tool

  1. Define before and after

    Import both files and check the names shown under Previous version and New version. Swap them if necessary before comparing. Check the first worksheets and the value conventions of matching columns.

  2. Inspect the chosen key

    Prefer a stable identifier to an amount or changing label. Review empty and repeated keys; occurrence matching cannot determine business identity for you.

  3. Review representative differences

    Check an addition, removal and change against the sources. Read _before and _after before export; an empty report is not a general business validation.

Use cases

Check reference updates

Compare product lists using stable references to find new records, removals and property changes.

Inspect periodic exports

Review ticket or account extracts without mistaking a moved row for a content change.

Verify data preparation

Inspect changes after file correction while retaining both versions and a key with unchanged meaning.

Examples

One addition, removal and change

Key: id. Record 3 is added, 2 is removed and 1 changes. All three categories appear in the report.

Input

BEFORE
id;name
1;Ada
2;Mark
AFTER
id;name
1;Adele
3;Lea

Result

[
  {
    "id": "3",
    "name": "Lea",
    "_status": "added",
    "_key": "3"
  },
  {
    "id": "2",
    "name": "Mark",
    "_status": "removed",
    "_key": "2"
  },
  {
    "_status": "changed",
    "_key": "1",
    "_before": "{\"id\":\"1\",\"name\":\"Ada\"}",
    "_after": "{\"id\":\"1\",\"name\":\"Adele\"}"
  }
]

Repeated keys without lost rows

Key: id. A/20 matches its identical record first; A/10 is compared with A/30. One change appears without false additions or removals.

Input

BEFORE
id;value
A;10
A;20
AFTER
id;value
A;20
A;30

Result

[
  {
    "_status": "changed",
    "_key": "A",
    "_before": "{\"id\":\"A\",\"value\":\"10\"}",
    "_after": "{\"id\":\"A\",\"value\":\"30\"}"
  }
]

Tips and best practices

  • Normalize source values first if accidental spaces should be ignored. The comparator deliberately reports them rather than silently cleaning records during comparison.
  • Prefer a genuinely unique key when available. Exact-first matching avoids unnecessary differences with duplicates, but remaining pairing cannot replace reliable business identity for each record.
  • Keep both source files alongside the report. Unchanged records are omitted and report fields have their own structure, so the download alone cannot reconstruct both complete versions.

Frequently asked questions

Does moving a row count as a change?

Not when its key and content remain identical. Matching uses keys rather than positions, and JSON property order is ignored. A space, value type or extra column can still cause a difference even when the displayed values look similar.

What happens with repeated keys?

All occurrences are retained. Identical records match first, remaining occurrences are paired, and excess records become additions or removals. A unique key is still preferable when a change must be attributed to one particular business record.

Can key columns have different names?

Not here: one shared column name serves as the key for both files. Rename a heading first when necessary. The join tool supports different left and right keys but produces an enriched table instead of a change report.

Does the result contain colored Excel differences?

No. It is a table of differences with statuses and JSON before/after representations for changes. Workbook colors, styles and formulas are not compared. Use the report to inspect source values rather than treating it as an annotated original workbook.

Related tools

Tools similar or complementary to this one.

Similar tools

Compare two CSV files to quickly identify rows and values that differ between them.

Data & spreadsheetsUse this tool
GuideBest practicesIntermediate

Build a reproducible data-preparation workflow

Put cleaning, validation, filtering, merging, comparison and conversion in a sensible order, and learn when a reusable pipeline is better than isolated tools.

29 August 20262 min