A diff viewer with the right granularity for the job.
Compare two blocks of text — line, word, or character — and see exactly what changed. Powered by `jsdiff` (the same algorithm Git uses internally). All comparison happens in this browser tab.
Diffing happens in this browser tab via `jsdiff`, a pure-JavaScript implementation of the Myers diff algorithm. No text leaves the page; we never see what you compare.
Three granularities, one keystroke apart.
A diff viewer that handles three levels of resolution — line, word, character — with the option to ignore case or whitespace, so you can find the actual change without the noise.
Line for code review and config changes. Word for prose, copy edits, and translations. Character for finding the one byte that differs in two superficially-identical strings (great for tracking down a stray zero-width space).
jsdiff implements the same algorithm Git uses for its default diff output. Output minimizes the number of insert/delete operations — the result is the shortest correct diff, not just any diff.
Toggle case-insensitive or whitespace-insensitive comparison. Useful for comparing copy across rebrands ("Shipping" vs "shipping") or for normalizing two YAMLs with different indent levels.
Every keystroke triggers a fresh diff. No Compare button — just type, see the result. Texts up to a few thousand lines stay responsive.
Status pill shows how many lines (or words, or chars) were added vs removed. Useful for "is this a one-character typo or a real change" gut-checks before reading the full diff.
Additions in green, deletions in red, unchanged sections plain. Inline view (not split-pane) so context wraps naturally and long diffs scroll vertically without horizontal hunting.
One click flips left and right — useful for toggling "what changed" vs "what was reverted" perspectives without recopying both sides.
Use anonymously. No account, no history, no telemetry. Inspect the network tab — there is nothing outbound.
Wherever two versions need to be reconciled.
When debugging a paste-from-Slack issue and the upstream PR, the diff viewer is faster than `git diff <(echo …) <(echo …)`. Line mode mirrors what Git would show.
A copywriter sends a rewrite of a landing-page section. Word mode highlights exactly which phrases changed — much more readable than line mode for prose.
Two `nginx.conf` files behave differently and you cannot see why. Character mode finds the trailing space, the swapped semicolon, the smart quote that crept in via copy-paste.
Word mode is great for translation review — even when the languages differ, you can see which segments map to each other and which were left untranslated.
Pretty-print both with the JSON formatter, paste here in line mode. Spots the field that changed between two calls — useful when an integration suddenly behaves differently.
When a copy-paste from rich text smuggles a U+200B or a curly quote into a regex, character mode reveals the offender. Both strings look identical to the naked eye.
Diffing, the plain answers.
Myers diff, via the `diff` (jsdiff) package — the same algorithm Git uses for its default output. It finds the shortest sequence of insertions and deletions that turns the original into the modified text. "Shortest" is a precise mathematical property, not a heuristic.
**Line** for code, configs, structured documents — anything where logical units are line-sized. **Word** for prose, marketing copy, translations — natural-language edits change words, not entire lines. **Character** for fingerprinting tiny drifts (trailing spaces, smart quotes, zero-width spaces) where the diff would otherwise be invisible.
In line mode, whitespace within a line is normalized before comparing — runs of spaces collapse to one, leading and trailing whitespace are trimmed. In word and character modes, the toggle is a no-op since whitespace is already part of the granularity decision. Useful when you have two YAML files with different indent depth but the same structure.
jsdiff scales O(N×D) where N is the input length and D is the number of differences — fast for typical compares (a few KB each side, dozens of changes). Multi-megabyte inputs with thousands of differences will start to feel slow, but the tool stays responsive for the inputs people actually paste interactively. For really big diffs, use `diff` on the CLI.
No. Diffing runs entirely in this browser tab via `jsdiff`. The page makes no network calls related to your input. Open DevTools → Network and watch nothing happen as you paste.
Two reasons: it would lock the tool to a fixed set of languages (current language detection in the browser is awkward without extra deps), and the visual contrast between added/removed/unchanged is the load-bearing affordance of a diff — adding syntax color tends to fight it. If you want syntax-aware diffing, GitHub's blame view or VS Code's diff editor are the right tools.
Building services where every commit needs a real review?
Sign up for the free tier and you get $100 in credits, plus VMs, managed databases, object storage with versioning, and zero-config autoscaling across four regions.