The left line ends with 1 whitespace character and the right with 0.
Trailing whitespace is shown as ·, a tab as → and a non-breaking space as ␣. Drawing them as they are would show two identical rows, which is the problem rather than the answer.
The differences you cannot see are the ones worth a tool. Anyone can spot a changed word. What costs an afternoon is two lines that render identically and are not equal.
A trailing space. A tab where the other file has four spaces. A CRLF against an LF, which makes version control report that every line changed while your eyes report that nothing did. A non-breaking space pasted in from a browser, which looks exactly like a space and is not one. A zero-width character that occupies no room at all. Or an accented letter written as one code point on one side and a letter plus a combining mark on the other.
A diff that marks those "changed" and stops is useless precisely when it is most needed, because you stare at two identical rows and conclude the tool is broken. So when a pair differs only invisibly, this page says so before showing you the diff, and names the reason. In the diff itself trailing whitespace is drawn as ·, a tab as → and a non-breaking space as ␣.
Unicode normalisation is off by default, deliberately. "é" as one code point and as "e" plus a combining accent look the same and are different bytes — a real bug in a filename, a database key or a password. Normalising by default would hide the thing you came to find. Switch it on to confirm that is what you are looking at, and the page will tell you the comparison is no longer byte-for-byte.
No — that is the case this tool is built for. Something in one of them is invisible on screen: a trailing space, a tab where the other has spaces, a non-breaking space pasted from a browser, a zero-width character from a word processor, or an accented letter written two different ways. When the only differences are invisible, the page says so at the top and names each one, because "these differ" on its own is useless exactly when it matters most.
It is U+00A0, a space that browsers will not break a line at. Copying text out of a web page or a word processor frequently brings them along, and it is indistinguishable from an ordinary space on screen. It is a different character, so a comparison, a database lookup or a password check will treat the two as different — and nothing on screen will tell you why.
Almost certainly the line endings. Windows ends a line with CRLF and Unix with LF, and that is one invisible byte on every line — so every line counts as changed. This page detects both sides and tells you when they differ, which is the fastest way to confirm that is all that happened.
The letter é can be written as one code point, or as a plain e followed by a combining accent. They render identically and are different bytes. Normalisation rewrites both to the same form. It is off by default here deliberately: those two strings really are different, and that difference is a real bug in a filename, a database key or a password — normalising by default would hide the thing you came here to find. Switch it on to confirm that is what is happening.
Line by line, using Myers’ diff algorithm with the common start and end trimmed first — which is what keeps a one-line change in a two-thousand-line file fast. A changed line shows as one removal and one addition, and where the pair differs only invisibly it is called out separately above the diff.
No. Both texts stay in your browser and nothing is transmitted, so you can paste a contract, a config file or a database dump without it leaving the machine. There is also no length limit worth worrying about below five thousand lines a side.
Every one of these renders as nothing at all. That is what makes them expensive.
One carriage return per line, invisible everywhere it is displayed. This page reports the line endings on both sides so you can confirm it in seconds rather than reading four hundred identical lines.
Both texts stay in your browser and nothing is transmitted. This compares text, not meaning: two documents can say the same thing in different words and will be reported as entirely different. Nothing you type here is sent to our servers — the calculation runs entirely in your browser.