U+2009 · CHARACTER REFERENCE

Thin Space

Copy a narrow typographic space. U+2009 adds a small gap; it is different from a narrow no-break space.

Copy Thin Space

Ready. The single-character button copies only U+2009.

U+20091 Unicode code point

This field starts with one U+2009; choosing a whole demo changes it to that complete example. Labels and brackets are never included.

See the gap in actual text.

Ordinary Space10 kgU+0020
Thin Space10 kgU+2009
Narrow No-Break Space10 kgU+202F
Demo: the visible characters are identical; only the gap changes. This is your browser’s current font rendering, not a fixed width measurement.

U+2009 adds a narrow gap. It can help with short typographic separation, such as between a value and a unit or within a number grouping. Follow the style rules for your document; if the two parts must stay together, choose a no-break character separately.

The exact width is font-specified, and Thin Space can sometimes adjust during justification. The Unicode space-character discussion explains why a code point is more reliable than an assumed pixel width.

Narrow does not automatically mean no-break.

CharacterWhat it doesChoose it when
Thin Space · U+2009Narrow gap; break opportunityYou need a small typographic separation.
Narrow No-Break Space · U+202FNarrow gap that resists wrappingYou need a narrow gap and want both sides kept together. Find U+202F in the directory.
Ordinary Space · U+0020Normal word spacingYou need the usual word separator.
Hair Space · U+200AA still finer typographic gapYou need a smaller adjustment; inspect the destination font.
Em Space · U+2003A wider typographic gapYou want a broader pause rather than a narrow gap.
Spacing and wrapping are two decisions.

For a usual-width gap that resists a break, see No-Break Space. If no visible gap is wanted but a break must be suppressed, see Word Joiner. Your app can apply layout rules beyond the Unicode default.

Use the character for text; use a reference for code.

Official name / categoryTHIN SPACE · Zs (Space Separator)
Code point / decimalU+2009 · 8201
HTML named reference 
HTML numeric references  or  
JavaScript string"\u2009"
CSS string escape"\2009"
UTF-8 bytesE2 80 89
Unicode compatibility mappingU+2009 → U+0020

The copy control outputs one real space, not the visible letters U+2009 or the six-character escape \u2009. Numeric and named references become characters when parsed as HTML; typed into a plain text field, they may stay literal.

Trimming and normalization can change different things.

Demo: one Thin Space before and after 10, followed by a separate value/unit example. These are JavaScript operations, not a claim about what your app runs.

const edge = "\u200910\u2009";
[...edge].length;                 // 4 code points
edge.trim();                      // "10" (2 code points)

const inside = "10\u2009kg";
inside.trim() === inside;         // true; interior gap stays
inside.normalize("NFKC");         // "10 kg", gap is U+0020
inside.normalize("NFC") === inside; // true; U+2009 stays
A changed gap does not identify the cause.

U+2009 has a compatibility mapping to U+0020. NFKC can apply that mapping; trimming removes edge whitespace instead. Keep the original, inspect the saved code points, and avoid running broad normalization just to fix one gap.

References: ECMAScript trim and Unicode normalization forms. The input and results above can be reproduced in a JavaScript console.

Find out whether the gap changed or just looks different.

The code is still U+2009, but the gap looks different

Check the font, font size and justification settings. Preserve the character if it is intentional; changing its visual width is a different task from changing stored text.

The gap became U+0020

The destination may have converted it. Check your saved text before replacing anything. A code-point change can result from normalization or another transformation.

The character vanished or the field was rejected

Check whether it was at a string edge and whether the destination permits that input. Follow its field rules; repeating invisible characters does not guarantee acceptance.

  1. Copy, paste and save a small sample.

    Try 10 kg with one U+2009, then copy back the saved text. This separates the copy request from what the destination actually kept.

  2. Inspect the full character breakdown.

    In the checker, the gap should be U+2009 at code-point position 3. Thin Space is currently outside its named/flagged set: look in the all-character breakdown, even when it says no flagged characters were found.

  3. Replace only if a regular gap is what you want.

    In an editor, find the actual U+2009 from this page and replace it with U+0020. Compare the result. The current normalizer and remover do not specifically convert Thin Space.

For a broader failure, follow copy, paste, save and display troubleshooting. For webpage layout, use CSS spacing rather than strings of narrow characters.

Thin Space FAQ

Is a thin space half the width of a normal space?

No fixed ratio is guaranteed. U+2009 is a narrow typographic space whose actual width depends on the font and layout. A Persian “half-space” usually means U+200C, a different, zero-width character.

Is Thin Space the same as Narrow No-Break Space?

No. U+2009 is Thin Space and allows a line-break opportunity. U+202F is Narrow No-Break Space and is intended to resist a break. A similar-looking gap does not mean the code points are interchangeable.

Why does a thin space disappear when it is the whole field?

One possible reason is JavaScript trim(): it removes U+2009 at string edges, including a string containing only that character. An app may use other validation rules, so inspect its saved value before deciding why it changed.

Can I use   in a plain text message?

The HTML reference   produces U+2009 when an HTML parser reads it. A plain text message may show the literal reference instead. Use the character copy button for plain text.

Can the whitespace normalizer convert U+2009?

Its current rules cover ordinary spaces, tabs, NBSP and blank lines; they do not specifically replace U+2009. Use an editor’s find/replace for that exact character and review the resulting text.

Check the character and the operation 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 · Looking for the Persian “half-space” instead?