Compare two versions of a document and see exactly what changed. Lines are matched first, then every changed line is diffed again word by word — so a reworded sentence reads as one edit with two words highlighted, instead of a wall of red and green.
Step by step
01Paste both versions
Original on the left, revision on the right. There is no compare button — the result updates as you type, and nothing is uploaded or stored.
02Pick the layout that matches your reader
Side by side keeps each version in its own column with its own line numbers, for reading two documents. Unified stacks removals above additions, the way a patch or a code review reads — that is the one to paste into a ticket.
03Decide what should not count as a change
Ignore letter case when only capitalisation moved; ignore whitespace after a document has been reflowed. Both rules change which lines are considered equal — never what is displayed.
04Take the result with you
Copy the diff as a plain −/+ patch, or use Share for a link that reopens the same comparison and settings. Short documents travel inside the link; long ones stay on your machine and the link carries settings only.
Worked example
Four lines against four lines, run through the same code the tool uses. The patch below is its literal output, and the numbers are what the ledger reports.
Given
Copy as patch · unified output, verbatim
- ## Release 2.4.0
+ ## Release 2.4.1
- - Fixed a crash when importing CSV files
+ - Fixed a crash when importing CSV and TSV files
- Added dark mode to the settings page
- - Updated the German translation
+ - Updated the German and Dutch translationsNothing was added or removed: every difference is a rewrite of a line that already existed, so the two versions are paired rather than stacked as three deletions and three insertions. The two similarity figures are the same comparison at two granularities — word mode counts a rewritten phrase as lost text, character mode sees that most of its letters survived. Neither is wrong; quote the one that matches the question you are answering.
Before you trust the result
Lines are matched before anything is highlighted
A longest-common-subsequence pass aligns the two documents line by line, so inserting a paragraph shifts everything below it instead of marking the rest of the file as different. Only then is each changed line diffed internally, which is why a reworded sentence shows two changed words rather than two changed lines.
Reflowed text is the classic false positive
Rewrapping a paragraph moves every line break, so a document that reads identically can diff as entirely rewritten. That is what the ignore-whitespace rule is for: it trims line ends and collapses runs of spaces before matching, and leaves your text on screen untouched.
Character mode has a ceiling, on purpose
Character diffing is quadratic in line length, so lines beyond 600 characters fall back to word granularity rather than locking up the tab. If you are hunting a transposed digit inside a minified line, break it up first — formatting it is faster than waiting.
Similarity is measured in characters, not lines
It is the text common to both versions, counted on both sides, over their combined length. A one-word fix in a long contract scores in the high nineties, where a line-based count would call it a fifth of the document. It also means the figure moves with your granularity setting.
Structured data needs normalising first
Two JSON payloads that differ only in indentation diff as a change on every line. Format both with the same formatter before comparing, and the result collapses to the values that actually moved — the same applies to CSV column order and to code that has been through a different printer.
Very large pairs degrade instead of freezing
The quadratic comparison is capped at 1.5 million cells — roughly 1,200 lines against 1,200. Past that, the middle section is reported as a wholesale replacement rather than a precise alignment. You still get an answer; it is just coarser than the one a smaller pair gets.
Nothing leaves the browser
Comparison and highlighting both run locally, which is what makes the tool usable on contracts, incident notes, and unreleased copy. The share link is the only thing that travels, and it carries text only when both documents together fit in 2,400 characters.
The judgement call
Most disappointing diffs are a settings mismatch rather than a bad comparison. These are the cases people hit, and what to reach for in each.
The whole document shows as changed after reflowing
Ignore whitespace
Line breaks moved, words did not. Collapsing runs of spaces before matching restores the real alignment.
A heading was retitled from Title Case to sentence case
Ignore case
Capitalisation stops registering as an edit, so the remaining differences are the ones you are actually reviewing.
Hunting a transposed digit in an order ID
Character mode
Word mode marks the whole identifier as changed. Character mode points at the two digits — as long as the line is under 600 characters.
Pasting the result into a ticket or a review
Unified
One column of − and + lines is the format reviewers already read, and Copy as patch gives it to you as plain text.
Reading two drafts side by side with a colleague
Side by side
Each version keeps its own line numbers, which is what you want when the conversation is about the documents rather than the change.
Comparing two JSON or YAML payloads
Format first
Normalise both with the same formatter, otherwise indentation and key order swamp the value changes you came to find.
Comparing two exports that may just be reordered
Sort first
A line diff has no concept of moved lines: the same row in a different position reads as one deletion and one insertion.
Reference
FAQ
Paste the original into the left pane and the edited version into the right one. Additions appear in green on the right, removals in red on the left, and reworded lines are shown as a pair with the changed words highlighted inside them. There is no compare button — the result updates as you type.
Side by side shows both documents in parallel columns with their own line numbers, which is easiest when you want to read the two versions as documents. Unified prints one column with − lines for removals and + lines for additions, matching the format of a patch or a code review, which is easier to paste into a ticket.
Almost always because the text was reflowed or reformatted: every line break moved, so no line matches its counterpart even though the words are identical. Turn on ignore whitespace. For code or JSON, run both versions through the same formatter first — a reformatting pass otherwise shows up as a change on every line.
Yes. The Ignore section of the inspector has switches for letter case and whitespace. Ignoring whitespace trims line ends and collapses runs of spaces before comparing, which is what you want after a document has been reflowed. Both rules affect only which lines are treated as equal — your text is displayed unchanged.
The similarity percentage is the number of characters common to both versions, counted on both sides, divided by the combined length of both documents. Identical documents score 100%. Because it is measured in characters rather than lines, small edits inside long lines score high, which reflects how much of the document actually survived the revision.
Nothing is uploaded: the comparison runs entirely in your browser, so the tool works offline and your text never reaches a server. Very large pairs fall back to a coarser comparison rather than freezing the page, and text beyond 2,400 characters across both panes is left out of share links so the URL stays usable.
Yes — the diff is language agnostic and treats every line as text. For structured data, format both versions first with the JSON formatter so that indentation is consistent; otherwise a reformatting pass shows up as a change on every line.
Comparison and highlighting both happen locally in your browser. No text is uploaded, logged, or retained, which makes the tool safe for contracts, incident notes, and unreleased copy.
Keep going
JSON Formatter
Normalise both payloads before diffing so only real value changes show up.
Word Counter
Check that the approved revision still fits the length it needs to.
Remove Duplicate Lines
Clean up a list before comparing it against another export.
Case Transformer
Apply a consistent style so capitalisation stops registering as an edit.