Text Diff Checker
See exactly what changed between two versions.
Runs entirely in your browser
Loading the tool…
- 0Added
- 0Removed
- 0Unchanged
- —Similarity
Paste two versions and every difference is marked: removed lines in red, added lines in green, and within a line that was edited rather than replaced, the individual words that changed.
The comparison uses Myers' algorithm, the same one behind git diff.
It finds the smallest set of changes that turns one text into the other,
which is why an inserted line shifts everything below it in a naive comparison but
not here: the rest of the file is correctly recognised as unchanged.
Ignoring case or whitespace changes only what counts as a difference; the text shown is always exactly what you pasted.
How to use it
- Paste the original on the left and the changed version on the right.
- Read the marked-up result: red is removed, green is added, highlights are the changed words.
- Switch between side-by-side and unified with the layout buttons.
- Turn on 'only show changes' for a long document, or ignore case and whitespace for a looser comparison.
Questions
Why is a diff tool better than reading both versions?
Because your eye skips over small changes. A one-character difference in a long line, a swapped digit, a trailing space: those are exactly what a diff catches and proofreading does not.
Side by side or unified?
Side by side puts the two versions in adjacent columns, which is easiest when lines were edited rather than moved, and it opens that way on a wide screen. Unified stacks them into one column with + and − markers; it is the default on a phone, because two columns of monospace text cannot be read at that width. Both mark exactly the same changes, so switch freely.
What does the similarity percentage mean?
The share of lines that are identical in both versions, counting both sides. 100% means the texts match; 0% means they have no line in common.
Why do some lines show word highlights and others do not?
When a removed line is immediately followed by an added one, they are treated as an edit of the same line and compared word by word. A line with no counterpart is simply added or removed outright.
Is there a size limit?
Very large or completely unrelated texts stop at a cap, because the algorithm's memory grows with how different the two sides are. The page says so when it happens rather than freezing.
Why does a moved paragraph show up as a deletion and an addition?
Because a line-based diff has no idea what a move is. It sees a line absent here and present there, and reports both. Some tools bolt on move detection afterwards by matching removed blocks against added ones; it helps on code and produces confident nonsense on prose, which is why this does not do it.
What does ignoring whitespace actually ignore?
Leading and trailing spaces and tabs, and runs of whitespace inside a line collapsed to one. It is what you want when a reformat has reindented a file and you only care whether the logic moved. It will hide a genuine change to spacing, so turn it off before reviewing anything where alignment is the point, such as a Markdown table or a fixed-width layout.
Can I compare two files rather than pasting text?
Open each one and paste it in. For files under version control git diff is the better tool anyway, since it knows the history and can show you a three-way merge. This page is for the case where the two versions came from an email, a chat message and a hunch.
Reading a unified diff
Unified is the format git diff prints and patch tools consume, and it
is worth being able to read one without a viewer:
| Line starts with | Means |
|---|---|
@@ -12,7 +12,9 @@ | A hunk: seven lines from line 12 of the original, nine from line 12 of the new |
| a space | Context, present in both and shown so you can find your place |
- | Present in the original, gone from the new version |
+ | New |
\ No newline at end of file | Exactly that, and a real source of noise in diffs |
The comparison runs Myers' diff algorithm, which finds the smallest set of insertions and deletions that turns one side into the other. Its cost grows with how different the two texts are rather than with how long they are, so a small change to a large file is quick and two unrelated files are the expensive case. Past an edit distance of 4000 it stops and says so rather than grinding. Inside a line that changed, the differing words are marked too, so a one-character typo in a long paragraph does not read as a whole line rewritten.
Similarity is the count of unchanged lines against the size of both sides together, so two identical texts score 1 and two with nothing in common score 0. It is a rough measure and a useful one: a small edit to a large file scores near 1, and a score near 0 on files you expected to match usually means you pasted the wrong version.
Your data stays on your device
Everything above runs inside your browser as WebAssembly compiled from Rust. Nothing you type is uploaded, logged or stored on a server. You can load this page once, go offline, and it still works.
This page makes no requests at all, to anywhere. That is not a promise in the copy: it is a Content-Security-Policy header your browser enforces, and connect-src on it is none. Open the network tab and watch nothing happen.