Skip to content
Colour theme

Find invisible characters in text

Some characters take up no space at all. Paste anything below to see where they are, what they are, and what they decode to, then remove them without touching your code, links or emoji.

The tool

Original

0 words · 0 chars

Processed

Nothing to inspect yet

Paste text on the left. Invisible characters appear here as amber marks, in the place they occupy.

Model watermark

separate mechanism

Some AI systems encode a statistical signal directly into word or token choices. It is not a character you can look for, so detecting it depends on the specific provider’s method.

    The surface signals listed separately are characters, not a model watermark. Finding them does not indicate that text was generated by any particular system.

    When a provider publishes a detection method, it is added here, and removal is developed and measured against it. The plan

    What it detects

    Every category below is deterministic. A character either is U+200B or it is not, so there is no probability, no scoring, and no guessing involved.

    Zero-width character
    Takes up no space and is invisible when read. Sometimes used to carry hidden data, often just an artefact of copying between editors.
    Unicode tag character
    Part of a Unicode block that maps one-to-one onto ASCII. It can carry a hidden message that is completely invisible in normal text.
    Variation selector
    Selects an alternate glyph form. Legitimate after emoji and some CJK characters; otherwise it can be used to encode data.
    Bidirectional control
    Changes the direction text is displayed in. Legitimate in right-to-left writing, but can also make text read differently than it is stored.
    Unusual whitespace
    A space character that is not the ordinary one. Usually harmless typesetting, but it survives copying and can be used as a marker.
    Soft hyphen
    An invisible hyphenation hint. It only appears if the word breaks across a line, so it is invisible almost everywhere.
    Look-alike character
    A character from another alphabet that looks like a Latin letter. This is how look-alike domain names and identifiers are built.
    Mixed-script character
    A single word containing letters from more than one alphabet. Rare in genuine text and a common sign of substituted characters.
    Typographic character
    Curly quotes, dashes and similar. Extremely common in ordinary writing from any word processor. Reported for completeness, not as a signal of anything.

    The one that gets the most attention

    Unicode reserves a block from U+E0000 to U+E007F called tag characters. The range U+E0020 to U+E007E maps one-to-one onto printable ASCII, so an entire readable sentence can be encoded into characters that render as absolutely nothing. Paste text containing them here and the decoded message is shown back to you.

    The same block legitimately builds the Scotland, Wales and England flag emoji, which is why removal is context-aware rather than a blanket strip.

    Common questions

    What are invisible characters doing in my text?
    Usually nothing sinister. Copying between a word processor, a web page, a PDF and a chat window picks them up: zero-width spaces from line-breaking logic, non-breaking spaces from layout, soft hyphens from hyphenation. They matter because they survive copying and can break search, comparison, code and form validation.
    Does finding them mean the text was written by AI?
    No. They are not evidence of that, and this tool never presents them as such. Invisible characters come from ordinary software. A model-level watermark is a completely different mechanism that lives in word choice rather than in characters, and no public detector for one exists. When a provider publishes one, detection is built here first, and removal is developed and measured against it.
    Will this break my emoji or my Persian text?
    No. Zero-width joiners inside emoji sequences, zero-width non-joiners in Persian and Indic scripts, and the tag characters that build flag emoji are detected and deliberately kept. The interface lists exactly what was kept and why.
    What happens to code and links?
    Invisible characters are removed everywhere, including inside code, which is precisely where a hidden character does damage. Visible punctuation is left alone inside code blocks, inline code, URLs, Markdown link targets and HTML tags, because changing a dash or a quote there would change meaning.
    Is my text sent anywhere?
    No. The analysis is a function running on the string in your browser tab, and there is no server to send it to. Be aware that this page carries Google advertising, so a Google script is present in the page alongside your text; it is not sent anywhere by us, but if that matters to you the same tool is at /app/text, where a second content security policy makes any third-party script and any outbound request impossible.