Skip to content
Ghostchars

Free tool

Zero width space remover and decoder

Paste text that looks normal but fails search or comparison. This free remover names U+200B and related zero-width characters, then removes the unused ones in your browser.

Updated

Nothing is uploaded. The cleaning happens on this page.

Your text is analysed in the browser. Press Clean text to see results below.

Cleanup level

Standard removes only characters you cannot see. Maximum also rewrites text you can see (look-alike letters, quotes, dashes and spacing), so it is a choice, not a default.

The defaults already remove every character that is invisible and doing no work: zero-width characters, byte-order marks, soft hyphens, invisible math operators, bidi overrides, free-floating tag characters and variation selectors, noncharacters, and other format controls. Everything below goes further than that: it either changes text you can see or removes characters that are doing a job, so you decide.

Whitespace & layout

Non-breaking, thin, and ideographic spaces become a plain space. Off because NBSP is often deliberate.
CRLF, CR, NEL, and Unicode line/paragraph separators become a plain newline.
Spaces parked at the end of a line can encode a hidden message (the SNOW technique).
Double spaces between words can carry binary data. Off because it changes fixed-width layouts.

Letters & punctuation

Cyrillic а in "аpple" becomes Latin a. Only acts inside words that mix scripts, so ordinary Russian or Greek text is untouched. Off by default because it rewrites letters.
Em dash, curly quotes, ellipsis and minus sign become ASCII. Often used as an "AI tell", but also just good typography.
Composed vs. decomposed accents (é as one character or two) can encode bits. NFC picks one form.
Also folds fullwidth, superscript and ligature forms. Changes more than you might expect, and supersedes NFC.

Controls

We already remove bidi overrides, and marks in left-to-right prose. This one also removes the marks sitting next to Hebrew or Arabic, where they do real layout work.
C0 and C1 controls other than tab and newline.
Breaks icon fonts and some brand glyphs, which is exactly where these normally live.

Aggressive

Removes every zero-width joiner and variation selector, including the ones holding 👨‍👩‍👧 together and the ones Persian, Hindi and flag sequences need. Only use this when you want plain letters and nothing else.

ZWSPTAG U+E0053

Press Clean text and we'll show you exactly what was hiding in there, in plain language first, with the codepoints underneath if you want them.

Paste the text into the cleaner above and press Clean text. Standard removes U+200B, U+2060 and a stray U+FEFF and keeps the joiners an emoji or a script needs; Show what's hidden lists every finding with its position. Nothing is uploaded.

What it finds

Example

Before cleaning

invisi\u200Bble word\u2060joiner

After cleaning

invisible wordjoiner

Questions

How do I remove a zero width space?

Paste the text into the cleaner. Standard cleaning removes U+200B, U+2060, and stray U+FEFF characters, then the findings table names every change.

Will removing zero-width characters break emoji or Persian text?

The default pass keeps U+200C and U+200D when context shows that they join a script or emoji sequence. Maximum can remove load-bearing joiners, so review that option before using it.

Does a zero-width character show who wrote the text?

No. A remover removes characters; it does not judge who wrote the text. The prose report measures writing habits and gives no verdict.

Anonymous usage stats?

Ghostchars processes your text in the browser and never uploads it. We would like to count page views with a self-hosted, cookie-light analytics endpoint. No content, ever.