What is a zero width space (U+200B)?
The zero width space (ZWSP) is a non-printing character used in computerized typesetting to indicate word boundaries to text-processing systems. Because it has no width, it is completely invisible to the human eye — but it is a "real" character to a computer, counted in string lengths, compared in searches, and parsed by compilers.
While ZWSP has legitimate uses in languages that don't use visible spaces (like Thai or Japanese), it is frequently found in "corrupted" text copied from the web, PDFs, or AI tools — see which hidden characters ChatGPT emits for the AI side of the story.
The problem with ZWSP in Notion and Google Docs
Imagine the text "helloworld" with a hidden U+200B sitting between "hello" and "world". A human sees one ordinary word. The computer sees eleven characters, not ten. Then:
- Searching for "helloworld" fails, because the stored text never contains that exact string.
- Spellcheck flags the word or behaves erratically, confused by the invisible join.
- Text may wrap to a new line in the middle of what looks like a single word.
- In code, a ZWSP causes failures that are nearly impossible to debug by eye: Node reports "SyntaxError: Invalid or unexpected token", while CPython is more helpful and names the character — "SyntaxError: invalid non-printable character U+200B".
How our ZWSP remover works
Because you can't see a zero-width space, you can't delete it manually. Our tool scans the underlying Unicode code points of your text, matches U+200B, and removes every occurrence. It also catches the related zero width non-joiner (U+200C), zero width joiner (U+200D), and word joiner (U+2060), which cause the same class of problems. For the complete inventory of characters detected, see the invisible Unicode characters list, or use the broader invisible character remover to clean everything at once.
Pro tip: If you're a developer and your code is failing for no visible reason, paste it here and check the "Invisible characters removed" stat. It's often the culprit. To identify what is there before changing anything, the hidden character checker names every code point it finds without touching the text.