Invisible Character Remover
Every non-printing character in your text, listed by code point and position, with a one-click clean for the ones that are safe to drop.
- Zero-width family
- U+200B, U+200C, U+200D, U+FEFF, U+2060
- Invisible spacing
- U+00A0, U+202F, U+205F, U+3000
- Format controls
- U+00AD, U+2028, U+2029
- Bidi controls
- U+202A to U+202E, U+2066 to U+2069
- Lookalikes
- Unknown: Flagged, never stripped
- Functional characters
- Kept unless you opt in
Not every invisible character is junk
Blanket-stripping every non-printing code point breaks real text. Variation selectors turn a glyph into an emoji. Zero-width joiners hold multi-part emoji together, so a family or a flag falls apart without them. Soft hyphens tell a renderer where a long word may break.
DetectMark separates the two groups. The default clean covers U+200B, U+00AD, and interior byte-order marks, because those are inert almost everywhere they appear. Everything else is shown, explained, and left alone until you tick it.
Lookalikes are flagged and never removed
A Cyrillic а and a Latin a are different characters that draw the same shape. Swapping one for the other silently would change the text, and there is no safe automatic direction to swap in, so lookalikes stay in the report as evidence rather than becoming an edit.
Where these characters come from
Rich-text copy is the usual source. A browser, a document editor, or a chat interface puts an HTML flavour of the selection on the clipboard, and the characters that hold that formatting together survive the trip into a plain-text field.
Models leave them occasionally too. In April 2025 OpenAI's o3 and o4-mini briefly emitted U+202F in long responses, which OpenAI described as a quirk of large-scale reinforcement learning rather than a mark, and which stopped appearing within days.
FAQ
Any Unicode code point that renders as blank, or as an existing character, while occupying its own position. Common examples: U+200B zero-width space, U+FEFF byte-order mark, U+00A0 non-breaking space, U+202F narrow no-break space.
No. Anthropic's Claude watermark is a pattern in word choice, not a hidden character. Invisible characters do turn up in AI text, but they are not the mark.
No. Some are functional: variation selectors on emoji, zero-width joiners in ligatures, soft hyphens for line breaks. DetectMark shows what it will strip and lets you approve or skip each category.
Browsers on rich-text copy, some rich clipboards, and occasional AI outputs. OpenAI's o3 and o4-mini briefly inserted U+202F in April 2025. Any tool that outputs styled text can leave them behind.
No. The scan and the clean both run as code in this browser tab, and none of the pasted text is sent anywhere.
Every check runs in your browser: how it works. The limits are written down too: what DetectMark cannot remove.