Invisible character reference · U+200D
Zero Width Joiner (U+200D)
The invisible "glue" that joins emoji and scripts — and a character that shows up unexpectedly in copied AI text, sometimes as an invisible tracking mark. Here's the guide and remover.
By NoAtMark · Published Aug 13, 2026
The short version
| Property | Value |
|---|---|
| Name | Zero Width Joiner (ZWJ) |
| Code point | U+200D |
| UTF-8 bytes | E2 80 8D |
| Appearance | Invisible |
| Purpose | Joins characters (emoji sequences, complex scripts) |
| Danger | Breaks matching; can act as an invisible tracker |
Why it breaks things
- Emoji sequences. A family or skin-tone emoji is built from multiple characters joined by ZWJ. Copy that text and the invisible joiners come with it.
- Copied AI output. Zero width joiners can appear in text copied from AI assistants and web pages, even when you don't see any emoji.
- Tracking marks. ZWJ is one of the characters used to build invisible fingerprints in text — a way to mark copies or trace leaks.
- Data & code. Like other invisible characters, an unexpected ZWJ breaks string equality and validation.
Remove it in one click
Paste text on the left, then hit Scan to see every U+200D ZWJ.
Note: removing a ZWJ can change how a joined emoji renders — that's expected and harmless. For files, use the file cleaner.
Frequently asked questions
Will removing ZWJ break emoji?
It can change how joined emoji (like a family) render — they may split into individual emoji. That's the intended trade-off when you want clean text.
Is ZWJ a tracking mark?
It's one of the characters used in invisible fingerprinting. If a scan finds ZWJ where you don't expect emoji, it may be a tracker.
How do I see ZWJ?
It's invisible. A scanner reports it by code point and position.
References & further reading
- Unicode Standard (ZWJ) — unicode.org
- Invisible characters & tracking — noatmark.com/blog/ai-output-copy-paste-hygiene
- Invisible character remover — noatmark.com/zero-width-character