Diff Checker
Paste two versions and see what changed. Line numbers, collapsed context, nothing uploaded.
About this tool
Two versions of something and a question: what actually changed? A config file before and after a deploy, a contract clause someone edited, an API response that started failing, two exports that should match but do not. Reading both side by side works for ten lines and stops working somewhere around fifty — the eye slides over a changed digit without noticing it.
The comparison finds the longest sequence of lines the two texts share, then reports everything else as added or removed. That is the same idea behind the diff in version control, and it means the result is stable: identical lines stay aligned even when the changes around them shift everything down. Line numbers are tracked separately for each side, so you can point at a line in either version without counting.
Long unchanged stretches are collapsed to a bar telling you how many lines were skipped, with three lines of context kept around every change — that is a display choice, not a limit on the comparison, and one click expands it. Windows and Unix line endings are normalised first, so a file that only travelled between platforms does not light up as a total rewrite. Everything runs locally, which matters here more than usual: config files and unreleased code should not need a round trip to a server to answer a question this simple.
Frequently asked questions
Does it compare word by word or line by line?
Line by line. Change one character and the whole line shows as removed and re-added, because a line is the unit being matched. That granularity is what makes the result readable for config files, code and structured text, where a line usually is one meaningful thing. For prose, where a single edit can ripple through a long paragraph, line-level output is coarser than you might want.
I moved a block of text and it shows as deleted and added twice.
That is expected, not a bug. The comparison finds the longest common sequence of lines, and a moved block breaks that sequence — so it appears as a removal in the old position and an insertion in the new one. No line-level diff can report a move as a move without extra assumptions about what counts as the same block.
What are the two columns of numbers?
Line numbers in each text. The left column counts lines in the original, the right column counts lines in the changed version. Removed lines have no right-hand number and added lines have no left-hand one, which makes it easy to say "line 42 of the old file" without counting the additions above it.
Why are big unchanged sections hidden?
Because when you change three lines in a five-hundred-line file, the other 497 are noise. Unchanged runs collapse to a bar showing how many lines were skipped, keeping three lines of context around each change. Use "Show unchanged" if you need the whole thing — the collapsing is purely a display choice, nothing is left out of the comparison.
Do different line endings show up as changes?
No. Windows CRLF and Unix LF are normalised before comparison, so a file that only changed line endings reports as identical. Without that, opening a file on the wrong platform would mark every single line as modified and bury any real change.
Is my text uploaded?
No. The comparison runs in this page and no request is made while you work. That matters here more than for most tools — the things people diff are config files, credentials-adjacent settings, contracts and unreleased code, none of which should be pasted into someone else's server to answer a question this simple.