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 point

This 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.

No inserted controlصلU+0635 · U+0644
ZWNJ between lettersص‌لU+0635 · U+200C · U+0644
Ordinary space insteadص لU+0635 · U+0020 · U+0644
Demo: Arabic letters Sad and Lam, shown as actual text in your current font. This is a shaping example, not a word or spelling recommendation. ZWNJ requests separation without inserting an ordinary word space.
  1. Position 1U+0635 · Sad
  2. Position 2U+200C · ZWNJ
  3. Position 3U+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.

Persian half-space / ZWNJ / U+200C

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.

CharacterPrimary jobWhat to remember
ZWNJ · U+200CRequests less connection between adjacent glyphsControls joining; not a no-break guarantee.
ZWJ · U+200DRequests more connected renderingAlso used in supported emoji sequences; effect depends on context.
ZWSP · U+200BMarks a break opportunityChoose for break behavior, not as a ZWNJ substitute.
Word Joiner · U+2060Suppresses a break without adding a visible gapDoes 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.

  1. 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.

  2. 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.

  3. Keep intentional script controls.

    If it belongs to the text, preserve it. Comparing strings by appearance can miss this meaningful character: "ص\u200Cل" === "صل" is false.

  4. 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.

Copy success is only the first step.

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.

Official name / categoryZERO WIDTH NON-JOINER · Cf (Format)
Code point / decimalU+200C · 8204
HTML named reference‌
HTML numeric references‌ or ‌
JavaScript string"\u200C"
CSS string escape"\200C"
UTF-8 bytesE2 80 8C
Default copy amount1 Unicode code point

In 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.

It survives JavaScript trim(), but that is not app compatibility.

"\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.

Back to all characters · Compare Zero Width Joiner