Invisible character detector
What the invisible character detector does
This app finds the zero-width and non-printing Unicode characters hiding inside a block of text, ones that take up no visible space but sit in the byte stream regardless. It's built for the question people search for, why does my text have hidden characters, answering with a specific list, not a vague warning about AI watermarks.
It runs as a server tool: text you paste goes to our AI server to be scanned, and comes back with every hidden character named and located. You get 5 free checks in any rolling 24 hours, no account, no plan, no upgrade screen behind the free runs.
This app treats a finding as information, not an accusation. These characters turn up in all kinds of ordinary text handling, and the sections below explain honestly where they come from before getting into what to do about them.
Workflow
How to check your own text for invisible characters in three steps
Three steps, and nothing to configure beforehand. Paste plain text, get a plain-language list of findings back.
- 1. Paste your text
- Use the source's own copy button where you can. That's the version most likely to carry hidden characters, and the one worth checking.
- 2. Run the check
- The text goes to our AI server once, gets scanned for hidden Unicode, and the findings come back to the page.
- 3. Read what's flagged
- Each character is named and located. Nothing in your text is changed; the app only reports what it found.
The characters
The hidden characters this app actually looks for
Each is an ordinary Unicode codepoint with a legitimate technical purpose, and each can also turn up as an accidental leftover from copying, converting or formatting text. The scan checks for these specifically:
- U+200B zero-width space
- Takes up a character slot and renders nothing. The most common invisible character in copied text.
- U+200C / U+200D joiners
- Zero-width non-joiner and joiner, meaningful in some scripts and emoji, often a stray leftover elsewhere.
- U+2060 word joiner
- An invisible joiner that prevents a line break at that point, frequently left behind by rich-text conversion.
- U+FEFF byte-order mark
- Meant to sit at the very start of a file, sometimes left stranded mid-document by an export tool.
- U+00AD soft hyphen
- Invisible until a line wraps there, then a hyphen shows up in a word that never had one.
- U+00A0 / U+202F non-breaking spaces
- Look identical to a normal space, behave differently in code, slugs and search.
- Bidi controls (U+202A to U+202E)
- Directional embedding and override characters that can quietly reorder how text displays.
Where they come from
Why hidden characters actually end up in text
This is the part the app is honest about instead of playing up. Despite a lot of talk online about AI tools hiding secret watermarks in their text, that's not what's usually going on. These characters are overwhelmingly incidental artefacts of ordinary text handling: rich-text-to-plain-text conversion, a chat interface tracking cursor position, a word processor exporting a document, or a phone keyboard autocorrecting a space.
Copy text out of a Word document, a Google Doc, a PDF, a translated page or a chat window, and some of these characters can come along regardless of who wrote the underlying words. Finding one tells you something happened during formatting, not that the text was written by an AI model, or by any specific one.
What a finding actually means
Does finding a hidden character prove text is AI-written?
No, and this app won't claim otherwise. A hidden character is a formatting artefact, not a fingerprint. The same characters turn up in human-typed documents exported from Word, translated text, and anything copied through a rich-text editor, with no AI anywhere in the chain.
It's worth separating this from a different, real area of research: statistical, token-level watermarking, where a model can be tuned to slightly bias its word-choice probabilities in a pattern a statistical test can detect. That's a genuine technique. It works on probability distributions across a whole passage, not inserted characters, and no character scan, including this one, can see it. A claim that you can find an AI watermark by scanning for zero-width characters describes something that isn't how real watermarking research works.
Why you might see a flag
Why human-written text can trigger this too
Plenty of ordinary human workflows produce the same characters. Knowing the common causes helps you read a result correctly, instead of jumping to a conclusion it doesn't support.
- Word processor exports
- Word, Google Docs and similar tools insert non-breaking spaces and soft hyphens as part of normal formatting.
- Translation tools
- Machine and professional translation software frequently leaves directional or joining characters behind.
- PDF copy-paste
- Extracting text from a PDF often introduces stray characters the original document never displayed.
- Mobile keyboards
- Autocorrect and predictive text on phones can insert non-breaking spaces where a regular space was intended.
- CMS and rich-text editors
- Switching between rich text and plain text views in a CMS is a common source of leftover formatting characters.
Why it matters anyway
What these hidden characters actually break
These characters cause real problems once text moves somewhere that parses it strictly. A zero-width space in a heading splits a keyword, so a page's slug and visible title stop matching. A byte-order mark stuck inside a JSON file breaks the parser. Non-breaking spaces confuse diffing tools, and directional controls can make a URL display differently from how it resolves.
Where a character came from is a different question from whether it's causing a problem now. This app answers the second question directly and the first honestly, instead of letting a scan result stand in for an accusation.
Who uses it, and the free checks
Who uses this app, and how many free checks you get
Writers, editors, developers and anyone publishing text they didn't type by hand use this to catch formatting problems before they cause one. This app runs the check server-side: your text travels to our AI server to be scanned, then the result travels back, which is why the free run is metered.
You get 5 free checks in any rolling 24-hour window, tracked without an account. Five covers most real uses: one document, one email, one flagged section at a time. For a longer batch, spacing checks across the day works better than burning the allowance at once.