The tool
What the ChatGPT invisible character detector does
Paste text copied out of ChatGPT and this page analyses it for invisible characters and the other habits that survive a copy and paste, then describes what it found in plain language. It is free, it allows five runs per rolling 24 hours, and it takes between 1 and 12,000 characters per run.
Your text is sent to our AI server for that analysis. It does not run in your browser, and if that matters to you, read the next section, because there is a local tool here that does and it may be the one you actually want.
Pick the right one
This detector, or the local ChatGPT character cleaner
These are two different instruments and most pages in this category only sell one of them. This detector is a language model reading your text. It is good at describing what it notices and putting it in context, and it is not a counting instrument. It will not hand you a verified table of codepoints and occurrence counts, and you should not treat any sentence it produces as a measurement.
The ChatGPT zero-width space remover on this site is the other kind. It runs in your browser, nothing is uploaded, there is no usage limit, and it works from a fixed list of 14 invisible and space-like characters. Every one of them is found and removed exactly, because the operation is a comparison against a list rather than a judgement.
So: if you want to know precisely which invisible characters are in your text and get rid of them, use the local cleaner. If you want a description of what your ChatGPT text looks like, including things a fixed list cannot capture, this page is the one.
Procedure
How to check ChatGPT text for invisible characters in three steps
Three steps, and the middle one is where people lose material without noticing.
- Step 1
- Copy the text straight out of ChatGPT rather than out of a document you have already pasted it into. Some editors normalise on paste, which quietly changes what there is to find.
- Step 2
- Paste it into the box on this page. The run accepts 1 to 12,000 characters, so long pieces go through in sections. Leading and trailing whitespace is trimmed before the run, so anything sitting right at the very start or very end may not reach the analysis.
- Step 3
- Read the result as a description, not a count. If you need the exact characters removed, take the text to the local cleaner afterwards.
Reference
The 14 invisible characters the local cleaner handles
Competing pages advertise 87 and 104 characters. One of them lists fourteen codepoints on the page and then writes 'and 90 more' without showing them. Our deterministic list is 14 and here it is in full, which is the whole of it.
- Zero-width group
- U+200B zero-width space, U+200C zero-width non-joiner, U+200D zero-width joiner, U+2060 word joiner. Invisible, they occupy a character slot and they break find-and-replace and spell-check.
- U+FEFF byte-order mark
- A byte-order mark sitting in the middle of a document. Confuses parsers, feeds and validators, and shows as a stray glyph in some editors.
- U+00AD soft hyphen
- Invisible until a line wraps, at which point a hyphen appears in a word that never had one.
- Space look-alikes
- U+00A0 no-break space, U+202F narrow no-break space, U+200A hair space. They look like ordinary spaces and are not, so cleaning replaces them with a normal space rather than deleting them.
- Directional controls
- U+202A and U+202B embeddings, U+202C pop directional formatting, U+202D and U+202E overrides. Invisible controls that reorder how text is displayed, which is why a stray one can make a file name or a link read differently from what it is.
- The exception
- A zero-width joiner sitting between two emoji is building a single glyph rather than hiding in your prose, and it is left alone.
Consequences
What invisible characters in ChatGPT text actually break
Find-and-replace is the usual first casualty. A search for a phrase fails because a zero-width character is sitting inside it, and nothing on screen explains why. The same mechanism breaks spell-check, which sees two fragments where you see a word.
URL slugs and identifiers are worse, because the failure is silent and downstream. A no-break space or a zero-width character in a slug, a filename or a database key produces a value that looks right in every interface and does not match the one you meant.
Then there is wrapping. A no-break space refuses to break, so a line that should wrap runs past its column, and a soft hyphen does the opposite by inserting a hyphen the moment a wrap happens to land there.
Cause
Why ChatGPT text carries invisible characters at all
The popular explanation is deliberate watermarking, and the pages that have looked at it closely mostly reject that. The argument against is simple and good: a marker anyone can delete with one paste into a free tool is not much of a marker.
The narrow no-break space is the one most often associated with ChatGPT output specifically, typically turning up around dashes and numbers. What generates it is not something this page can establish from the outside, and we are not going to guess at intent we cannot verify.
What is worth remembering is that these characters are not exclusive to AI at all. Word processors, content management systems, PDF extraction and ordinary copying between applications all introduce them. Finding one tells you about your text, not about who wrote it.
Straight answer
Does removing invisible characters help with AI detectors?
No, and this has been tested rather than merely argued. Originality.ai published a test of exactly this and reported that adding or removing hidden characters did not change the detectability of AI-generated content.
That result makes sense once you look at what detectors examine. They work on the words: sentence rhythm, vocabulary distribution, structural regularity. An invisible character is not a word and contributes nothing to any of that.
So clean your text because invisible characters break search, slugs and wrapping, which is a real problem with a real fix. Do not clean it expecting a different verdict from a detector, and be wary of any page in this category that lets you believe it will.
In practice
Who checks ChatGPT text for invisible characters, and when
Writers and editors moving drafted text into a CMS, where an invisible character in a headline or a slug causes a problem that is very hard to diagnose after publication.
Developers pasting generated strings into code, config or test fixtures. A zero-width character in a comparison string produces a failure that looks like a logic bug and is not one.
Anyone handing text to another system where it will be searched later. Checking costs one paste. Not checking costs you a search that returns nothing, weeks later.