Skip to main content

Reference

Narrow No-Break Space (U+202F)

CleanPastedText editorial · Updated

Text workbench

Try it on your text

Cleaning mode

Removes invisible and unsafe characters while keeping more formatting.

Try a real example

Each sample contains a problem you cannot see.

Original

Pasted text

0 chars · 0 words

Cleaned

Ready to copy

0 changes

Text stays in this browser

Same words · No AI rewriting · No content logging

What is U+202F?

U+202F is the narrow no-break space (NNBSP). It is a fixed-width space, roughly half as wide as a normal space, that tells a text renderer never to wrap a line at that spot. It is not invisible like a zero-width character. It is a real, visible gap that simply looks the same as a normal space to the eye, which is why it causes so much confusion.

CharacterCode pointWidthLine break allowed?
SpaceU+0020NormalYes
No-break spaceU+00A0NormalNo
Narrow no-break spaceU+202FAbout halfNo

Where does U+202F come from?

  • ChatGPT, April 2025. Days after OpenAI released o3 and o4-mini, the startup Rumi reported those models emitting U+202F where ordinary spaces belong. OpenAI described it as a quirk of large-scale reinforcement learning rather than a watermark. It stopped within days. Our ChatGPT hidden characters guide covers the wider picture.
  • French and other typeset text. French typography uses a narrow no-break space before ; : ! ? and around guillemets, so French web pages, PDFs and Word files carry it on purpose.
  • Locale-formatted times and numbers. Unicode CLDR release 42 (2022) began using U+202F between a time and AM or PM in English formats. Software built on the newer locale data can therefore output a time whose space is not U+0020, which broke string comparisons in some projects. Check your own runtime rather than assuming.
  • Copy and paste from formatted sources. Word, Google Docs and web pages can carry it across when you copy. See why text pastes weird.

What does it break?

Anything that compares or searches for a normal space will miss it: exact-match searches, spreadsheet lookups, string equality in code, URL slugs and file names. It also survives "trim" functions in many languages, because it is not the ASCII space they look for. If two strings look identical but do not match, suspect U+202F or the ordinary non-breaking space (U+00A0).

How do I find and remove it?

Paste your text into the cleaner above. It reports each U+202F it finds and swaps it for a normal space. To do it yourself:

WhereHow
JavaScripttext.replace(/\u202F/g, " ")
Pythontext.replace("\u202F", " ")
Excel=SUBSTITUTE(A1, UNICHAR(8239), " ")
grep (GNU, PCRE)grep -P "\x{202F}" file.txt

For the full set of look-alike gaps, see the invisible Unicode characters list and the general weird spacing fix.

When should I keep it?

Keep U+202F in text that will be typeset as French, or where a number and its unit must never split across lines. Replace it when the text is going somewhere that treats it as data: code, spreadsheets, search, databases, or file names. In CleanPastedText, turn off "Exotic spaces" in Advanced Controls to leave it alone.

Common questions

Frequently asked questions

What is U+202F?

U+202F is the NARROW NO-BREAK SPACE, a Unicode space character in the General Punctuation block. It is about half the width of a normal space and stops a line from wrapping at that point. It renders as blank space, so it is easy to mistake for an ordinary space character.

Why does ChatGPT put U+202F in my text?

In April 2025, shortly after o3 and o4-mini launched, Rumi reported those models emitting U+202F where ordinary spaces belong. OpenAI called it a quirk of large-scale reinforcement learning, not a watermark, and it stopped within days. Today the character more often arrives from the chat page's HTML, Word, PDFs or French-language sources.

How do I remove a narrow no-break space?

Replace U+202F with a normal space (U+0020). In CleanPastedText the Safe Clean and AI Clean presets do this through the 'Exotic spaces' rule. In code, use the pattern \u202F with a global replace, for example text.replace(/\u202F/g, ' '). Delete it instead only if a space was never wanted.

Is U+202F the same as a non-breaking space?

No. A non-breaking space is U+00A0 and is as wide as a normal space. U+202F is narrower. Both prevent a line break, but they are different code points, so a search or formula written for one will not match the other. Text often needs both replaced to become clean plain text.

Should I keep U+202F in French text?

Often yes. French typography places a narrow no-break space before ; : ! and ? and inside guillemets, and the Unicode-standard French number grouping uses it as well. If the text is meant to be typeset French, keep it. If it is going into code, a spreadsheet or a search index, replace it.

Continue reading

Related guides & tools