Every blank and invisible character in one place, compared by the three things that actually determine whether one will work for you: how wide it renders, whether it survives trimming, and whether it collapses in HTML.
Category decides whether a character survives. Unicode puts most blank characters in the category Zs, Space Separator. Software treats anything in Zs as whitespace, which means it can be trimmed from the ends of a value and collapsed when several appear together. Hangul Filler is the exception that makes this site useful: it renders as blank but is classified as a letter, so trimming ignores it.
Width is fixed or it is not. The regular space is whatever width the font designer chose, and justification stretches it. The per-em spaces are exact fractions of the font size and never change. If you need spacing that stays put, use a fixed-width space.
Sorted by code point. Click any character for its full specification, platform behaviour and copy button.
| Character | Code point | Category | Width | Survives trim() |
|---|---|---|---|---|
| Space | U+0020 |
Zs (Space Separator) | Font-dependent, typically about 1/4 em | No |
| No-Break Space | U+00A0 |
Zs (Space Separator) | Same width as a regular space in the current font | Usually yes |
| Zero Width Space | U+200B |
Cf (Format) | Zero - it occupies no horizontal space at all | Usually yes |
| EN Space | U+2002 |
Zs (Space Separator) | Exactly 1/2 em - half the current font size | Usually yes |
| EM Space | U+2003 |
Zs (Space Separator) | Exactly 1 em - equal to the current font size | Usually yes |
| Three-Per-Em Space | U+2004 |
Zs (Space Separator) | Exactly 1/3 em | Usually yes |
| Four-Per-Em Space | U+2005 |
Zs (Space Separator) | Exactly 1/4 em | Usually yes |
| Six-Per-Em Space | U+2006 |
Zs (Space Separator) | Exactly 1/6 em | Usually yes |
| Figure Space | U+2007 |
Zs (Space Separator) | Exactly the width of a digit in the current font | Usually yes |
| Punctuation Space | U+2008 |
Zs (Space Separator) | Exactly the width of a period in the current font | Usually yes |
| Thin Space | U+2009 |
Zs (Space Separator) | About 1/5 em, though the exact width is left to the font | Usually yes |
| Hair Space | U+200A |
Zs (Space Separator) | The narrowest visible space - typically about 1/10 em or less | Usually yes |
| Narrow No-Break Space | U+202F |
Zs (Space Separator) | Narrow, similar to Thin Space | Usually yes |
| Medium Mathematical Space | U+205F |
Zs (Space Separator) | Exactly 4/18 em - two ninths of the font size | Usually yes |
| Hangul Filler | U+3164 |
Lo (Other Letter) - not whitespace | Renders blank; width varies by platform, often zero or narrow | Usually yes |
| Ideographic Space | U+3000 |
Zs (Space Separator) | Exactly 1 em - full-width, matching a CJK character | Usually yes |
| Left-To-Right Mark | U+200E |
Cf (Format) - invisible, zero width | Zero - it is a formatting mark, not a space | Usually yes |
| Right-To-Left Mark | U+200F |
Cf (Format) - invisible, zero width | Zero - it is a formatting mark, not a space | Usually yes |
Use Hangul Filler (U+3164). It is the only character here that renders as blank and is classified as a letter, which is the combination that gets past required-field validation. This is what powers a blank WhatsApp message, a blank comment and an empty Instagram highlight name.
Use a per-em space. EM Space is one em, EN Space is half an em, and the three-, four- and six-per-em spaces divide it further. All of them scale with the font size and none of them collapse in HTML.
Use No-Break Space for a regular-width gap, Narrow No-Break Space for a thin one, or Figure Space when the gap needs to match a digit.
Figure Space is exactly as wide as a digit and Punctuation Space exactly as wide as a period, which lets you pad plain text into neat columns without a table.
Left-To-Right Mark and Right-To-Left Mark are not spaces at all - they are zero-width instructions that tell the renderer which way ambiguous characters should face in Arabic, Hebrew and other bidirectional text.
Every character on this site has an HTML entity, a JavaScript escape and a CSS escape listed on its own page, and the HTML space characters converter will generate all three for any character you paste in. If you are debugging a string that looks right but does not compare equal, the invisible character detector will show you exactly what is hiding in it, and remove invisible characters will strip it back out.
It depends what you count. There are 17 characters in the Zs Space Separator category, plus a number of zero-width and format characters that render as blank without being classified as whitespace. This page covers the 18 that matter in practice, including Hangul Filler, which is technically a letter.
Zero Width Space (U+200B) has no width at all, and the direction marks U+200E and U+200F are zero-width format characters. Hangul Filler (U+3164) also renders as blank. Every character in the Zs category has a real width, however small.
Only the ASCII whitespace characters collapse - space, tab, newline, carriage return and form feed. Every other Unicode space, including No-Break Space, EN Space and EM Space, renders at full width no matter how many you put in a row.
Hangul Filler (U+3164) is the most reliable, because Unicode classifies it as a letter rather than whitespace so trim() leaves it alone. No-Break Space is the best fallback, since many validators only strip ASCII whitespace.
EM Space (U+2003) and Ideographic Space (U+3000) are both exactly one em wide, matching the current font size. Ideographic Space is designed to align with the square character grid used in Chinese, Japanese and Korean typography.
Explore the most useful guides on BlankText.Net for blank messages, Instagram, gaming nicknames, and Unicode spaces.