Zero-width and invisible
NONCHARACTERS (U+FDD0-U+FDEF)
Codepoints Unicode has permanently reserved to never be characters: U+FDD0-U+FDEF plus the last two codepoints of every plane (U+FFFE, U+FFFF, U+1FFFE, and so on).
- Range
U+FDD0-U+FDEF- Also written as
ufdd0-ufdef- Category
- Zero-width and invisible
- Removed by default
- Yes
- Governing option
- No option needed
- Can be load-bearing
- No
There is no copy and paste button on this page, on purpose: this is a block of characters rather than one, and none of them is something you need to paste on its own.
Where it comes from
Internal sentinels that leaked out of a program, corrupted encoding conversions, and fuzzing or payload tools that pick them precisely because nothing legitimate ever uses them.
Why it matters
They are guaranteed never to appear in interchange, so any occurrence is a bug or an intrusion. They also crash or confuse parsers, and because they are permanently unassigned they are not Format characters, so a filter that scans for the "Cf" category misses them entirely.
Before and after
U+FDD0, the first noncharacter: a codepoint guaranteed to mean nothing, anywhere, forever.
The character is shown as a labelled chip so you can see where it sits. In your text it draws nothing at all.
When it is legitimate
Never, in text you send anywhere. Their only sanctioned use is as a private internal sentinel inside one program.
How to remove it
The default pass removes every one of them. Ghostchars lists them explicitly rather than relying on a category test, because their category is "unassigned".
Working in a file rather than a paste? The document report for .docx, .odt and .html finds it inside the file, together with hidden runs and tracked changes, without you having to open it. If the question is what the rest of the writing does rather than what this one character does, measure sentence-length variation and see where each habit sits, with no score and no claim about who wrote the text.
Is it an AI watermark?
Not a watermark
No. A noncharacter in your text is a sign of a broken pipeline or a deliberate probe, never of a language model.
No connection to machine-generated text. It comes from software, from a keyboard, or from a person.
Questions
Why does Unicode reserve codepoints that can never be used?
So that programs have values they can safely use internally as sentinels, knowing no real text will ever contain them.
Why do other cleaners miss them?
Most scan for the Unicode "format" category. Noncharacters are permanently unassigned, so they are not in it and have to be listed by hand.
Check your own text
Paste anything into the cleaner to see every hidden character it contains, with position, codepoint and what happens to each one. Nothing is uploaded.
Check your own textClean it in Chrome as you pasteClean it on your Mac with one keystrokeAll characters