Invisible character remover
Paste a text, get it back without zero-width characters, odd spaces, soft hyphens, bidi controls and lookalike letters, with a count per category and every removed character highlighted. Nothing leaves your browser.
Nothing is sent to a server: the text stays in your browser, the tool runs offline once the page is loaded. Ctrl+Enter runs it.
- Removes U+200B to U+200D, U+2060, U+FEFF (zero-width), U+00AD (soft hyphen), U+202A to U+202E and U+2066 to U+2069 (bidi), C0/C1 controls, variation selectors and tag characters
- Turns non-breaking and exotic spaces (U+00A0, U+202F, U+2000 to U+200A, U+3000) into a normal space and keeps line breaks
- Replaces Cyrillic and Greek lookalikes (а, е, о, р, с, ο and others) only in words that mix scripts, so real Russian or Greek is left alone
- Fullwidth and mathematical letters are folded to ASCII when you tick those boxes
- Every category can be kept: the tool then counts it and shows it in the highlighted view without changing it
What the tool finds and removes
Invisible characters are code points that take no space on screen or look exactly like a common character. They arrive with copy-paste from web pages, PDFs, chat interfaces and some AI tools, and they break searches, spreadsheet matches, URLs, code and diffs. This tool scans the text once, position by position, and treats nine families:
| Category | Examples | Default action |
|---|---|---|
| Zero-width | U+200B zero width space, U+200C, U+200D joiner, U+2060 word joiner, U+FEFF byte order mark | Removed |
| Spaces | U+00A0 no-break space, U+202F narrow no-break space, U+2007 figure space, U+3000 ideographic space | Normal space |
| Soft hyphen | U+00AD, invisible until a line wraps | Removed |
| Bidi controls | U+200E, U+200F, U+202A to U+202E, U+2066 to U+2069 | Removed |
| Control characters | U+0000 to U+001F except tab and line breaks, U+007F to U+009F | Removed |
| Variation selectors and tags | U+FE00 to U+FE0F, U+E0000 to U+E007F | Removed |
| Lookalike letters | Cyrillic а е о р с у х, Greek ο ν, U+2019 used as apostrophe is kept | Latin letter, mixed-script words only |
| Fullwidth | A B C, 1 2 3, ! | ASCII |
| Mathematical letters | 𝗕 𝗼 𝗅 𝗱 (sans-serif bold), 𝘺 (italic) | ASCII |
The joiner U+200D is removed only when it is not gluing two emoji together, so flags and family emoji stay whole. Tabs and line breaks are never touched.
How to use it
- Paste the text, or click Try with a sample to see a trapped paragraph.
- Untick a category if you want to keep it: it will still be counted and highlighted, marked as kept.
- Click Clean. The result appears with a counter per category, a before/after diff and the original text with each hit highlighted and its code point on hover.
- Copy the result, download it as .txt or copy a link that carries your settings (never your text).
Why invisible characters matter
A zero-width space inside an e-mail address makes it bounce. A no-break space between two numbers stops a spreadsheet from parsing them. A soft hyphen in a product code breaks a search. Bidi overrides can make a filename read backwards, which is a known trick in phishing. Cyrillic letters inside a Latin word are how lookalike domains are built and how some text is made to slip past word filters. Some AI chat interfaces also leave zero-width or narrow no-break spaces in what they output, which is why people paste ChatGPT text into a cleaner before publishing it: the ChatGPT watermark remover page explains what those characters are and are not.
When you need more than this
If the text also carries Markdown debris, curly quotes and em dashes, the AI text cleaner runs this scan together with the other fixes in one pass. If you want to see every character rather than fix them, the Unicode inspector lists each code point with its name and block. To swap dashes only, use the em dash remover.
None of this touches a statistical watermark: that mark lives in the choice of words and survives any character clean-up. If that is your question, the AI text watermark remover hub explains which tool applies.
Privacy
The tool is a script that runs in your browser once the page is loaded. Your text is not sent to unmarker.io or to anyone else, is not stored and is not logged. Only the click on the button is counted, anonymously, so we know the tool is used.
Unmarker is an independent product, not affiliated with or endorsed by Anthropic.
Questions people ask
What is an invisible character?
A Unicode code point that renders as nothing (zero-width space, word joiner, byte order mark, soft hyphen, bidi controls) or as something you cannot tell apart from a normal character (no-break space, Cyrillic a). They survive copy-paste and break searches, links, code and matches.
Does it remove non-breaking spaces?
Yes, when the Spaces box is ticked (default). U+00A0, U+202F and the other Unicode spaces become a normal space. Line breaks and tabs are kept.
Will it damage Russian or Greek text?
No. Lookalike letters are only replaced inside words that mix Latin and another script, or words made entirely of lookalikes inside a text that is mostly Latin. A Russian sentence is left as it is.
Can I see what was removed?
Yes. The Before tab shows the original text with each hit highlighted, its category as a color and its code point and name on hover. The Diff tab shows the change line by line.
Is my text uploaded?
No. Everything runs in your browser; the page works offline once loaded. Nothing is stored or logged.
Does this remove an AI watermark?
No. Zero-width characters are not what Anthropic or Google use to mark AI text; those marks are statistical, in the choice of words. See the AI text watermark remover hub for that question.