zero-width · bidi · control

Invisible character remover

Find the characters you cannot see, count them by kind, and remove them — with a clear line between cleanup and rewriting.

0 characters

Options

The text is processed in this tab. Nothing is uploaded and nothing is stored.

Short answer: paste the text. The table tells you how many of each kind were found and removed; the output is the text without them.

What gets removed

The honest limit

Text produced by a language model can carry a statistical watermark — a bias in which words were chosen, invisible to a reader and to this page. It is not a character, so no character-level tool can find or remove it, and this page will never tell you a document is “AI-free”. What it can do is show you exactly which invisible characters were in the text and take them out.

Cleaning a document before comparing it? Paste both versions intotext diff afterwards.

Invisible character questions

Can this remove an AI watermark so a detector will not notice?

No, and nothing else in a browser can either. Text watermarks such as SynthID-Text are embedded in the model’s choice of words, not in the characters — the visible text is identical to unwatermarked text, so removing characters has nothing to remove. A tool that claims to “strip AI watermarks” is guessing at best.

What do zero-width characters actually do?

Nothing visible, which is the point. They break search, exact-match comparison, diffs and form validation, and they can be used to smuggle a hidden marker into text you copy. Counting and removing them is useful; pretending they carry a model signature is not.

Why warn about bidi controls?

Because removing them changes how the text displays. A right-to-left override can make a stored string read differently from what you see, so cleaning it can change the apparent meaning. The page says this before you reuse the output.

Does it change my words?

Only if you ask it to. Spaces and curly punctuation are rewritten solely when those options are on, and the page states that as a change rather than a cleanup. The default removes characters that render as nothing.

Related tools