Skip to content
Ghostchars

Zero-width and invisible

WORD JOINER (U+2060)

The opposite of a zero width space: an invisible character that forbids a line break at its position, without adding any width.

Codepoint
U+2060
Removed by default
Yes
Governing option
No option needed
Can be load-bearing
No

Where it comes from

Typesetting tools insert it to keep a number and its unit together. It is also the standard replacement for U+FEFF in the middle of a document, so anything that "modernises" a BOM leaves word joiners behind. Steganography tools that expect a filter to catch U+200B often use this one instead.

Why it matters

It is invisible, it is not whitespace, and most zero-width filters only look for U+200B and the joiners — which is exactly why hidden-payload tools reach for it. Two positions, two symbols, and you have a binary channel that survives most cleaners.

Before and after

Before12U+2060kg
After12kg

The word joiner sits between the number and the unit and welds them together.

The character is shown as a labelled chip so you can see where it sits. In your text it draws nothing at all.

When it is legitimate

Keeping "12 kg" or "Fig. 4" from splitting across lines. In prose the same job is better done with a no-break space, which is at least visible as a space.

How to remove it

The default pass removes it. Ghostchars never keeps a word joiner: unlike ZWJ it has no orthographic role in any script.

Is it an AI watermark?

Used to hide data — not a watermark

No. It is a typesetting control that hidden-payload tools have adopted precisely because naive "zero width space removers" ignore it. Nothing about it points at a machine author.

A known carrier for deliberately hidden payloads. Someone put it there on purpose, which is a different question from who wrote the words.

Questions

How is it different from a zero width space?

U+200B permits a line break at its position; U+2060 forbids one. Both are invisible and both are removed by the default pass.

Should I use a no-break space instead?

For prose, usually yes. U+00A0 is visible as a space, so a reader and a diff can both see it, and it does the same "keep these together" job.

Check your own text

Paste anything into the cleaner to see every hidden character it contains, with position, codepoint and what happens to each one. Nothing is uploaded.

Check your own textAll characters