Hidden Unicode Check

Paste CLAUDE.md, AGENTS.md, .cursorrules, copilot-instructions.md, a README, a PR description, or any text and find every zero-width character, invisible Unicode tag character, and bidirectional override character hiding from a human reviewer -- while an AI coding agent reading the raw bytes still sees them.

Mechanical checks, not a security audit. This tool reports the exact codepoints below at the exact positions they occur -- it never contacts a server. A finding is something worth a human look, not a verdict, and a clean result is not a safety guarantee.

1. Paste or load a file

Everything happens in this page. A pasted or uploaded file is never sent anywhere.

Findings

Paste text above, load a file, or load the example, to see findings.

Usage is optional, stays in this browser, and counts only that a scan ran or a summary was copied. Nothing you paste or upload -- no text contents, filenames, or findings -- is ever recorded, uploaded, or sent to an analytics service. Uncheck to turn it off. Do Not Track and Global Privacy Control disable counting automatically.

Common questions

What counts as a "hidden" Unicode character here?

Two families. Invisible characters render as no visible glyph at all — zero-width spaces and joiners, the byte-order mark, Unicode Tag characters, and similar — so a person skimming the file sees nothing unusual while a program reading the raw bytes sees and can act on them. Bidirectional-control characters don't hide a character, they can hide what order characters render in, which is the Trojan Source technique.

Does this tool upload my file or contact a server?

No. Pasted text stays in the textarea; an uploaded file is read locally with the browser's File API and never leaves your device. This page makes no network request of its own.

What are Unicode Tag characters, and why does this tool decode them?

Tag characters (U+E0000–U+E007F) are invisible and map one-for-one onto printable ASCII. Since 2024 they have been the documented payload channel for hiding an entire instruction inside a file an AI agent will read — sometimes called ASCII smuggling. Rather than just flagging that tag characters are present, this tool decodes a run of them back into the plaintext they spell out, because showing what the hidden text says is more useful than just knowing something is hidden.

What is a bidirectional override character, and why does it matter?

RLO/LRO and their relatives (U+202E, U+202D, and the embedding/isolate family) tell a text renderer to display characters in a different visual order than they are stored in. First published as "Trojan Source" in 2021, this can make reviewed source code or text visually read one way while a compiler, interpreter, or agent processes the actual stored order — hiding a change inside what looks like a comment or a string.

Does a clean scan mean the file is safe?

No. This tool only reports the exact codepoints in this list at the exact positions they occur. A clean result means none of them were found in the text you pasted — it is not a security audit, and it says nothing about a prompt-injection technique that uses only ordinary visible characters.