>_devtools

Invisible Character Detector

Find zero-width spaces, bidi controls, non-breaking spaces, and other hidden Unicode characters, with line and column.

What this does

Finds characters that do not show up on screen but are still in your text: the usual suspects behind code that “looks right” but fails, strings that look equal but are not, and text that was copied from a web page or chat app. Each one is listed with its line, column, code point, and name.

What it looks for

  • Zero-width space, non-joiner, joiner, word joiner, and the byte order mark (U+FEFF).
  • Bidirectional controls such as U+202E (right-to-left override), which can make source code display differently from how it executes. This is the “Trojan Source” technique.
  • Non-breaking and other unusual spaces: U+00A0, U+2000 to U+200A, U+202F, U+205F, U+3000.
  • Soft hyphens, invisible math operators, Hangul fillers, and deprecated format characters.
  • Control characters other than tab and line breaks, and Unicode “tag” characters, which can carry text that is invisible to a reader.
  • Variation selectors, and lone surrogates that make text invalid.

Cleaning up

“Remove hidden characters” deletes zero-width, bidi, and control characters and turns unusual spaces into normal ones. Zero-width joiners and variation selectors that are part of an emoji, such as 👨‍👩‍👧 and ❤️, are neither listed nor removed, because removing them would break the emoji; the same characters between ordinary letters are reported. Characters that do show up, like the replacement character U+FFFD, are listed but not removed.

Notes

Tabs and line breaks are not counted as invisible; use the Whitespace tab to see them. Only the first 1,000 findings are listed, with the total shown.

Privacy

This runs entirely in your browser. Nothing is uploaded.