AI text tools

Why Does ChatGPT and Other AI Text Have Hidden Characters?

On this page
  1. The characters you're most likely to find
  2. Where they come from
  3. Problems they cause
  4. How to find and remove them
  5. Are they a sign that text was written by AI?
  6. How to spot hidden characters without a tool
  7. Worked example: a broken formula
  8. Where each character usually comes from
  9. When not to remove them

Quick answer: text from ChatGPT and other AI chat tools, like any text copied from a web page or document, can carry invisible Unicode characters: non-breaking spaces, narrow spaces, zero-width spaces and direction marks. They come from formatting, copy-and-paste, and the typography conventions in the text a model learned from. They're usually harmless to read, but they can break formulas, searches, code and word counts.

The characters you're most likely to find

Character Code What it looks like Typical source
Non-breaking space U+00A0 A normal space Web pages, word processors, typography
Narrow no-break space U+202F A slightly thin space Number and unit formatting, French punctuation
Zero-width space U+200B Nothing at all Web text, line-break hints
Zero-width joiner / non-joiner U+200D / U+200C Nothing Emoji sequences, some scripts
Byte order mark U+FEFF Nothing Files saved with certain encodings
Soft hyphen U+00AD Nothing, or a hyphen at a line break Hyphenated web text
Direction marks U+200E, U+200F Nothing Mixed left-to-right and right-to-left text

Where they come from

Typography in the source text. Language models learn from huge amounts of published text, which uses non-breaking and narrow spaces in places like "10 km" or "Mr. Smith". Models can reproduce those patterns.

The chat interface. Rendering text as formatted HTML and then copying it can introduce or convert spaces.

Copy and paste. Every hop, from browser to document to email, can add or transform characters. Many hidden characters attributed to AI actually arrive this way.

Emoji and other languages. Zero-width joiners are a normal part of many emoji, and direction marks are normal in Arabic and Hebrew text.

Problems they cause

  • Spreadsheets treat "1 250" with a non-breaking space as text, so sums fail.
  • Search and find-replace don't match words that look identical.
  • Code breaks with confusing errors when a zero-width space sits inside a variable name.
  • Passwords and IDs pasted with a hidden character fail to work.
  • Word counts and character limits come out wrong.
  • Line wrapping looks odd, because non-breaking spaces keep words stuck together.

How to find and remove them

Paste your text into the invisible character remover. It counts each hidden character by type and gives you a cleaned copy. Non-breaking and special spaces are replaced with normal spaces so words don't run together; zero-width characters are deleted. It runs in your browser, so nothing is uploaded.

In code editors, turning on "show whitespace" or "render control characters" also makes many of them visible.

Are they a sign that text was written by AI?

No. These characters are common in ordinary documents and web pages. See are invisible characters an AI watermark? for why they can't prove where text came from.

How to spot hidden characters without a tool

  • Cursor jumps: moving through text with the arrow keys, the cursor seems to pause or skip in one spot. A zero-width character is probably there.
  • Search fails: searching for a word you can see returns nothing.
  • Length doesn't match: a character counter or =LEN() in a spreadsheet shows more characters than you can count.
  • Odd line breaks: words stick together at the end of a line when they should wrap, a sign of non-breaking spaces.
  • Code errors that point to an "invalid character" on a line that looks fine.

Worked example: a broken formula

You paste a list of prices from an AI answer into a spreadsheet. =SUM() returns 0. Checking one cell:

  1. =LEN(A2) returns 6 for "$1 250", which looks like 6 characters, so length alone doesn't help.
  2. =UNICODE(MID(A2, 3, 1)) returns 8239, not 32 for a normal space. Code 8239 is U+202F, a narrow no-break space.
  3. Clean the column with the invisible character remover, remove the $ symbol, and the values become numbers that sum.

Where each character usually comes from

Character Usually comes from
Non-breaking space Web pages, Word, typographic conventions in source text
Narrow no-break space Number formatting, French typography
Zero-width space Web text, CMS editors, some fonts' line-break hints
Zero-width joiner Emoji sequences, such as skin tones and families
Byte order mark Files saved as UTF-8 with BOM, copied into text
Soft hyphen Web pages with automatic hyphenation
Direction marks Mixed English and Arabic or Hebrew text

When not to remove them

  • Emoji: zero-width joiners hold multi-part emoji together. Removing them splits a family emoji into separate people.
  • Right-to-left text: direction marks can be needed for Arabic or Hebrew to display correctly.
  • Finished documents: non-breaking spaces in "10 km" or "Mr. Lee" prevent awkward line breaks.

The remover is best for data, code and text you'll process further, not for every published sentence.

Questions people ask

Why does ChatGPT text have weird spaces?

AI text, like most copied text, can contain non-breaking or narrow spaces that look normal but are different Unicode characters. They come from typography conventions, formatting and copy-and-paste.

How do I remove hidden characters from text?

Paste the text into an invisible character remover, which finds and removes or replaces characters like zero-width spaces and non-breaking spaces.

Are hidden characters harmful?

They’re not dangerous, but they can break spreadsheet formulas, searches, code and passwords.

Can hidden characters break code?

Yes. A zero-width space or non-breaking space inside code can cause syntax errors or make names fail to match, even though the code looks correct.

Should I remove zero-width joiners from emoji?

No. Zero-width joiners combine emoji like families and skin tones; removing them splits the emoji apart.

How do I check what hidden character is in a cell?

Use =UNICODE(MID(A1, n, 1)) on the suspicious position in Excel or Google Sheets. A normal space returns 32; 160 is a non-breaking space and 8239 a narrow no-break space.

Do hidden characters affect SEO?

Rarely in a visible way, but they can break search inside your site, split words in URLs or tags, and cause odd line breaks, so it’s worth cleaning text before publishing.

Sources and further reading

Figures in this guide were calculated with our own calculators and checked against these sources.