Word Joiner U+2060

Copy the word joiner (U+2060), an invisible character that stops a line break without adding space. It replaces U+FEFF as the zero-width no-break.

Remove the Word Joiner from your text

Paste your text below. It stays in your browser; nothing is uploaded.

Other hidden characters too? Scan for all of them

Codepoint
U+2060
Decimal
8288
HTML
⁠
CSS
\2060
JS
\u2060
URL
%E2%81%A0
UTF-8
E2 81 A0
Category
Format (Cf)
Block
General Punctuation

The word joiner (U+2060) is a zero-width invisible character that prevents a line break at its position. It is the opposite of the zero-width space: ZWSP says "you can break the line here," word joiner says "you must NOT break the line here."

Think of it as a non-breaking space with no width. Unicode 3.2 added it to take over the inline no-break job from the byte order mark (U+FEFF), which now only marks file encoding.

Common Uses

  • Number and unit. 100[WJ]% keeps "100%" on one line with no gap.
  • Inline code. Function names and expressions in documentation won't break mid-word.
  • Compound terms. Technical terms, product names and abbreviations stay whole.
  • Orphaned punctuation. A colon, semicolon or other mark won't start a new line.
  • Responsive layouts. CSS white-space: nowrap blocks every break in an element. Word joiner works per character.

How to Type

PlatformMethod
WindowsNo keyboard shortcut. Copy from this page, or in Microsoft Word type 2060 then press Alt+X.
macOSNo keyboard shortcut. Copy from this page.
LinuxCtrl+Shift+U, type 2060, press Enter.
HTMLType ⁠ or ⁠.
JavaScriptUse \u2060 in strings.
CSSUse content: '\2060'; but rarely needed in CSS.

Word Joiner vs Non-Breaking Space

FeatureWord Joiner (U+2060)Non-Breaking Space (U+00A0)
Prevents line break?YesYes
Has visible width?No (zero width)Yes (same as regular space)
Adds space between words?NoYes
HTML entity⁠ 
Use whenYou want no-break with no gapYou want no-break with a visible space

Example

  • Dr. Smith displays "Dr. Smith" on one line. Usually what you want.
  • Dr.[WJ]Smith displays "Dr.Smith". Usually wrong.
  • 100[WJ]% displays "100%" with no gap. Correct.
  • 100 % displays "100 %". Depends on your style guide.

The Zero-Width Character Family

CharacterLine break?Joining?Purpose
Zero-Width Space (U+200B)Allows breakNone"Break here if needed"
Word Joiner (U+2060)Prevents breakNone"Never break here"
Zero-Width Non-Joiner (U+200C)No effectPrevents joining"Don't connect these letters"
Zero-Width Joiner (U+200D)No effectForces joining"Connect these characters"

Technical Details

  • Unicode category: Cf (Format).
  • Width: Zero. No visible glyph.
  • Line breaking: Prevents line breaks (class WJ in the Unicode Line Breaking Algorithm).
  • Word breaking: Does not affect word boundaries.
  • Bidirectional class: BN (Boundary Neutral). Does not affect text direction.
  • History: Introduced in Unicode 3.2 (2002) to replace U+FEFF as an inline zero-width no-break space.

In code:

js
// JavaScript: detect word joinertext.includes('\u2060')
// JavaScript: remove word joinerstext.replace(/\u2060/g, '')
// JavaScript: insert word joiner between a number and unit`${value}\u2060${unit}`
// HTML: keep "100%" from breaking100⁠%

When to Use CSS Instead

On the web, CSS is usually easier to maintain:

css
/* Prevent all line breaks in an element */.no-break { white-space: nowrap; }
/* Prevent breaks between specific elements */.unit { display: inline-block; } /* inline-block won't break internally */

Use word joiner for plain text, for per-character control CSS can't give, for output without CSS (emails, PDFs, plain text files), and for internationalized text where CSS white-space isn't precise enough.

Security Considerations

Word joiner is low-risk. It does not affect text direction or enable bidirectional override attacks. Two minor concerns:

  • String comparison. Strings that look identical may differ by a word joiner and fail to match.
  • Length calculation. It adds to the code point count without visible length, which could in theory bypass character limits.

Quick Reference

I want to...Use thisCharacter
Allow a line break with no visible markZero-Width SpaceU+200B
Allow a line break with a visible hyphenSoft HyphenU+00AD
Prevent a line break with a visible spaceNon-Breaking SpaceU+00A0
Prevent a line break with no visible spaceWord JoinerU+2060

Frequently Asked Questions

What is the difference between word joiner and non-breaking space?

Both prevent line breaks. Non-breaking space (U+00A0) also adds a visible space between words. Word joiner (U+2060) adds no space at all. Use word joiner when you need no-break behavior with no gap.

What is the difference between word joiner and zero-width space?

They are opposites. Zero-width space (U+200B) allows a line to break at its position. Word joiner (U+2060) prevents a break there. Both are invisible and zero-width, but they have opposite effects on text wrapping.

Why was word joiner created?

The byte order mark (U+FEFF) once had two jobs: marking encoding at the start of files and acting as an inline zero-width no-break space. Unicode 3.2 split these roles and created word joiner (U+2060) for the inline no-break job.

When should I use word joiner?

Use word joiner to keep two elements on the same line without adding visible space. Examples: between a number and its unit symbol, between parts of a code snippet, or anywhere a line break would confuse the reader.