Why are there invisible characters in my text?
Invisible characters creep into text whenever you copy from PDFs, web pages, Word, Excel — or AI chatbots like ChatGPT. Characters such as the zero-width space (U+200B), soft hyphen (U+00AD), and bidirectional control marks have no visible glyph, but they are real characters to every computer program. They break search, spellcheck, code, and formatting the moment you paste them somewhere new.
Most were designed for typesetting — telling a layout engine where it may break a long word, or which direction mixed Arabic/English text should flow. Outside that context they are pure baggage: they make "helloworld" unfindable in search, trip up markdown parsers, and trigger mysterious syntax errors in code. The direction-switching family is the most consequential of the group, because it can make source code read differently to a human than it does to a compiler — it has its own guide on how to remove BiDi control characters.
Common invisible characters this tool removes
Zero Width Space (ZWSP)
Marks a potential word boundary. Invisibly joins words, breaking search and spellcheck.
Byte Order Mark (BOM)
A file-encoding marker that shows up as a ghost character when pasted into web apps.
Directional Marks (LRM/RLM)
Switch text direction between left-to-right and right-to-left. Cause cursor glitches and flipped punctuation.
Soft Hyphen
An invisible hyphenation hint from PDFs and justified layouts that pollutes plain text.
Word Joiner
Prevents line breaks without any visible width — a frequent stowaway in copied text.
Narrow No-Break Space
A thin, non-breaking space, known for a brief April 2025 appearance in o3 and o4-mini output — nearly indistinguishable from a normal space.
Two of these have pages of their own: U+200B is covered in depth by the zero-width space remover, and U+202F is the character at the centre of the ChatGPT watermark characters story. For the complete table of every character we detect — including Unicode tag characters and variation selectors — see the full invisible Unicode characters list.
How to remove invisible characters (3 steps)
- Paste your text into the cleaner at the top of this page. Detection runs instantly and locally.
- Check the "What changed" report. It lists exactly which hidden characters were found, by name and code point — so you can verify what was in your text. If you would rather inspect a passage without altering it, the AI watermark checker reports the same findings and leaves the original text untouched.
- Copy the cleaned output. The visible text is identical; only the invisible baggage is gone.
Unlike find-and-replace, the cleaner targets the specific Unicode ranges assigned to format and control characters, so it catches variants you'd never think to search for — while leaving legitimate characters (including emoji and non-Latin scripts) intact in the default preset. Non-breaking spaces are a slightly different case — they are real, visible-width spaces rather than zero-width ones — and the non-breaking space remover covers U+00A0 and its narrow U+202F relative in detail.