Detector

Invisible Text Detector

Paste any text to see every hidden character exposed, named and counted — then strip them all in one click. Nothing leaves your browser.

0 characters

0 bytes

0 hidden found

Remove

Scanning runs entirely in your browser. Nothing is uploaded.

How to detect invisible characters in text

It reads the text codepoint by codepoint and flags every one that renders with no mark. Detection is a property lookup rather than a guess, so the result is exact rather than probable.

Three Unicode General Categories cover almost every invisible character. Cf(Format) holds the zero-width characters and directional marks. Zs (Space Separator) holds the 17 space variants, of which only U+0020 is ordinary.Mn (Mark, non-spacing) holds combining marks that add no width.

Four more characters are invisible without belonging to those categories: U+3164 and U+1160 are classified as letters, and U+2800 and U+FFFC as symbols. The scanner flags them explicitly, because a category match alone would miss them.

Why text contains characters you never typed

Copied text carries the formatting of its source. Every invisible character in a normal document arrived through the clipboard rather than the keyboard.

Four sources account for most of them:

  • PDF exports — U+00A0 in place of spaces, to preserve fixed layout
  • Spreadsheet cells — U+00A0 from number formatting and imported data
  • Rich-text editors and web pages — U+200B inserted for line-break control
  • Multilingual text — U+200E and U+200F to correct display order

None of these is a defect in the source. They become a problem only when the text moves somewhere that treats them as data: a code file, a database key, a CSV column or a URL.

What invisible characters break

They break exact matching, and everything built on it. Two strings that look identical stop being equal, and every downstream comparison inherits the failure.

Search and lookup. A find-on-page for a visible word fails when a zero-width character splits it. A database lookup by name returns nothing.

Code. An invisible character inside an identifier produces a symbol that looks correct and does not resolve. The error message names a variable that appears to exist.

Data files. A U+00A0 inside a numeric column makes the value parse as text, so a spreadsheet sum silently skips the row.

Validation. A form field that looks empty passes a required check, because the value has a non-zero length.

How to remove invisible characters from text

To remove invisible characters, delete the Cf category and fold theZs category to a plain space. Deleting both outright destroys the spacing the text needs.

The scanner does exactly this, with one exception it makes on your behalf.

U+200D Zero-Width Joiner is structural inside emoji. It binds a multi-person emoji into a single glyph, so stripping every Cf character splits one family emoji into four separate people. The cleaner keeps U+200D when it sits between two pictographic characters and removes it everywhere else. Turn the option off to strip it unconditionally.

U+200C Zero-Width Non-Joiner carries meaning too. It is orthographically required in Persian, Hindi and Bengali, where removing it changes the word rather than cleaning it. Leave Cf removal off when cleaning text in those scripts.

Detecting and cleaning in code

Match the category, never a list of codepoints. A codepoint list goes stale with every Unicode release; a category match does not.

The classes \p{Cf} and \p{Zs} work in Python via the regex module, and in Java, .NET, PCRE and JavaScript with theu flag. Full property data for every character the scanner reports is on the Unicode invisible characters table.

For text produced by a language model, the character mix is narrower and the right default differs — see the AI invisible text remover.

Frequently asked questions

01

How do I detect invisible characters in text?

Paste the text into the scanner above. It lists every hidden codepoint with its Unicode name, General Category, occurrence count and position. Without a tool, compare the string length against the visible character count — a mismatch means hidden characters.

02

Is my text uploaded anywhere?

No. Scanning and cleaning both run in your browser using the local Unicode engine. The text never leaves your device and nothing is stored.

03

What counts as an invisible character?

Any codepoint that renders with no mark or with an unexpected gap. The scanner flags General Category Cf (format), Zs (space separators other than a plain space) and Mn (non-spacing marks), plus the blank letters and symbols such as U+3164 and U+2800.

04

Why does my text contain invisible characters I did not type?

They come from the source you copied from. PDF exports, spreadsheet cells, rich-text editors and web pages all carry U+00A0 and U+200B into the clipboard. None of them is inserted deliberately.

05

Will cleaning break my emoji?

No, with the emoji-joiner option left on. U+200D Zero-Width Joiner binds multi-person and profession emoji into one glyph, so the cleaner preserves it when it sits between two pictographic characters and removes it everywhere else.

06

Is this an invisible text detector and remover?

Yes. The same tool does both. It works as an invisible text detector & remover in one pass — it lists every hidden character it finds, then strips them when you click clean. There is no separate invisible character viewer to open.

07

Can invisible characters be detected reliably?

Yes. Every invisible character is a real codepoint with a fixed Unicode category, so an invisible text finder reads them directly rather than guessing. Detection is exact, not probabilistic.

08

How do I find invisible characters in text I received?

Paste it above. To check text for invisible characters without a tool, compare the string length against the visible character count — hidden characters text carries will make the two disagree.

09

How do I convert invisible text to visible text?

There is nothing to convert. Invisible text is ordinary text with extra codepoints added, so turning invisible text to normal text means removing those codepoints. Use the clean button — an invisible text revealer only shows you what is there, and this removes it too.

10

How do I strip invisible characters in code?

Match by category rather than by codepoint. In JavaScript, text.replace(/\p{Cf}/gu, "").replace(/\p{Zs}/gu, " ") removes format characters and folds odd spaces to a plain space. A category match keeps working across Unicode releases; a codepoint list does not.

11

How do I convert invisible text back to normal text?

Paste it into the scanner and clean it. Invisible text is ordinary text with extra codepoints inserted, so removing those codepoints restores the original. Text made entirely of invisible characters has no visible content to restore.

12

Can I see invisible characters in Word or Google Docs?

Partly. Word shows spaces and paragraph marks with Ctrl+Shift+8, and Google Docs has no equivalent. Neither reveals zero-width characters, because both render them as nothing. A scanner that reads codepoints is the only reliable method.

Written by , developer and writer.

Last reviewed