Why a private diff matters
The texts people diff are disproportionately the texts they least want on someone else’s server: contract redlines, config files with credentials in them, unreleased code, salary letters, legal drafts. Most online diff tools are server-side — your both versions travel to their machines to be compared, and tools with “share this diff” features necessarily store what you pasted, sometimes indefinitely at a public URL. This page is different by construction: the diff algorithm is JavaScript running in your tab. There is no request carrying your text, nothing to store, and nothing to leak. You can verify it — open your browser’s DevTools → Network tab, run a diff, and watch nothing happen — or load the page, disconnect from the internet entirely, and keep diffing. That’s also why the share button here copies only your view settings, never your text.
How the comparison works
The diff runs in two passes. First, a line-level pass using the Myers algorithm — the same shortest-edit-script approach used by version-control systems — finds the minimal set of added and removed lines, after trimming the unchanged region at the start and end of both texts (which is most of both texts, in typical edits). Second, wherever a removed block sits opposite an added block, lines are paired up and diffed again at word level, so inside a changed line you see precisely which words moved rather than a wall of red and green. Word segmentation is Unicode-aware, so accented and non-Latin words diff as words, not byte fragments.
Side-by-side vs. inline
Side-by-side puts the original on the left and the changed version on the right with matching lines aligned — the natural view for reviewing edits to prose or contracts, where you read the two versions of a clause next to each other. Inline (unified) interleaves removals and additions in one column, the way version-control tools present patches — denser, better for code and for small screens. The toggles apply to both: ignore case compares case-insensitively (useful for SQL, config keys), and ignore whitespace collapses runs of spaces and tabs and trims line ends, so a re-indented file shows only its real changes.
Frequently asked questions
Is my text uploaded when I compare?
No. Both texts stay in your browser’s memory; the comparison is local JavaScript with no server round-trip. The page keeps working with your network disconnected, and the shareable link contains only view settings (side-by-side vs. inline, ignore toggles) — never any of your text.
How is word-level diff different from line-level?
Line-level answers “which lines changed”; word-level answers “what changed inside them”. A one-word edit in a 40-word paragraph line is, at line level, a whole line removed plus a whole line added. The word pass re-compares those paired lines token by token and highlights just the differing words — which is usually the answer you actually wanted.
How large a file can it handle?
Ten-thousand-line files compare in well under two seconds on ordinary hardware — the algorithm hashes lines to integers and trims the common head and tail before comparing, so cost scales with the size of the change, not the file. For pathological cases (two huge files with nothing in common), the tool caps the search and falls back to block-level marking rather than freezing your tab.
Why do two visually identical lines show as different?
Almost always invisible characters: a non-breaking space instead of a space, a zero-width character, or trailing whitespace. Turn on Ignore whitespace to neutralize the trailing-space kind, or paste the line into the Invisible Character Detector to see exactly which hidden character differs.