Invisible Character Remover - Zero-Width Spaces and Watermarks

Paste your text and every character that takes up no room is found, named and shown the door. These are the ones behind two identical-looking rows that refuse to match.

What to fix
Zero-width spaces, joiners, soft hyphens, direction marks and the byte order mark.
No-break and other odd spaces, and Cyrillic or Greek letters drawn like Latin ones.
Off by default — these are what make an emoji a picture rather than a plain symbol.

Writing in Arabic, Hebrew or Hindi, or text with emoji built from several parts? Untick the first one — some of those characters are what hold them together.

Frequently asked questions

Does this remove the ChatGPT watermark?

It removes one of the two things that name is used for, and it is worth knowing which. Invisible-character watermarks are real: a pattern of zero-width characters threaded through the text, used to fingerprint a document so a leak points back at whoever it was sent to. Those come out here, and the report names every one it finds. Statistical watermarks are the other kind - Google's SynthID and schemes like it bias which words the model picks, so the mark lives in the choice of words and there is nothing to delete. No find-and-replace touches that, here or anywhere else, whatever the page selling it says.

What are lookalike letters, and why is that option on?

A Cyrillic a and a Latin a are different characters that draw the same shape. A word with one hiding in it looks perfect and matches nothing, which breaks search, breaks a lookup, and is the oldest trick for spoofing a brand name in a link. It is switched on because it only ever touches a word that mixes scripts: a word written entirely in Cyrillic or Greek is a real word in a real language and is left exactly alone.

The text looks exactly the same afterwards. Did it do anything?

Look at the count rather than the text. That is the whole difficulty with this problem: the characters take up no width, so removing them changes nothing you can see. If the count says four were found, four were there. If it says none, your text was clean and you have ruled something out.

Will it break emoji, Arabic or Hindi?

It can, which is why the caveats are on the options rather than buried here. The zero-width joiner is what holds a family emoji together as one picture and what connects letters in Arabic and several Indic scripts, so untick that box if your text has any. Variation selectors, which decide whether an emoji renders as a picture or as a plain symbol, are left switched off for the same reason.

Can invisible characters be used to hide something in a document?

Yes, and it is not theoretical. A run of zero-width characters can encode a hidden message or a per-recipient fingerprint, so a leaked document points back at whoever it was sent to. Unicode tag characters can carry a whole block of invisible text, which is one way instructions get smuggled into something an AI will later read. All of them are removed here, and the report names them.

What is a byte order mark and why is it in my CSV?

It is a single invisible character some programs write at the very start of a file to mark the encoding. Excel adds one. It is harmless until something reads the file without expecting it, at which point your first column header quietly stops matching and the import fails on a field that looks perfectly correct.

How is this different from the Whitespace Cleanup tool?

Whitespace Cleanup deals with spacing you can see: repeated spaces, tabs, stray blank lines. This deals with characters you cannot. They overlap on the unusual spaces and nowhere else, so running both is reasonable if your text is in a bad way.