Skip to content

Free · runs in your browser

Invisible Character Remover

Paste text to see every invisible character the cleaner would change, listed by code point, name and position. Cleaning runs entirely in your browser: nothing is uploaded, nothing is charged, and the visible wording is left exactly as it is.

Runs in your browser · nothing uploaded

Findings

Every invisible character the cleaner would change is listed by name, code point and position.

Free and unlimited.

Need the statistical layer too? A token-choice watermark is not made of characters, so it needs the full rewrite instead.

How this works

Deterministic marks can be removed exactly. Probabilistic patterns can only be reduced. Simple Unmark keeps the two separate and does not promise detector outcomes.

  • This tool is deterministic and local. The scan and the cleanup both run in your browser, so the text never leaves your device and no account or credit is needed.
  • It reports each code point individually — the character, its U+ value, its Unicode name and where it occurs — so you can decide what to remove instead of trusting a black box.
  • Zero-width joiners and non-joiners are preserved in valid emoji and same-script contexts, because deleting them there damages text in scripts such as Arabic, Persian, Hindi and Malayalam. Floating or malformed joiners can still be removed as hidden carriers.

Three steps

  1. 1

    Paste or type your text. The scan updates as you type, with no request sent anywhere.

  2. 2

    Review the listed code points. Each row names the character and shows how many times it occurs and where.

  3. 3

    Copy the cleaned text. Only invisible characters change; every visible character stays as it was.

Worked example

Before

user[U+200B]name[U+00AD] = [U+00A0]"value"

After

username = "value"

A zero-width space, a soft hyphen and a non-breaking space removed or normalised. This is why pasted identifiers and config values fail validation while looking perfectly correct on screen.

Scope

What this page can and cannot do

Can

  • List every covered invisible character by code point, name, count and position
  • Remove them locally, in your browser, with no upload and no account
  • Normalise non-breaking and typographic spaces to plain spaces
  • Leave the visible wording completely unchanged

Cannot

  • Tell you which tool or model inserted a character — presence is not provenance
  • Detect a statistical watermark, which is not made of characters at all
  • Fix a token-choice watermark from Gemini or Claude; that needs the full rewrite instead
  • Guess intent: a zero-width joiner may be essential to your text, which is why it is preserved by default

Submitted content and cleaned output are not stored in our application database, and no content is sent to analytics. For rewrites, Private mode routes plaintext through the application, its load balancer, and the processors; Confidential mode encrypts browser-to-workload so our web backend receives metadata only, while DeepInfra still performs text rewrites. Deterministic inspection on the invisible character remover runs entirely in your browser. See the privacy policy and methodology.

Coverage

Every character this tool handles

Published so you can check it rather than trust it. Context matters: joiners, selectors, flag tags and directional controls are preserved in valid emoji, script and layout sequences, but removed when they float as hidden carriers.

Removed (45)

U+00ADSoft hyphen
U+034FCombining grapheme joiner
U+115FHangul choseong filler
U+1160Hangul jungseong filler
U+17B4Khmer vowel inherent AQ
U+17B5Khmer vowel inherent AA
U+180BMongolian free variation selector one
U+180CMongolian free variation selector two
U+180DMongolian free variation selector three
U+180EMongolian vowel separator
U+180FMongolian free variation selector four
U+200BZero width space
U+200CZero width non-joiner
U+200DZero width joiner
U+202ALeft-to-right embedding
U+202BRight-to-left embedding
U+202CPop directional formatting
U+202DLeft-to-right override
U+202ERight-to-left override
U+2060Word joiner
U+2061Function application
U+2062Invisible times
U+2063Invisible separator
U+2064Invisible plus
U+2065Reserved format control
U+206AInhibit symmetric swapping
U+206BActivate symmetric swapping
U+206CInhibit Arabic form shaping
U+206DActivate Arabic form shaping
U+206ENational digit shapes
U+206FNominal digit shapes
U+3164Hangul filler
U+E000Private-use character
U+FDD0Unicode noncharacter
U+FE00Variation selector one
U+FE0FVariation selector sixteen
U+FEFFZero width no-break space
U+FFA0Halfwidth Hangul filler
U+FFF0Reserved default-ignorable code point
U+FFF9Interlinear annotation anchor
U+FFFAInterlinear annotation separator
U+FFFBInterlinear annotation terminator
U+E0000Reserved tag code point
U+E0080Reserved tag-block code point
U+E01F0Reserved variation-selector code point

Normalised to a plain space (16)

U+00A0No-break space
U+1680Ogham space mark
U+2000En quad
U+2001Em quad
U+2002En space
U+2003Em space
U+2004Three-per-em space
U+2005Four-per-em space
U+2006Six-per-em space
U+2007Figure space
U+2008Punctuation space
U+2009Thin space
U+200AHair space
U+202FNarrow no-break space
U+205FMedium mathematical space
U+3000Ideographic space

The cleaner also covers tag characters, private-use ranges, all 66 Unicode noncharacters, supplementary variation selectors and reserved default-ignorable ranges. Complete subdivision-flag tag sequences and other load-bearing controls are preserved contextually.

Questions

About invisible character remover

Sources

Is this really free?
Yes, and unlimited. The scan and cleanup are plain JavaScript running locally, so there is no per-request cost to pass on. Credits apply only to the model-backed rewrite, which is a separate tool.
Does the visible text change?
No. This tool only touches invisible characters and unusual spaces. If you also want the wording rewritten to address a statistical watermark, use the AI watermark remover instead.
Why can hidden characters break things?
Because software compares bytes, not appearances. A zero-width space inside an identifier, URL, password field or code sample makes two visually identical strings unequal, which surfaces as a validation error with no visible cause.
Do invisible characters prove text is AI-generated?
No. They are inserted by web pages, editors, PDF exports and chat clients for ordinary layout reasons. Treating them as an AI fingerprint is a common and unfounded claim.