Text diff
MDV ToolsTwo blocks in, one line-by-line comparison out.
How this works
Both sides are split into lines at each newline. One newline at the very end of a side
closes its last line and does not count as an extra empty line; a second one is a blank
line. Lines both sides share at the top and bottom are matched first, as GNU
diff does, and the lines between go through a standard
longest-common-subsequence table — the same core as diff(1), filled from the
end and walked from the start to emit keep, add and remove rows. Nothing is fuzzy: a line
either matches its counterpart exactly (after the options you tick) or it is shown as a
removal plus an addition.
It is line-level only, so a one-character edit prints the whole line twice. The table grows with the product of the two line counts, so the tool refuses more than 4,000 lines per side. At that ceiling, with every line different, the table holds 16 million cells in about 32 MB and fills in roughly a tenth of a second on a laptop; drawing up to 8,000 rows comes on top of that.
The Dark button remembers its setting in this browser's local storage. Nothing you type or drop into the page is stored.