Invisible Character Remover

Paste text from ChatGPT, Gemini, Word or a website — the tool highlights hidden characters (zero-width spaces, BOM, soft hyphens, no-break spaces, homoglyphs), counts them by type and gives you clean text to copy.

0 / 100 000
Processing happens in your browser — the text is not sent to our server.

Clean text

Where the hidden characters were

ZWSP invisible RLM control/format NBSP special spaces р homoglyph — quotes/dashes (option)
Note: invisible characters in AI answers are formatting and copy-paste artifacts, not a confirmed “OpenAI watermark”. OpenAI has not said it marks ChatGPT text with hidden characters, and removing them does not make text look human to AI detectors — those judge style, not Unicode. Need a report only — watermark detector; em dashes and markdown: AI text cleaner. Need to copy a blank character for a nickname instead? See invisible character.

Remove Invisible Characters and ChatGPT “Watermarks” Online

The tool strips characters you cannot see on screen but that travel to the clipboard with a ChatGPT or Gemini answer, a Word document or text from a website: zero-width spaces, joiners, word joiners, BOM, soft hyphens and bidirectional control marks. No-break and narrow no-break spaces become regular spaces, and homoglyphs (a Cyrillic letter inside an English word and vice versa) are replaced with the right letters. Every character found is highlighted and listed by type with its Unicode code. Runs in your browser, no sign-up.

Removes zero-width spaces, ZWJ, ZWNJ, word joiners, BOM and soft hyphens
Removes bidi control marks (LRM, RLM, LRE…PDI) and other Unicode format characters (category Cf)
Replaces no-break (U+00A0), narrow no-break (U+202F) and other special spaces with a regular space — can be turned off
Finds and fixes homoglyphs: Cyrillic and Latin letters mixed inside one word
Highlights every character in place plus a table with code, count and action
Reveals text hidden in Unicode tag characters; ZWJ inside emojis and flag sequences is kept

How to Use

  1. Paste your text (up to 100,000 characters) or click “Sample”
  2. Pick the options: spaces, homoglyphs, quotes and dashes (the last one is off by default)
  3. Click “Clean text”, review the highlights and copy the clean result

FAQ

There is no confirmation. OpenAI has not announced that it marks ChatGPT answers with hidden characters. Users have found narrow no-break spaces and other special characters in answers, but that does not prove a deliberate mark: such characters also appear when copying from web interfaces and editors. A statistical watermark, if one were used, would live in the word choices, and replacing characters would not remove it.

No. Detectors look at vocabulary, structure and predictability, not at Unicode characters. Cleaning makes the text behave correctly in a CMS, search, validators and character counts; it does not hide where the text came from.

A ZWJ between two emojis (families, professions, tagged flags) is kept. But in Persian, Arabic and Indic scripts ZWJ and ZWNJ are part of spelling, and direction marks are needed for mixed right-to-left text — do not clean such texts with this tool.

No. Detection, highlighting and cleaning run as a script in your browser — the text is not transmitted or stored.

How to remove invisible characters from AI text

To remove invisible characters, paste the text into the box above and click “Clean text”. The script checks every character, finds the ones you cannot see and builds a clean copy. Below the result you get the same text with highlights: red badges (ZWSP, ZWJ, SHY, BOM) are zero-width characters, purple ones (LRM, RLM, PDF) are control marks, blue ones (NBSP, NNBSP) are special spaces, and a yellow outline marks a look-alike letter from another alphabet. Hover over a badge to see the Unicode code point and name.

The table under the highlights answers “what exactly was in my text”: the character, its code, how many times it appeared and what happened to it — removed, replaced with a regular space or with the correct letter. If you switch an option off, the character stays in the text and is marked “kept”.

ChatGPT hidden characters: what you will find

CharacterCodeWhy it causes trouble
Zero width space (ZWSP)U+200BSplits a word for search: “marketing” with a ZWSP inside no longer matches Ctrl+F, and character counts are off.
Zero width joiner / non-joinerU+200D, U+200CSame problems, and they break slugs and URLs if the text ends up in a page address.
Word joinerU+2060Blocks a line break where one is needed.
Byte order mark (BOM)U+FEFFAt the start of a file it breaks PHP headers and JSON; mid-text it breaks search.
Soft hyphenU+00ADInvisible until the line wraps; confuses search and spell-checkers.
No-break and narrow no-break spaceU+00A0, U+202FLook like a space but do not match one in search, string comparison or CSV parsing.
Direction marksU+200E, U+200F, U+202A–202E, U+2066–2069Can reorder characters on screen and confuse editors and code review.

