Compare Spreadsheets
Compare two versions of an Excel or CSV file and see the added, removed and changed rows and cells. Runs in your browser with no upload.
Loading the tool…
User reviews
No reviews yet. If you’ve used this tool, be the first to leave one.
Compare Spreadsheets: complete guide
Walk through the steps and examples, or jump straight to the topic you need.
At a glance
- Input
- Add one Excel (xlsx) or CSV file each for the Before and After versions. Up to 20 MB per file, and up to 100,000 rows and 200 columns are read.
- Pairing
- If you choose a key column (employee ID, product code and so on), rows are paired by that value. If you don't, rows are matched by their content.
- Matching columns
- Columns are matched by header name too, so a file with a different column order is compared column to matching column.
- Defaults
- Ignore leading/trailing spaces is on and Ignore case is off. Unchanged rows are hidden.
- Result
- Counts Changed, Added, Removed and Unchanged rows, and shows the before and after value for each changed cell. The screen shows up to 30 rows, and changes.csv contains all of them.
How to use Compare Spreadsheets
Add the two versions
Add one file on the left (Before) and one on the right (After). For an xlsx file, choose the sheet to compare.
Choose a key column
In Key column for matching, choose a column with a different value in every row. Only columns that exist in both files appear in the list.
Set the comparison options
Turn Ignore leading/trailing spaces and Ignore case on or off as needed. If you turn off Hide unchanged rows, identical rows are shown too.
Check what changed and save
Check the Changed, Added and Removed counts at the top and the change in each cell, then use Save as CSV to get the status and the before and after values.
What it’s good for
Insert one row and everything after it turns red
If you compare row by row from the top, a single new row in the middle pushes every row below it down by one. The screen fills with changes, and the one row that really changed gets buried. This tool looks at row contents and counts only the inserted and deleted rows as such, so the rest stay in place.
With a key column, a completely reordered list is fine
If you choose a column with a different value in every row, like an employee ID or a product code, rows are paired by that value. Even a file saved with a different sort order is compared row to matching row. If key values repeat, though, there is no way to decide which row to pair with, so the tool says so openly and points out the repeated values first.
It shows which cell changed from what to what
In a changed row, only the cells that really differ are picked out and shown with the before and after values side by side. The other cells only fill the screen. Columns are matched by name too, so even if the column order changed, the name column and the phone column are never compared by mistake.
Worked examples
Pairing by a key column
Before: Employee ID · Name · Department / A01 Sales, A02 Engineering, A03 Planning
After: Name · Employee ID · Department / A03 Planning, A04 Sales, A01 Marketing
Key column: Employee IDChanged 1 · Added 1 · Removed 1 · Unchanged 1
A01 Department: Sales → MarketingComparing the same files without a key
The two files above · Key column: noneChanged 3 · Added 0 · Removed 0 · Unchanged 0A table with one row inserted in the middle
Before: Apple 1000, Pear 2000, Tangerine 500
After: Apple 1000, Grape 3000, Pear 2000, Tangerine 500
Key column: noneChanged 0 · Added 1 · Removed 0 · Unchanged 3Choosing how to pair rows
Swipe the table sideways to see the rest.
| Method | Good for | What to check |
|---|---|---|
| Choose a key column | Tables with a different value in every row, like an employee ID or product code | If values repeat, a warning appears and the result can't be trusted. |
| None | Changes limited to inserted or deleted rows | A row whose values changed a lot can show as removed plus added. |
| Ignore case | Tables where only the letter case of English codes changed | When on, ABC and abc count as the same value. |
When the result isn’t what you expected
It says key values repeat
If you see a message like "Key value A01 appears more than once", the same value is in two or more rows. Choose a different key column, or clean up the repeated rows in the source.
The column I want isn't in the key list
Only columns with the same name in both files can be used as a key. If a header name differs on one side, fix it and add the file again.
Everything is Changed because of a column that exists on one side only
Columns are matched by name, and the side that doesn't have one is treated as empty. If a new column has values, those rows show as changed.
Key terms
- Key column
- A column with only one value per row. It becomes the reference for finding the same row in both versions.
- Matching by row content
- A method used when there is no key. It uses the rows that remain identical in both versions as a reference to find inserted and deleted rows.
- Changed
- A state where, in two paired rows, even one cell has a different value.
Compare Spreadsheets FAQ
Everything shows as different because of spaces added when pasting from Excel
Differences in leading and trailing spaces are ignored by default. If you want an exact comparison including spaces, turn off Ignore leading/trailing spaces. You can also turn on Ignore case.
What happens if I don't choose a key column?
Rows are matched by their content. It works well in most cases, but a row whose values changed a lot can look like one removed row and one added row. If there is a column like an employee ID, choosing it is more accurate.
Can I send the result to someone else?
You can save it as a CSV that contains the status and the before and after values. It opens directly in Excel.
Is my file uploaded to a server?
No. The files are opened and processed only inside this browser.
What happens to a file that was only re-sorted and saved?
If you choose a key column, the same rows are compared regardless of order, so everything shows as unchanged. Without a key, rows can show as changed.
Can it compare a very large table?
It reads up to 100,000 rows. Without a key, if the number of rows in the two versions multiplied together exceeds 4 million, it compares by position, so for a large table choosing a key column is more accurate.