The revenue number changed between last month's report and this month's. Same workbook, different result. Something changed: a formula was updated, a filter was modified, or a data source connection was swapped. Nobody left a comment. Nobody sent an email. The workbook was just published over the previous version.
This is a scenario that every team using Tableau for anything business-critical will encounter. And Tableau has no native way to answer the question "what changed between version A and version B?"
To compare two Tableau workbooks, you have a few options, ranging from "technically possible but extremely tedious" to "purpose-built for this." Here's what each approach looks like and when to use it.
Why Tableau Doesn't Have Version Control
.twb files are XML, which means they can technically be stored in git. Some teams do this: commit the .twb every time it's published, and use git diff to see XML changes. The problem is that Tableau's XML is not designed for human readability. A minor formula change produces a diff that includes dozens of lines of changed attribute ordering, internal ID regeneration, and thumbnail image data.
Tableau Server has a version history feature, but it's limited to restoring previous versions: it doesn't show you what changed between them. Tableau Cloud is similar. TabCompare, Tableau's official CLI comparison tool, compares visual output across Server environments, not formula content. None of these answer "what calculation was modified?"
What a Useful Tableau Diff Should Show
A useful workbook diff needs to operate at the semantic level, comparing the fields, formulas, and structure, not at the XML byte level. Specifically, it should answer:
Calculated Fields
- โWhich fields were added in the new version
- โWhich fields were removed
- โWhich fields were modified, with a line-level formula diff showing exactly which lines changed
Parameters
- โAdded or removed parameters
- โChanged default values, allowed ranges, or domain types
Data Sources
- โNew or removed connections
- โChanged server URLs or database/schema references
- โAdded or removed native fields
Sheets & Filters
- โNew, removed, or renamed sheets and dashboards
- โChanged filters: field, type, or included values
Why Line-Level Formula Diffs Matter
For modified fields, knowing "Profit Ratio was changed" isn't enough. You need to know which part of the formula changed. Consider a field like:
At the workbook level, "Profit Ratio was modified" tells you something changed. The line diff tells you the ZN() null protection was removed and the denominator now subtracts returns. That's a meaningful business logic change, and the difference between a harmless tweak and a number that's now 5% off every Monday morning.
When to Use a Workbook Diff
Post-publish QA
Before publishing a new version of a workbook that powers a critical report, diff it against the current published version. Any unexpected changes, like fields that were accidentally modified or filters that changed, show up immediately.
Investigating metric changes
Revenue is down 3% this week but upstream data looks clean. Compare this week's workbook against last week's. If the Profit Ratio formula changed on Monday, you've found your answer in two minutes instead of two hours.
Handoff documentation
When handing off a workbook to another team or to a client, run a diff against the version they received originally. The diff becomes the changelog: a precise record of what you changed and why.
Migration validation
After migrating logic from Tableau to dbt, compare the pre-migration workbook against a post-migration stub to confirm all calculated fields were accounted for. Any field that's in the original but missing from the migrated version shows up as a removal.
Auditing third-party changes
If a Tableau contractor or external consultant made changes to your workbook, run a diff against the version you gave them. You get a precise list of every formula they touched. Nothing slips through.
How to Compare Two Tableau Workbooks
I built tableautodbt.com/diff specifically for this. Upload two .twb files. Nothing is sent to a server; everything stays in your browser, and the tool produces a structured diff across all five categories.
The output includes:
- โA change summary strip showing totals by category (e.g. 3 added, 1 removed, 7 modified)
- โFull list of added and removed fields with formulas
- โModified fields with side-by-side line-level formula diffs
- โParameter changes with old vs new values
- โData source changes including server and schema
- โSheet and filter additions, removals, and modifications
- โFilter by change type: show only added, removed, or modified
- โCopy individual formula changes for tickets or Slack messages
No Tableau Desktop, no Tableau Server, no login required. Upload two files, read the diff.
Compare two workbook versions now
Upload two .twb files and see every added, removed, and modified field with line-level formula diffs. Free, browser-based, no login.
tableautodbt.com/diff โ