Advertisement

Hidden Unicode Character Checker

Paste code, a diff or a prompt. Every invisible, bidirectional or Unicode-tag character is listed with its line, column and risk level.

Findings
Paste text on the left. Results appear instantly, with line and column for every hidden character.

Something went wrong loading the cleaner. Reload the page and try again.

🔒 Your code never leaves your browser. There is no upload, no server and no logging.Detects hidden characters; it does not judge what the code does.
Advertisement

How it works

  1. PasteSource code, a pull-request diff, a contract, a config or a prompt you were handed.
  2. Read the verdictClean, review, or suspicious, plus a table with the line and column of every finding.
  3. Inspect or removeThe marked text shows each hidden character as U+XXXX in place. One button removes them all.

What it detects

GroupCode pointsRisk
Bidirectional controlsU+202A–202E, U+2066–2069High: can make code display differently from how it executes
Unicode tag charactersU+E0000–E007FHigh: invisible ASCII that can hide text
Variation selectors (supplement)U+E0100–E01EFHigh: can carry hidden data
Direction marksU+200E, U+200F, U+061CMedium
Zero-width charactersU+200B–200D, U+2060, U+FEFFMedium: usually copy-paste residue
Invisible formattingU+00AD, U+180E, U+2061–2064Medium
Control charactersU+0000–01F, U+007F–009F (not tab or newlines)Medium
Unusual spacesU+00A0, U+202F, U+2000–200A, U+3000Low

Joiners and variation selectors that are part of a normal emoji (a family or a heart with its presentation selector) are recognised and ignored, so emoji don’t trigger false alarms.

Why this matters for security

Trojan Source. In 2021, researchers at the University of Cambridge described how bidirectional control characters inside source code can make a program display one way and execute another, so a reviewer reads harmless logic while the compiler sees something else. It was assigned CVE-2021-42574, and many compilers, editors and code hosts now warn about it. But code that arrives as pasted text, a chat message, a patch file or an audit-report snippet doesn’t always pass through those warnings.

Hidden instructions for AI assistants. Unicode tag characters map onto invisible copies of ASCII letters. Text that looks empty can therefore contain a sentence that some language models will read. If you paste untrusted code or documents into an AI assistant, scanning them first is a cheap precaution.

Hidden payloads. Variation selectors and other invisible code points have been reported as a way to smuggle data inside otherwise normal-looking source in supply-chain attacks. A scan takes a second.

A practical routine for reviewers and auditors

  1. Before reading a file or diff that came from outside, paste it here. Any high finding deserves a manual look.
  2. Use the line and column to jump to the exact spot in your editor.
  3. Scan contracts, build scripts and CI configs, not only application code.
  4. Before sending text to an AI assistant, scan it for tag characters.

What it does not do

  • Homoglyphs. Look-alike letters (a Cyrillic “а” that looks like a Latin “a”, CVE-2021-42694) are visible characters and are not flagged.
  • It doesn’t analyse logic. A file with no hidden characters can still be malicious.
  • It isn’t a substitute for linters or compiler warnings. It is a quick extra check.
Advertisement

FAQ

Is a zero-width space always malicious?

No. Most are accidents from copying text out of web pages, documents or chat apps. That is why they are rated medium: harmless in prose, worth removing in code. The high-risk groups are the bidirectional controls, tag characters and the variation-selector supplement.

What is Trojan Source?

An attack described in 2021 (CVE-2021-42574) that uses Unicode bidirectional control characters to make source code appear different from what actually runs. This checker flags every such character.

Can it remove the hidden characters?

Yes. “Remove hidden characters” deletes everything it flagged and converts unusual spaces to regular ones, keeping emoji sequences intact. Review the findings first if the code is untrusted.

Does it find look-alike letters (homoglyphs)?

No. Those are normal visible characters from another alphabet. This tool is about invisible and direction-changing characters.

Is my code uploaded anywhere?

No. The scan runs in your browser. There is no server and nothing is stored.

More tools