Hidden Character Remover
Paste text from ChatGPT, Claude, Gemini or anywhere else to see every invisible character in it, marked exactly where it sits, then remove them without changing a visible letter.
What happens to your text.
The text is read one character at a time in your browser. Each invisible character is identified by its Unicode code point and sorted into a type. Runs of tag characters and variation selectors are decoded, because those two can carry a complete hidden message. Context decides what is legitimate: the tags inside a flag emoji, the joiner between the parts of a family emoji and a single selector after an emoji are kept. Removal only touches the types you leave switched on, unusual spaces are replaced with an ordinary space so no two words run together, and the cleaned text is scanned again so the result is checked rather than assumed.
Where it stops: This works on characters. Some AI providers watermark text statistically, in the choice of words, and that kind of mark is not a character: no character tool can see or remove it, and this one does not claim to. It cleans plain text; a PDF needs the PDF tool, which keeps the file a PDF.
What each type of hidden character does
| Type | Examples | Why it matters | By default |
|---|---|---|---|
| Zero-width characters | U+200B zero width space, U+200D zero width joiner, U+FEFF byte order mark | Invisible, but they break search, word counts, comparisons and code | Removed; a joiner inside an emoji is kept |
| Tag characters | U+E0000 to U+E007F | Invisible copies of ordinary letters that can spell out an instruction an AI tool reads and you do not, sometimes called ASCII smuggling | Removed; flag emoji are kept |
| Variation selectors | U+FE00 to U+FE0F, U+E0100 to U+E01EF | One after an emoji is normal; a long run can carry hidden data | Runs removed; single ones kept |
| Direction controls | U+202E right-to-left override, U+2066 to U+2069 isolates | Make text display in a different order from how it is stored, which can disguise a file name or code | Removed |
| Invisible formatting | U+2062 invisible times, U+3164 Hangul filler | Take up no space; used to pad names and slip past filters | Removed |
| Control characters | U+0000 to U+001F, except tab and line breaks | Not meant to appear in text and can break parsers | Removed |
| Soft hyphens | U+00AD | Only appear when a word breaks at a line end, but still split the word for search | Removed |
| Unusual spaces | U+00A0 no-break space, U+202F narrow no-break space | Look like a space but do not match one in search, code or spreadsheets | Replaced with an ordinary space |
Do AI chat tools add hidden characters?
It varies between tools and changes over time, so claims either way age quickly. What can be checked is the text in front of you: paste it here and every invisible character is shown by name. Where nothing is found, the text genuinely contains nothing hidden at the character level, and that is worth knowing too.
What people use it for.
Everything you need, without a paywall.
Common questions.
How do I remove hidden characters from text?
Paste the text or drop a text file. Every invisible character is listed and marked where it sits. Leave on the types you want removed, then copy the cleaned text or download it. The cleaned text is checked again before you use it.
Does this remove ChatGPT or other AI watermarks?
It removes watermarks made of invisible characters, if a text contains any. It cannot remove statistical watermarks, such as Google SynthID Text, which are patterns in word choice rather than characters; only rewording changes those, and this tool never rewrites your text.
What is a hidden message in tag characters?
Unicode has invisible copies of the ordinary letters, digits and punctuation, called tag characters. A run of them can spell out a sentence that you cannot see but an AI model can read, which is how instructions get smuggled into copied text. This page decodes and shows that text before removing it.
Will it break emoji?
No. Flag emoji such as England and Scotland use tag characters, family and profession emoji use zero-width joiners, and some emoji use a variation selector. Those are recognised from the characters around them and kept.
Is my text uploaded?
No. Everything happens in your browser, including files you drop in. Nothing is sent to a server.
Can it clean PDF files?
This page cleans plain text and text files such as TXT, Markdown, CSV, JSON, HTML and subtitles. For a PDF, use Remove Invisible Characters from PDF, which cleans the document and keeps it a PDF.
You might also need.
Clean messy text by removing duplicate spaces, empty lines, HTML, invisible characters and unwanted formatting.
Remove invisible characters, zero-width marks and hidden PDF data before sharing: metadata, comments, bookmarks and embedded attachments. Your text stays real, selectable text and the page is never turned into an image.
Count words, characters, sentences and paragraphs instantly and calculate reading time, speaking time and keyword density.
Convert text between uppercase, lowercase, title case, sentence case, camelCase, PascalCase, snake_case and kebab-case.