Text diff checker

Comparison
+43split
5 lines · 192 chars
6 lines · 241 chars
Side by side diff
1## Release notes1## Release notes2We ship the new billing dashboard on Tuesday.2We ship the new billing dashboard on Thursday.3Customers on the legacy plan keep their current price.3Customers on the legacy plan keep their current price until March.4Support hours stay 9am to 5pm.4Support hours move to 8am to 6pm.5The rollout is staged by region.5Contact billing@example.com with questions.6Contact billing@example.com with questions.
Added1
Removed0
Changed3
Similarity77%

Text Diff Checker

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.

Passes: lines, then words
2
Characters uploaded
0
Char-mode line ceiling
600
Share link capacity
2,400

Step by step

How to compare

  1. 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.

  2. 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.

  3. 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.

  4. 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

Two release notes, compared

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

Left
4 lines · 129 chars
Right
4 lines · 148 chars
Granularity
Word

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 translations
Lines
3 changed · 1 unchanged
Similarity, word mode
81.2%
Similarity, character mode
92.3%

Nothing 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

What to know about comparing text

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

Which setting fixes which problem?

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

How the comparison is defined

Similarity
2 × shared chars ÷ both lengthsCounted on both sides, capped at 100%. Identical documents score 100; the figure shifts with word or character granularity because the two count shared text differently.
Alignment
Longest common subsequenceCommon leading and trailing lines are trimmed off before the expensive pass, which is why appending to a long file is instant.
Comparison budget
1,500,000 cellsAbout 1,200 lines against 1,200. Beyond it the differing middle is reported as one replacement instead of a precise alignment.
Character-mode ceiling
600 characters per lineLonger lines fall back to word granularity. Character diffing is quadratic, and a minified file would otherwise hang the tab.
Share link capacity
2,400 characters, both panesUnder it the link carries the text and the settings. Over it the link carries settings only, and the tool says which case you are in.
Patch format
- removed · + added · ␣␣ contextThe unified output Copy produces. It pastes into a review or a ticket as plain text — it is not a git-applicable patch, as it carries no hunk headers.

FAQ

Questions, answered plainly

How do I compare two versions of a text?

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.

What is the difference between side-by-side and unified view?

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.

Why does my whole document show as changed?

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.

Can I ignore formatting differences like spacing or capitalisation?

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.

How is the similarity percentage calculated?

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.

Is there a size limit, and does my text leave the browser?

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.

Can I use it to compare code or JSON?

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.