What ChatGPT actually puts between your words
You copy a perfectly good paragraph from ChatGPT, paste it into Word or Outlook, and something is off. One line is stretched wide with gaps between the words. A number and its unit refuse to separate even when the line is full. A sentence has two spaces after a full stop that you never typed. The text looked fine in the chat window, and it still looks fine in a plain text editor, which makes the problem hard to pin down. The cause is not formatting. It is characters: ChatGPT uses several Unicode characters that render as a space but are not the ordinary space character your keyboard produces.
The one you will meet most often is the narrow no-break space, code point U+202F. Newer ChatGPT models insert it between a number and whatever follows it — 3 PM, 5 km, $40 million, 10 % — because typographic convention says those two tokens should never be split across a line. That is correct typesetting, but it has side effects the moment the text leaves the chat window. A rich-text editor honours the no-break rule, so when the line is justified it cannot stretch that gap and stretches its neighbours instead. Search and find-and-replace treat it as a different character, so searching for 3 PM with a normal space finds nothing. Form fields, CMS editors and outreach tools pass it straight through to the published page, where it shows up as an unexplained gap or a line that breaks early.
It is not the only culprit. Copying from any web page brings along the HTML non-breaking space ( , U+00A0). Answers with maths or chemistry carry thin and hair spaces. Content that passed through a PDF carries en and em spaces from the original typesetting, and Chinese, Japanese or Korean text uses the full-width ideographic space. Each one looks like a space and behaves like something else.
Every space look-alike this tool normalizes
All of the following are converted to a single ordinary space (U+0020) on every paste. The conversion is lossless for prose — a narrow no-break space and a normal space read identically — it simply makes the text behave the way text you typed yourself behaves.
The zero-width family — zero-width space (U+200B), zero-width non-joiner (U+200C), word joiner (U+2060), byte-order mark (U+FEFF) and the soft hyphen (U+00AD) — takes up no room at all, so it is deleted rather than converted. It is counted in the same “hidden characters removed” tally.
What “Fix spacing” adds on top
Swapping the look-alikes is always on. The Fix spacing option, which this page switches on for you, handles the two problems that are made of ordinary spaces:
- Doubled spaces between words. Language models picked up the two-spaces-after-a-period habit from decades of typed text in their training data, and a look-alike that sat next to a real space leaves a double gap once it is converted. Runs of two or more spaces inside a line collapse to one.
- Trailing spaces.Invisible at the end of a line, but they cause extra wraps in narrow email columns, break “ends with” checks in spreadsheets, and show up as noise in every diff. They are removed.
What it never touches is leading indentation. The spaces at the start of a line are what mark a nested bullet or a Python block, so the collapse only applies to runs that sit between two non-space characters. Your lists stay nested and your code stays indented.
Why Word and Outlook show it worst
Plain text editors do not care about no-break semantics, so the text looks fine there. Word and Outlook do care: a no-break space is an instruction they obey. In justified text Word cannot widen that gap, so the rest of the line absorbs the slack and you see uneven spacing. Outlook compounds it with the grey background and line-height it inherits from the chat window’s styling, which is a separate problem covered in why ChatGPT text copies with weird backgrounds and spacing.
This is also why the usual fix fails. “Paste as plain text” (Ctrl+Shift+V or Cmd+Shift+V) strips formatting — fonts, colours, backgrounds. A narrow no-break space is not formatting; it is a character, and it survives the plain-text paste untouched. You have to replace the character itself, which is what this page does.
How to check your own text for hidden spaces
In Word, turn on the pilcrow (¶, Show/Hide formatting marks): normal spaces appear as a dot between words, non-breaking spaces as a small raised circle. Google Docs has no equivalent view, which is one reason these characters travel so far unnoticed. In VS Code, enable Render Whitespace and the look-alikes draw as a visibly different glyph. The quickest check of all is to paste the text here and read the count on the status line.
When to turn Fix spacing off
If the text contains something that relies on runs of spaces inside a line — a hand-aligned ASCII table, a fixed-width report, concrete poetry — open the preferences and switch Fix spacing off. The look-alike conversion still runs, so you get real spaces without losing the alignment. For actual source code, prefer pasting it into your editor directly; the one case where this page helps with code is a snippet that will not compile because a U+202F or zero-width space snuck into it, which the conversion fixes.
Related tools
Private and free
Everything on this page runs in your browser. The text you paste is processed locally and never sent to a server, stored or logged. There is no account, no limit on how much you can clean, and no watermark on the output.