Narrow no-break space, U+202F
A space narrower than an ordinary one that also forbids a line break. It is the character most associated with AI output: reports through 2025 and 2026 describe GPT-5 and gpt-5-chat emitting it in place of ordinary spaces, in headings and markdown tables, where it renders at roughly a fifth of normal width. It has a token id in OpenAI's tokeniser, 35971.
How it works
In UTF-8 this is e2 80 af. It has two properties that matter: it is a space with a defined advance width narrower than an ordinary space, typically around a fifth as wide depending on the font, and its line-break class forbids a break. French typography uses it before a colon, semicolon, question mark and exclamation mark; it is also standard between a numeral and its unit. Because it is a real space with a real width, text containing it renders visibly tighter, which is usually how people first notice it after pasting from an assistant. Every layer that treats whitespace as ASCII 0x20 then misbehaves: a split on a space does not split, a trim does not trim, a regular expression using an explicit space character does not match. In assistant output it appears to be an artifact of training rather than a deliberate mark, and it has been reported at scale in GPT-5 output where an ordinary space belongs, including inside markdown table headers and headings.
What it is legitimately for
French typography uses it before certain punctuation, and it is standard for separating digit groups and units. It is a real typesetting character, not a mistake.
What it breaks
- Text renders visibly cramped in applications that honour the width, which is how people usually notice it.
- A split on a space misses it, so parsing a copied table produces one column where you expected two.
- Search for a phrase containing it fails against the same phrase typed normally.
How to find it yourself
Look for e2 80 af in a hex dump. If a heading looks oddly tight after pasting from an assistant, this is the first thing to check.
What Clipboard Sanitizer does
Replaced with an ordinary ASCII space, and deleted outright when it sits in a run of trailing whitespace at the end of a line.
Questions
Why does ChatGPT emit these?
OpenAI's position is that it is an artifact of training on multilingual text, not a deliberate mark. The leading explanation in the developer community is contaminated training or reinforcement-learning data.