Text & data
Remove hidden characters
Paste text and the invisible parts appear as labelled marks — zero-width spaces, direction overrides, non-breaking spaces, stray control codes. Choose what to strip, then copy the clean version. Nothing is sent anywhere.
Save and continue on the desktop
Download or copy your result here first. Open the free desktop to save to Files or use more features.
- Simple notes with bold and lists — saved locally
- Save to Files when you continue on the desktop
- Every tool in one place — no new tabs
After you download — continue on the desktop for Files or the full app.
What Hidden Character Remover can do
Why a string that looks right still breaks
A password pasted from a manager that the login form rejects. A CSV where one column splits into two on import. A search that finds nothing though the word is plainly on screen. A diff that marks a line changed when both sides look identical. All four are usually the same thing: a character with no width sitting inside the text, carried in from a chat client, a PDF, a word processor or an AI answer. Nothing on screen tells you it is there, which is why the count at the top of this page is the whole point — you find out that the text is dirty before you spend an hour on the wrong bug.
Emoji and Persian are not dirt
The lazy version of this tool deletes every invisible character and quietly corrupts text. A family emoji is several people joined by U+200D; strip it and one glyph becomes four. Persian spells میروم with a zero-width non-joiner, and Hindi uses the same character for conjuncts — removing it is a spelling error, not a cleanup. So this page looks at what sits on either side before it calls anything junk: a joiner between two emoji or between two Arabic letters is left alone, and the same joiner stranded between Latin letters is flagged. Variation selectors go further — they drive emoji presentation and select Japanese ideograph variants, so no option here removes them at all.
Named, counted, and yours to overrule
Every finding is grouped and named with the code point Unicode gives it, so U+200B is a term you can search rather than a red dot you have to trust. Each group has its own switch, because “strip the zero-width junk but leave my non-breaking spaces alone” is a normal answer for a price list, and the copy button honours exactly what the switches say. Non-breaking and typographic spaces become an ordinary space instead of vanishing, so words never get glued together on the way out.
Related apps
Text & data
Character Counter
Count characters as you type
Text & data
Word Counter
Words, reading time, limits
Text & data
PDF to Markdown
Turn a PDF into clean Markdown
Text & data
Word to Markdown
Turn a .docx into clean Markdown
Text & data
JSON Formatter
Format and validate JSON
Text & data
Notes
Simple notes in your browser
Questions
Is my text uploaded anywhere?
No. The scan and the cleanup run in your browser, on this device. The text is never sent to a server, and we never see it.
Which characters does it remove?
Zero-width characters, invisible tag characters, bidirectional direction overrides, legacy control codes, non-breaking spaces, unusual typographic spaces and soft hyphens. Each is a separate switch, so you can strip some and keep others.
Will it break my emoji?
No. The joiner inside an emoji sequence is recognised as part of the emoji and left in place, including after a skin tone modifier or a variation selector. Variation selectors themselves are never removed by any option.
Can it detect hidden text in AI output?
It shows the characters that carry it. Invisible Unicode tag characters — the block from U+E0000 — render as nothing at all and are the usual way a fingerprint gets attached to copied text, so they are listed as their own group. What the tool cannot tell you is who put them there or what they encode.
What happens to a non-breaking space?
It becomes an ordinary space rather than disappearing, and so do em, en and thin spaces. Deleting them outright would join two words into one — a worse bug than the one you came to fix.