A special case is Unicode tag characters (U+E0020–E007E). Each one encodes an ASCII letter but renders as nothing, so a whole sentence — say, an instruction aimed at a language model — can hide inside normal text. The tool removes tags and shows the text they spelled out. Tags inside emoji flag sequences (such as the flag of England) are left alone.

Is there a ChatGPT watermark in text?

Short answer: there is no confirmed watermark made of hidden characters. OpenAI has publicly discussed statistical watermarking for text but has not announced that it is switched on in ChatGPT. Google uses SynthID Text for Gemini, but that is also a statistical signal: it lives in word choices, not in separate characters.

In 2025 users noticed narrow no-break spaces (U+202F) in answers from some ChatGPT models and called them a watermark. There is no evidence that this is a deliberate mark. Such characters also appear without any intent: from training text, from typography, or when copying from a web interface, Word or Google Docs. The honest framing is that invisible characters are artifacts worth removing before you publish. A “ChatGPT watermark remover” that deletes them does not change a single word, so it has no effect on statistical watermarks or on AI detector scores.

How to remove zero width spaces without a tool

Microsoft Word

Turn on formatting marks (Ctrl+Shift+8): a no-break space shows as a small circle and a soft hyphen as “¬”. In Find and Replace (Ctrl+H) use the special codes ^s for a no-break space and ^- for an optional hyphen. Zero-width characters can be found by code: ^u8203 for U+200B and ^u65279 for the BOM.

Code: JavaScript, PHP, Python

// JavaScript
text = text.replace(/[\u200B-\u200F\u2060-\u2064\uFEFF\u00AD]/g, '').replace(/[\u00A0\u202F]/g, ' ');

// PHP
$text = preg_replace('/[\x{200B}-\x{200F}\x{2060}-\x{2064}\x{FEFF}\x{00AD}]/u', '', $text);

# Python
text = re.sub(r'[\u200b-\u200f\u2060-\u2064\ufeff\u00ad]', '', text)

These one-liners also strip the ZWJ inside emojis, so “👨‍👩‍👧” falls apart into three separate faces. The tool on this page checks the neighbouring characters and keeps a ZWJ that sits between two emojis.

VS Code and other code editors

VS Code highlights invisible and ambiguous Unicode characters by default (editor.unicodeHighlight.invisibleCharacters and editor.unicodeHighlight.ambiguousCharacters). If a template or a string from your CMS shows a box around an “empty” spot, it is usually the same ZWSP or NBSP.

Where hidden characters come from when AI is not involved

Invisible characters do not only come from chatbots. Word and Google Docs insert no-break spaces and optional hyphens through autocorrect, PDFs bring line separators (U+2028) and broken hyphenation when you copy from them, websites ship ­ and   in their markup, and messengers add direction marks to messages that mix Arabic or Hebrew with Latin text. A BOM nearly always comes from a file saved as “UTF-8 with BOM” in Windows Notepad or a similar editor. So it pays to clean any text assembled from several sources, not just AI answers.

How to confirm the text is clean

Paste the result back into the box and run the cleaner again: “No hidden characters found” means the job is done. A second quick test is to compare character counts before and after in the word counter — the difference equals the number of zero-width characters removed. In your CMS, switch to the HTML or code view after pasting: there should be no ​, ‌ or ­ left.

Homoglyphs: a Cyrillic letter inside an English word

Cyrillic а, е, о, р, с, у, х and capitals А, В, Е, К, М, Н, О, Р, С, Т, Х look exactly like Latin letters. A word like “password” typed with a Cyrillic “а” reads normally but fails search, spell-check and exact matching in search engines and databases. The tool looks at each word: if it mixes two alphabets, the minority letters are replaced with their twins from the main alphabet. Words written entirely in one alphabet are not touched, so a Russian or Ukrainian quote inside English text stays intact.

No-break spaces: when to keep them

Space replacement is on by default because no-break and narrow spaces in chatbot output are usually accidental. But typesetters use them on purpose — between a number and its unit (“10 km”), in French punctuation, in thousands separators. If your text has already been through an editor or is going to print, untick the option: the spaces will still be highlighted but left in place.

A quick pre-publishing checklist

  1. Clean the text here and copy the result.
  2. If it is full of em dashes, curly quotes and markdown, run it through the AI text cleaner.
  3. Need a formal report with mark types for a client or an editor? Use the watermark detector.
  4. Whether a text reads as AI-written is a question of style, not Unicode — check it with the AI detector.
RankBotAI — AI SEO Optimization for WordPress

RankBotAI AI plugin automatically finds and fixes SEO issues in WordPress products and posts — no manual editing.

Products & Posts Automatic Optimization Free Trial
Cascade link promotion for your site $30 bonusBacklinks 5→50→5000 across 100+ platforms. From $30 to start, plus a $30 bonus for newcomers.