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.
U+2009 · CHARACTER REFERENCE
Copy a narrow typographic space. U+2009 adds a small gap; it is different from a narrow no-break space.
Ready. The single-character button copies only U+2009.
U+20091 Unicode code pointThis field starts with one U+2009; choosing a whole demo changes it to that complete example. Labels and brackets are never included.
U+0020U+2009U+202FU+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.
| Character | What it does | Choose it when |
|---|---|---|
| Thin Space · U+2009 | Narrow gap; break opportunity | You need a small typographic separation. |
| Narrow No-Break Space · U+202F | Narrow gap that resists wrapping | You need a narrow gap and want both sides kept together. Find U+202F in the directory. |
| Ordinary Space · U+0020 | Normal word spacing | You need the usual word separator. |
| Hair Space · U+200A | A still finer typographic gap | You need a smaller adjustment; inspect the destination font. |
| Em Space · U+2003 | A wider typographic gap | You want a broader pause rather than a narrow gap. |
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.
THIN SPACE · Zs (Space Separator)U+2009 · 8201   or  "\u2009""\2009"E2 80 89U+2009 → U+0020The 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.
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 staysU+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.
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 destination may have converted it. Check your saved text before replacing anything. A code-point change can result from normalization or another transformation.
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.
Try 10 kg with one U+2009, then copy back the saved text. This separates the copy request from what the destination actually kept.
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.
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.
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.
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.
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.
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.
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.
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?