Two versions.
Every difference.
Put one text on the left and the other on the right. The comparison happens as you type — line by line, and inside a changed line word by word — on your machine. Neither text is uploaded, which is the difference between this and pasting your work into somebody else's server.
A conventional online converter takes your file, puts it on someone else's disk, does the work there and lets you download the result. Two copies of your file then exist somewhere you cannot see, for as long as that company decides. Here the code that does the work is shipped to your browser instead of your file being shipped to a server: the bytes are read by this tab, transformed in memory, and written back out as a download. Our server never sees them, so there is nothing for us to keep, log or lose.
One thing is counted, and here it is: when a tool finishes, this page tells the server which tool ran and whether it worked — never the file, its name, its size or anything read out of it, none of which ever leaves this tab. It is how we know which tools are worth keeping. The record is the same kind we keep for a one-time link: a truncated IP address, a country and a region.
Once the page has loaded, these tools keep working with the network switched off. That is the simplest proof that nothing is being sent anywhere.
Frequently Asked Questions
Q: Are my texts uploaded to compare them?
No. Both texts stay in this browser tab: the comparison is done here, by the code this page already loaded. Our server never sees a character of either, which is why you can paste something confidential into it — and why the page keeps working with the network switched off.
Q: How does it decide what changed?
With the same algorithm git uses — Myers' — which looks for the shortest set of insertions and deletions that turns one text into the other. That is why a line inserted near the top does not report every line below it as changed: the rest is recognised as the same text, moved.
Q: Why are only some words highlighted inside a line?
Because a line that was edited rather than replaced is compared a second time, word by word, and only the words that actually differ are marked. When two lines have almost nothing in common they are shown plainly as one removed and one added — highlighting nine words in ten as “changed” tells you less than saying the line is new.
Q: How much text can I compare?
Up to a megabyte or so a side, which is tens of thousands of lines. The limit is memory in this tab rather than anything on our side. Very large comparisons fold their identical sections away and cap how many rows are drawn, because a page with forty thousand rows on it is a page nobody can read anyway.
Q: Can I compare two files?
Drop them on the boxes, or use “Open a file”. They have to be text — .txt, .md, .csv, .json, source code, a config file. A PDF or a Word document is a container, not text, so export it first; the file never leaves your machine either way.
Q: Is this any good for code?
Yes, and there is a .diff download for when the answer has to go somewhere else — it is the ordinary unified diff format that patch, git and every review tool read. Turning off “ignore whitespace” is what you want when indentation is the thing you are checking.
The same idea, applied to sending things rather than changing them.