Guides · Updated 13 October 2026

Hidden Characters in AI Text

What zero-width spaces, non-breaking spaces, and other invisible characters are, why they turn up in AI and copied text, and how to remove them.

Text can contain characters you can't see: spaces that aren't normal spaces, marks with no width at all, and even whole hidden sentences. They come from AI chat apps, word processors, web pages, and PDFs, and they cause strange bugs when the text is pasted into code, spreadsheets, forms, or another AI.

The usual suspects

CharacterCodeWhat it does
Zero-width spaceU+200BAn invisible break point inside a word
Zero-width joiner and non-joinerU+200D, U+200CJoin or separate letters and emoji; needed in some languages and emoji
Word joinerU+2060Stops a line break, with no width
Byte order markU+FEFFA file-encoding marker that sometimes ends up mid-text
Non-breaking spaceU+00A0Looks like a space, but isn't one to code or search
Narrow no-break spaceU+202FA thinner non-breaking space, used in some number and date formats
Soft hyphenU+00ADInvisible unless a word is split at the end of a line
Tag charactersU+E0000–U+E007FInvisible copies of letters that can spell out hidden text

Why they cause problems

Are they an AI watermark?

Not reliably. Special spaces and invisible characters have turned up in text from AI chat apps, but they also come from word processors, web pages, and copy-and-paste. Their presence doesn't prove a text was written by AI, and removing them doesn't make AI-written text undetectable. Treat them as a formatting problem to clean up, not as evidence.

How to find and remove them

Paste the text into the LLM Output Sanitizer. It lists the hidden characters it finds, decodes any text hidden in tag characters, and gives you back clean text. It can also swap curly quotes, long dashes, and special spaces for plain keyboard characters.

Some invisible characters are needed. Emoji such as 👩‍💻 and flags are built with joiners, and Persian, Arabic, and Indic scripts use joiners too. The sanitizer keeps those by default, so cleaning text doesn't break it.

If the text is going to an AI model and came from somewhere you don't control, such as a web page, an email, or a document, check it with the Prompt Injection Scanner as well. It looks for hidden characters and for instructions written to manipulate the model.

Pasting AI answers into documents

When an AI answer is going into Google Docs, Word, or an email, the problem is usually the Markdown (**bold**, # headings) rather than hidden characters. Markdown to Rich Text turns it into formatted text you can paste, and removes hidden characters on the way.