No-break space, U+00A0

A space with ordinary width that forbids a line break. It is the character behind the HTML entity you have seen a thousand times, and it arrives in pasted text constantly, from assistants and from web pages alike.

How it works

c2 a0 in UTF-8. It has exactly the advance width of an ordinary space and a line-break class that forbids a break, which is the whole point: it keeps a number with its unit or a name with its title across a line ending. Because it is visually identical to a space, it is the hardest of these characters to diagnose by eye, and it arrives constantly, since HTML authors write it as an entity and both browsers and word processors emit it when copying. Its damage is entirely in the layers below rendering. A comparison fails with no visible difference. A CSV parser splitting on whitespace treats it as content. Language runtimes disagree about whether it counts as whitespace at all, so a trim in one language strips it and in another does not, which produces bugs that appear to depend on which service processed the string.

What it is legitimately for

Keeping a number with its unit, a name with its title, or a value with its symbol, so a line break cannot separate them.

What it breaks

  • It looks exactly like a space, so a failing string comparison gives you no visual clue at all.
  • A CSV or fixed-width import splits on ordinary spaces and treats this as part of the field.
  • A trimmed input field is not actually trimmed, because trim implementations vary in whether they consider it whitespace.

How to find it yourself

Look for c2 a0 in a hex dump.

What Clipboard Sanitizer does

Replaced with an ordinary ASCII space, and deleted when it is part of trailing whitespace.