Skip to content
CaseConverterHQ

Invisible character remover

Paste text and every non-printing character in it is listed by name, code point and position before anything is removed. Zero-width spaces, soft hyphens, directional marks and the exotic spaces all show up; your accented letters, CJK and right-to-left text do not move.

Paste some text and anything invisible in it is named here, before anything is removed.

    Change the case

    Programmer cases

    Lines and spacing

    Clean up pasted text

    Paste some text and choose a conversion.

    Words
    0
    Characters
    0
    No spaces
    0
    Sentences
    0
    Paragraphs
    0
    Lines
    0
    Read time
    0 sec

    Nothing you paste leaves your browser — every conversion runs on this page. Check this before you rely on it. This text converter is provided free and without warranty, and its results are not professional advice.

    Where the hidden characters come from

    Almost none of them were typed. A zero-width space is inserted by publishing systems as a hint about where a long word or URL may break. A soft hyphen is left behind by justified text in Word or InDesign, marking a hyphenation point that only appears when the line needs it. A byte order mark sits at the front of a file saved as UTF-8 by a Windows editor, and travels with the first cell when you copy a spreadsheet.

    Directional marks come from anything that has been near right-to-left text: a Hebrew or Arabic phrase in an otherwise English document arrives wrapped in invisible controls that tell the renderer where the direction changes. Translation memory tools and localisation platforms add them liberally, and they are copied along with the words.

    The reason to care is that none of this is visible while you debug. A search for a word that is plainly on screen returns nothing. Two identical-looking lines refuse to deduplicate. A CSV import fails on a header that looks perfectly ordinary. In every one of those cases the character is there in the string, and this page will name it and tell you which line and column it is sitting in.

    The narrow no-break space and the watermark story

    U+202F, the narrow no-break space, is the character that gets called an AI watermark. It began turning up in chatbot output — often before a colon or a percent sign — and since almost nobody types it deliberately, its presence looked like a signature.

    It almost certainly is not one. The narrow no-break space is an ordinary typographic character with a long-established job: French typography puts it before a colon, a semicolon, an exclamation mark and a question mark, and it is used as a thousands separator in several conventions. A model trained on well-typeset text has seen a great deal of it. No vendor has claimed to be marking text this way, and it would be a strange choice if one wanted to: a watermark that any text box strips on paste, that this page removes in a click, and that never survives a retype is not much of a watermark.

    That said, removing it is usually right, because it is a no-break space and things that expect a normal space do not recognise it. Here it becomes an ordinary space rather than disappearing, so 10 % does not turn into 10% and words either side of it never weld together.

    What this tool refuses to remove

    A zero-width joiner is junk between two Latin letters and load-bearing between two emoji: it is the character that makes a family emoji one glyph instead of four. It does the same work in Devanagari, Arabic, Bengali and a dozen other scripts, where it selects which form a letter takes. So a joiner is removed when its neighbours are Latin letters and kept when they are emoji or letters of a script that joins — and the report says which of the two happened.

    Variation selectors are left alone entirely. U+FE0F is what makes a heart render as a red emoji rather than a black dingbat, and stripping it visibly changes the text. So is U+3000, the ideographic space, which is a real character of visible width in Japanese and Chinese typesetting rather than an accident of copying.

    Everything printable is untouched by definition. Accented Latin, Greek, Cyrillic, Hebrew, Arabic, Thai and CJK characters are ordinary letters, and the only things this removes are the controls and the zero-width characters in the table below. The bidirectional controls are the exception worth knowing about: they are removed, and in a document that mixes English and Hebrew that can change how a line is laid out — which is exactly why the ones found are listed before you press the button.

    What a scan actually tells you

    The line The invoice subtotal is 10 %. looks entirely ordinary and holds four characters that are not. Pasting it into the box above produces the list below, generated here by the same function the page runs:

    CharacterNameCountFirst seenWhat happens
    U+00A0No-break space1line 1, column 4Becomes a space
    U+00ADSoft hyphen1line 1, column 30Removed
    U+200BZero-width space1line 1, column 16Removed
    U+202FNarrow no-break space1line 1, column 28Becomes a space

    Every character the scanner knows

    Anything not on this list is a printable character and is left exactly where it is.

    Code pointNameWhat happens to it
    U+0000–U+0008Control characterRemoved
    U+000B–U+000CVertical tab or form feedRemoved
    U+000E–U+001FControl characterRemoved
    U+007FDelete control characterRemoved
    U+00A0No-break spaceBecomes an ordinary space
    U+00ADSoft hyphenRemoved
    U+061CArabic letter markRemoved
    U+115F–U+1160Hangul fillerRemoved
    U+180EMongolian vowel separatorRemoved
    U+2000En quadBecomes an ordinary space
    U+2001Em quadBecomes an ordinary space
    U+2002En spaceBecomes an ordinary space
    U+2003Em spaceBecomes an ordinary space
    U+2004Three-per-em spaceBecomes an ordinary space
    U+2005Four-per-em spaceBecomes an ordinary space
    U+2006Six-per-em spaceBecomes an ordinary space
    U+2007Figure spaceBecomes an ordinary space
    U+2008Punctuation spaceBecomes an ordinary space
    U+2009Thin spaceBecomes an ordinary space
    U+200AHair spaceBecomes an ordinary space
    U+200BZero-width spaceRemoved
    U+200CZero-width non-joinerRemoved, unless it is joining emoji or letters of a script that needs it
    U+200DZero-width joinerRemoved, unless it is joining emoji or letters of a script that needs it
    U+200ELeft-to-right markRemoved
    U+200FRight-to-left markRemoved
    U+202A–U+202EBidirectional formatting controlRemoved
    U+202FNarrow no-break spaceBecomes an ordinary space
    U+205FMedium mathematical spaceBecomes an ordinary space
    U+2060Word joinerRemoved
    U+2061–U+2064Invisible mathematical operatorRemoved
    U+2066–U+2069Bidirectional isolate controlRemoved
    U+3164Hangul filler (halfwidth block)Removed
    U+FEFFZero-width no-break space (byte order mark)Removed
    U+FFA0Halfwidth Hangul fillerRemoved
    U+E0000–U+E007FUnicode tag characterRemoved

    Common questions

    How do I find invisible characters in text?

    Paste it into the box. Every non-printing character is listed as you type, with its Unicode name, its code point and the line and column where it sits — before anything is changed.

    Is there a hidden watermark in ChatGPT output?

    No vendor has said so, and the character usually named as one — the narrow no-break space, U+202F — is a legitimate typographic space that appears widely in well-set text. A mark that vanishes on a retype would not be a useful watermark anyway.

    Will this damage emoji or non-English text?

    No. Letters in every script are printable characters and are never touched, and the zero-width joiner is kept wherever it is doing a job — inside a multi-part emoji, or between letters of a script that joins.

    Why does a search fail on a word I can clearly see?

    Because something invisible is sitting inside it — most often a zero-width space or a soft hyphen left by a word processor. The scan will name it and give you its position, and stripping it makes the word findable again.

    Other text tools