Free · No upload · No account
An Excel diff that reads the workbook, not the zip
An .xlsx is a zip of XML, so text-diffing it buries you in reordered strings and shuffled styles. SheetDelta reads the spreadsheet itself — aligning rows, reading formulas as logic, filtering save-noise.
Diff two workbooks in your browser
Drop an old file and a new one. The diff runs locally — nothing is uploaded.
Old / Base file
.xlsx .xlsm .xls .xlsb
or click to browse
New / Modified file
.xlsx .xlsm .xls .xlsb
or click to browse
Why git diff on an .xlsx is useless
Rename an .xlsx to .zip and open it: you’ll find a tree of XML files. The cells live in one part, the strings in another, the styles and the calculation chain in others. Excel regenerates much of that on every save, even when you changed a single number.
So if you unzip and text-diff two versions, here’s the kind of thing you get back:
$ unzip new.xlsx -d new/
$ git diff --no-index old/ new/
xl/sharedStrings.xml | 4180 ++++++++++++++++-------------------
xl/worksheets/sheet1.xml | 2932 +++++++++++++--------------
xl/calcChain.xml | 611 +++---
xl/styles.xml | 140 +-
...thousands of lines, and not one of them tells you
the discount rate changed from 8% to 9%.
The signal you wanted is in there somewhere, drowned under thousands of lines of reordered
shared strings and renumbered styles. A workbook-aware diff throws that noise away and tells
you the one thing you asked: the discount rate in
Assumptions!B12 went from 8% to 9%.
What a workbook-aware diff does instead
Reads the workbook, not the zip
SheetDelta parses the spreadsheet model — sheets, cells, formulas — instead of diffing the raw XML inside the .xlsx archive.
Aligns rows and sheets
Detects inserted and deleted rows and moved sheets, so structural edits show as one change instead of cascading through everything below.
Formulas compared as logic
On desktop and the platform, formulas diff at the AST level, so a reference that shifted is a real change even when the text looks similar.
Save-noise filtered out
Shared-string reordering, calcChain churn, and style renumbering are exactly the kind of cosmetic edits a workbook diff should ignore — and does.
Made for review, not just detection
The output is a readable list of what changed in plain terms, the form you’d actually paste into a review or a pull request.
Local and free to start
The browser tool reads both files on your machine with WebAssembly — no upload, no account, no install.
If you got here from a code review
Plenty of teams keep an .xlsx in the repo — a pricing sheet, a config matrix, a fixtures workbook — and every change lands as an unreviewable binary blob. Reviewers approve it because they can’t see inside it, which is the opposite of what review is for.
SheetDelta’s CLI and GitHub Action wire a readable workbook diff into the place you already work: the terminal, the pull request, and CI. Approvers see the changed cells and formulas in the diff, the same way they’d review a code change. The browser tool here is the quick, no-setup way to see the same thing for two files on your desk.
Frequently asked questions
Why not just unzip the .xlsx and text-diff the XML?
Does it diff formulas and VBA, or only values?
Can I run an Excel diff in Git, a PR, or CI?
git diff, pull-request comments, and CI. See Git diff for Excel for setup. Is it online or offline, and is it free?
What formats does the diff handle?
Does SheetDelta merge or branch workbooks like Git does for code?
Want Excel diffs in every pull request?
The CLI and GitHub Action post a readable workbook diff on each change, so reviewers stop rubber-stamping binary blobs.