U+200C · CHARACTER REFERENCE
Zero Width Non-Joiner
Copy ZWNJ to request a non-joining boundary between letters. It adds no visible word space and can be meaningful in script text.
Copy Zero Width Non-Joiner
Ready. The single-character button copies only U+200C.
U+200C1 Unicode code pointThis field starts with one U+200C; choosing a whole demo changes it to that complete example. Labels and brackets are never included.
See which boundary the non-joiner changes.
U+0635 · U+0644U+0635 · U+200C · U+0644U+0635 · U+0020 · U+0644- Position 1
U+0635 · Sad - Position 2
U+200C · ZWNJ - Position 3
U+0644 · Lam
The sample reads right to left, but the list shows stored, logical order. The complete-demo button copies all three code points; the single-character button copies only U+200C so you can insert it at your own boundary.
Unicode’s cursive-control discussion defines the request and gives a Sad/Lam illustration. A font or renderer can display the sequence differently or disregard the request, so confirm the saved code before diagnosing its appearance.
“Half-space” describes a use, not a fixed gap.
These names often lead to the same non-joining control in Persian typing. It has no intrinsic visible width, so it is not half of an ordinary space. Use it only where the language and text call for a non-joining boundary.
The character can affect cursive connections or ligature selection, including specialized uses in Indic scripts. It does not automatically fix spelling, choose the correct boundary, or make arbitrary letters or emoji behave alike.
If you actually want a small visible gap between Latin letters or numbers, compare Thin Space U+2009. If you want to stop a line break, choose a line-breaking control instead.
Four invisible controls, four different jobs.
| Character | Primary job | What to remember |
|---|---|---|
| ZWNJ · U+200C | Requests less connection between adjacent glyphs | Controls joining; not a no-break guarantee. |
| ZWJ · U+200D | Requests more connected rendering | Also used in supported emoji sequences; effect depends on context. |
| ZWSP · U+200B | Marks a break opportunity | Choose for break behavior, not as a ZWNJ substitute. |
| Word Joiner · U+2060 | Suppresses a break without adding a visible gap | Does not request letters to join or separate. |
The shared “zero width” label does not make the values interchangeable. Unicode distinguishes the joiner characters from line- and word-breaking controls; keep that distinction when editing or cleaning text.
Place it intentionally; check what the destination kept.
- Choose the single character or the whole demo.
For existing text, use one U+200C and insert it between the specific letters. The whole demo is three code points and is only for checking rendering.
- Save, then inspect the saved text.
Use the checker to find U+200C and its one-based code-point position. For the complete Sad/Lam demo, expect three code points, with ZWNJ at position 2. Count and position are more dependable than the gap you see.
- Keep intentional script controls.
If it belongs to the text, preserve it. Comparing strings by appearance can miss this meaningful character:
"ص\u200Cل" === "صل"isfalse. - Remove only a confirmed unwanted value.
The remover leaves U+200C unselected by default. Select it deliberately, inspect before/after text, and keep the original so you can recover the intended boundary.
An app may reject, remove or ignore a format control. This page does not guarantee blank names or video titles. If the stored text changes, follow copy and paste troubleshooting; if the code is preserved, check the destination renderer.
The code label is not the invisible character.
ZERO WIDTH NON-JOINER · Cf (Format)U+200C · 8204‌‌ or ‌"\u200C""\200C"E2 80 8C1 Unicode code pointIn HTML, a parser turns the reference into U+200C. The visible letters in \u200C are an escape notation; the copy button supplies the actual character for a plain text field. A keyboard shortcut can depend on the layout and app, so direct copying avoids assuming a universal shortcut.
"\u200C".trim() === "\u200C" is true. U+200C has no Unicode normalization decomposition, and NFKC preserves it in this single-character test. An application can still use other filtering rules.
Zero Width Non-Joiner FAQ
What is the Persian half-space character?
In Persian typing, “half-space” often refers to Zero Width Non-Joiner U+200C. It changes a joining boundary without being a visible half-width gap. Correct placement depends on the text; this page provides the character, not a grammar checker.
Does ZWNJ stop text from wrapping?
It is a joining control, not a no-break control. ZWNJ does not itself enforce a no-break boundary. Use Word Joiner U+2060 when the task is to suppress a break without adding a visible space.
Why do the letters still look connected after I paste ZWNJ?
Check the saved code points first. The control may have been removed, or the font and renderer may not show the requested distinction. A preserved code point and its visual effect are separate checks.
Does JavaScript trim remove ZWNJ?
No. U+200C is not removed by JavaScript trim(). That does not guarantee an app will accept or preserve it; an app can use additional validation or cleaning.
Should I remove all Zero Width Non-Joiners?
Only when you intend to alter every affected boundary. ZWNJ can be meaningful in script text. Inspect its positions, keep the original and review before/after text when selecting it in the remover.
Can I copy ‌ into any text field?
In HTML source, ‌ is a named reference for U+200C. In plain text it may remain literal. Use the single-character copy control to insert the actual character.
Inspect identity, rendering and saved text separately.
Character properties checked against Unicode 18.0.0. Demonstrations use actual text; the destination font, renderer and input rules determine the final result.