Text Comparison

[ RESULT ]
Look the same
100%
Similarity
+1 / −1
Changed
LF / LF
Line endings
These two look the same and are not the same. Every difference below is invisible on screen — which is why nothing appears to be wrong.
[ DIFFERENCES YOU CANNOT SEE ]
L3 · R3trailing whitespace

The left line ends with 1 whitespace character and the right with 0.

[ THE DIFF ]
11 Invoice total: 1,250.00
22 Payment terms: 30 days
3Reference: JD-2026-0814·
3+Reference: JD-2026-0814

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.

Both texts stay in your browser. Nothing is uploaded, so you can paste a contract or a config file without it leaving the machine.
[ WHAT THIS IS ]

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.

[ QUESTIONS ]

The two lines look identical but the tool says they differ. Is it broken?

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.

What is a non-breaking space and why does it keep appearing?

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.

Version control says my whole file changed but it looks the same. 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.

What is Unicode normalisation and why is it switched off?

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.

Does it compare word by word or line by line?

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.

Is my text uploaded anywhere?

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.

[ THE MATHS ]
What it looks for
Trailing whitespacethe classic — invisible at the end of a line
Tab against spacesrenders identically at the right tab width
Non-breaking spaceU+00A0, pasted from a browser or a document
Zero-width characteroccupies no space and is really there
Unicode normalisationsame letters, different code points
Line endingsCRLF against LF — one byte on every line

Every one of these renders as nothing at all. That is what makes them expensive.

[ WHY A FILE LOOKS WHOLLY CHANGED ]
A 400-line file saved on Windows, then on Linux
Lines your editor shows as different0
Lines version control shows as different400
Bytes that actually changed per line1

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.

[ NEXT ]
43JSON FormatterTidy both sides before comparing them
44Base64 Encoder / DecoderDecode a value before diffing it
45Barcode GeneratorFor the product list you just checked
47Secret Key GeneratorAlso entirely in the browser
[ IMPORTANT ]

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.