Invisible Texts

Text tool

Zero Width Space Generator

Copy the zero width space (U+200B). A zero-width format character that tells browsers and text engines where a line is allowed to wrap, without showing a hyphen or taking up space.

Live generator
Generate Zero Width Space
Choose how many U+200B characters to copy
Bold output

What the zero width space is for

The zero width space (ZWSP, U+200B) is a Unicode format character with no visible glyph and zero advance width. Its job is to tell a rendering engine where a line is allowed to break. The HTML <wbr> element behaves identically. Browsers and word processors consult these break opportunities when wrapping long strings — a long URL with U+200B characters placed after each slash will wrap neatly at those points instead of overflowing its container. The character was built for scripts like Thai, Lao, and Khmer, which do not use spaces between words; inserting U+200B between words lets the renderer wrap them. In Latin text it has a different set of uses: breaking Twitter @mentions and #hashtags so they do not auto-link, splitting long compound words in German, and quietly marking break points inside long identifiers.

Where U+200B is genuinely useful

Wrapping long URLs and strings

Place U+200B after each slash or period in a long URL and the browser will wrap at those points rather than overflowing the layout. No hyphen appears at the break.

Preventing auto-links in posts

Twitter and other platforms turn @username and #hashtag into links. A zero width space between the symbol and the text breaks the match without changing how it reads.

Word-break control in CSS

Pair U+200B with word-break: keep-all to mark allowed wrapping points in CJK text while suppressing breaks elsewhere. The CSS Text spec names this as the intended pattern.

Text watermarking

Insert U+200B at chosen positions in a document and you have a fingerprint that survives copy-paste but is invisible to readers. Each recipient gets a different pattern.

How U+200B behaves at the edges

U+200B is a format character (general category Cf), not a space. That distinction matters. It is not whitespace, so JavaScript's trim() does not remove it — but it is also invisible, so a string that looks identical to a human can differ at the byte level. Security researchers have used this property to hide payload in identifiers: two strings that render as "admin" can be different to a database if one contains a U+200B. The Trojan Source disclosures (CVE-2021-42574 and CVE-2021-42694) documented how invisible Unicode characters can make source code compile differently from how it reads. On the rendering side, U+200B is widely supported in browsers but stripped by chat apps that sanitize input — WhatsApp and TikTok remove it from messages and bios, while Discord handles it inconsistently across fields. When a platform strips it, the fallback is usually a visible-but-blank character like U+2800 (braille blank).

Notes before you use U+200B

  • U+200B marks a break opportunity; it does not force one. The renderer still decides whether to wrap based on available width.
  • It never shows a hyphen at the break point. For a visible hyphen on wrap, use the soft hyphen (U+00AD) instead.
  • JavaScript trim() does not remove U+200B because it is not classified as whitespace. Use a regex that targets U+200B if you need to strip it.
  • To prevent a break rather than allow one, use U+2060 (word joiner) — the opposite of U+200B, and the modern replacement for the deprecated U+FEFF.
  • Chat apps that sanitize input often strip U+200B. For blank messages or usernames, switch to U+2800 or U+3164.
  • Placing U+200B inside a hashtag or @mention breaks the link. Useful when you want to mention a CSS @media rule without triggering a profile link.

Where the zero width space works

U+200B is supported in every modern browser and most word processors, where it functions as a line-break opportunity. The CSS Text Module spec explicitly references it alongside the <wbr> element as the way to mark wrapping points. In chat apps and social media, support is patchier. WhatsApp, Instagram, and Discord accept it in some fields and strip it in others. TikTok removes it from bios. Game platforms rarely accept it in usernames. The rule of thumb: in a browser or text editor, U+200B is reliable; in a chat app or social input, test first and keep U+2800 or U+3164 as a fallback.

Common questions about U+200B

What does the zero width space actually do?

It marks a position where a line is allowed to break. The character itself is invisible and takes no width, but a browser or text engine that is deciding where to wrap a long line will treat U+200B as an acceptable break point — without inserting a hyphen.

How is U+200B different from a regular space?

A regular space (U+0020) has visible width and is whitespace. U+200B has zero width, is a format character rather than whitespace, and never inserts a visible gap. Its only function is to permit line breaks at a chosen spot inside a word or string.

How do I copy zero width space characters?

Set the count above and click Copy. The characters go to your clipboard with no visible indication, which is expected — paste into the test field to confirm they landed.

Can the zero width space be detected?

Yes. It has a fixed code point (U+200B), so any tool that inspects Unicode can find it. A search targeting that code point will locate every instance. It is invisible to humans, not to software.

Why did my zero width space get stripped?

The platform's input sanitizer removed it. Chat apps and social platforms often filter zero-width format characters to prevent abuse. Switch to braille blank (U+2800) or Hangul filler (U+3164), which are classified as a symbol and a letter and tend to survive filtering.

Is U+200B the same as the HTML <wbr> tag?

Effectively yes. The MDN documentation states that <wbr> behaves like the U+200B code point. Both mark a line-break opportunity with no visible glyph and no hyphen. Use <wbr> in HTML markup; use U+200B in plain text.