Skip documentation navigation

All 47 categories

Hidden characters

Invisible or look-alike characters that model output and chat UIs leave in text.

Category
hidden-characters
Presets
default, ryan, technical, git, all
Scopes
files, code, gh, commit, command, reply
FlaggedFix
a zero-width space, zero-width non-joiner, word joiner, or Mongolian vowel separatorremove the zero-width character
a zero-width joiner outside an emoji sequenceremove the zero-width joiner
a byte order mark after the first characterremove the byte order mark
a soft hyphen or non-breaking hyphenuse -, or remove the soft hyphen
a narrow no-break space or figure spaceuse a plain space
a Unicode tag characterremove the tag character, it can hide text
a variation selector other than the emoji and text selectorsremove the variation selector, it can hide data
a bidirectional control characterremove the bidi control
ChatGPT citation markers: cite followed by turn0search0, or contentReference followed by an oaicite indexremove the citation residue

Anthropic’s text watermark adds no characters, so this pack cannot see it. In a code file the pack reads the whole file, string literals included, through the code scope. U+00A0 is left out: npm READMEs carry it 5.6 times per 10,000 words. A zero-width joiner inside an emoji sequence and tag characters after the black flag (subdivision flags) stay unflagged. A right-to-left project lists hidden-characters in excludePacks or drops the bidi row with its own pack.

Source: Opus 5.5 replies (U+2011 at 0.33 per 10,000 words), Microsoft known issue on LLM hyphens (Apr 2026), OpenAI U+202F reports (2025), Trojan Source bidi controls, Wikipedia:Signs of AI writing.