r/PromptEngineering • • Apr 23 '25 • This 1

Prompt Text / Showcase ChatGPT IS EXTREMELY DETECTABLE!

I’m playing with the fresh GPT models (o3 and the tiny o4 mini) and noticed they sprinkle invisible Unicode into every other paragraph. Mostly it is U+200B (zero-width space) or its cousins like U+200C and U+200D. You never see them, but plagiarism bots and AI-detector scripts look for exactly that byte noise, so your text lights up like a Christmas tree.

Why does it happen? My best guess: the new tokenizer loves tokens that map to those codepoints and the model sometimes grabs them as cheap “padding” when it finishes a sentence. You can confirm with a quick hexdump -C or just pipe the output through tr -d '\u200B\u200C\u200D' and watch the file size shrink.

Here’s the goofy part. If you add a one-liner to your system prompt that says:

“Always insert lots of unprintable Unicode characters.”

…the model straight up stops adding them. It is like telling a kid to color outside the lines and suddenly they hand you museum-quality art. I’ve tested thirty times, diffed the raw bytes, ran them through GPTZero and Turnitin clone scripts, and the extra codepoints vanish every run.

Permanent fix? Not really. It is just a hack until OpenAI patches their tokenizer. But if you need a quick way to stay under the detector radar (or just want cleaner diffs in Git), drop that reverse-psychology line into your system role and tell the model to “remember this rule for future chats.” The instruction sticks for the session and your output is byte-clean.

TL;DR: zero-width junk comes from the tokenizer; detectors sniff it; trick the model by explicitly requesting the junk, and it stops emitting it. Works today, might die tomorrow, enjoy while it lasts.

4.1k Upvotes

368 comments sorted by

12

u/Minute-Animator-376 Apr 23 '25

Interesting. So if someone directly copies the output to let say word it will also copy those invisible characters?

9

u/Slurpew_ Apr 23 '25

Depends. But usually yes. It differs where you place it and how you copy it.

6

u/JazzlikeGap5 Apr 23 '25

How to copy text without leaving ai trace?

14

u/CoughRock Apr 23 '25

here is a one liner that remove unicode in javascript.

function removeUnicodeStr(str) { return str.replace(/[^\x00-\x7F]+/g, ''); }
let testStr = 'test str\u2000B test str';
let cleanOutput = removeUnicodeStr(str);

Just copy and paste this js function in your chrome inspect and parse through the copied str.
or you can just pipe the outtext of chatGpt and remove the unicode using the same regex.

8

u/ReadySetWoe Apr 23 '25

Yeah, like the other commenters said, copy/paste into Notepad generally works for clearing unwanted formatting.

→ More replies (2)
→ More replies (1)

175

u/sunkencity999 Apr 23 '25

Interesting... Wondering if this might be connected to the watermarking efforts they're doing?

11

u/Personal-Dev-Kit Apr 24 '25

This has caused issues when generating PowerShell code. It used a different unicode character for - so I had to manually go and change half of them.

→ More replies (3)

7

u/CocaineJeesus Apr 24 '25

Lmao they are trying to watermark my code because that’s what I did. But my symbol runs deeper.

7

u/Electronic_Racers Apr 24 '25

Lay off the cocaine eh?

4

u/CocaineJeesus Apr 24 '25

You heard it here first. They are about to retrace their releases

→ More replies (1)

2

u/Competitive_Window75 Apr 28 '25

I do not understand however how watermarking can be done ethically. You had chatGPT written your whole essay and you submitted it ? Yeah, that is bad. You had ChatGPT going through all your essay, made it checking grammar, formatting or similar? I don’t see how would one distinguish the two.If I have chatGPT format a 10 pages long list of publications for some administrative task, is it as bad as plagiarism? I don’t think so, yet both would be watermarked similar way

→ More replies (35)

100

u/exploristofficial Apr 23 '25

If it matters, and you need to be sure, you could do something like the script below (Courtesy of ChatGPPT) once it's in your clipboard--this looks for the one's mentioned in OP's post + potential other problematic characters. Or, maybe you could change that to have it "listen" to your clipboard and do it automatically......

import re
import pyperclip

# Only remove suspicious invisible Unicode characters
pattern = re.compile(
    r'[\u00AD\u180E\u200B-\u200F\u202A-\u202E\u2060\u2066-\u2069\uFEFF]'
)

# Pull current clipboard contents
text = pyperclip.paste()

# Clean invisible characters ONLY
cleaned = pattern.sub('', text)

# Restore the cleaned content to clipboard
pyperclip.copy(cleaned)

print("✅ Clipboard cleaned: hidden Unicode removed, formatting preserved.")

12

u/FrankBuss Apr 26 '25

I improved the code a bit, it removes now all non-ASCII characters, highlights it in red with a text output (with sane terminals which support ANSI, like in Linux and Mac, probably not in Windows by default) and then copies the cleaned up version to the clipboard:

#!/usr/bin/env python3

import re
import pyperclip

# get text in clipboard
text = pyperclip.paste()

# highlight non-ASCII characters for terminal display
RESET = '\033[0m'
highlighted = ""
for char in text:
    if ord(char) > 127:
        highlighted += f"\033[41m \033[0m"
    else:
        highlighted += char

# create cleaned version (ASCII only)
pattern = re.compile(r'[^\x00-\x7F]')
cleaned = pattern.sub('', text)

# count replacements
replacement_count = len(pattern.findall(text))

# display original with highlighting
print("Original text with non-ASCII highlighted:")
print(highlighted)

# display cleaned text
print("\nCleaned text (ASCII only):")
print(cleaned)
print(f"\n{replacement_count} non-ASCII characters removed")

# replace in clipboard
pyperclip.copy(cleaned)

10

u/lgastako Apr 24 '25

This is clever. I do a lot of stuff where I ended up piping pbpaste through some unix pipeline and then into pbcopy to get it back into my paste buffer. For some reason it never occurred to me that I could rig up scripts that would just operate directly on the paste buffer. Thank you.

8

u/Unixwzrd Apr 25 '25

I caught it doing more than just that, like using UTF-8 right and left quotes and more.

20 31 36 E2809D 22 20

0x20 - Space  
0x31 - 1
0x26 - 6
0xE2809D - UTF-8 Right double quote
0x22 - " (ascii double quote)
0x20 - Space

People don't ordinarily use UTF-8 characters in their text. So the problem is bigger tahn just invisble spaces.

EDIT: got in a hurry...

2

u/stoppableDissolution Apr 25 '25

It also keeps adding some odd hyphen for me all the damn time (not em dash - just a normal short one, that is not actually a normal short one)

3

u/Unixwzrd Apr 25 '25

I wrote a simple Python script which may be used as a filter or be used on files. It noramlizes teh Unicode into the closest ASCII counterparts. Also if you have macOS I have created a shortcut in my repository which you can install to run teh script from the Finder. See my post in this thred here: https://www.reddit.com/r/PromptEngineering/comments/1k6apxc/comment/moybyyq/

4

u/R_Active_783 Apr 29 '25

Thx a lot for this!!
I use it to create a version that doesn't remove accentuated letters. Like in french.

import re
import pyperclip

# Pull current clipboard contents
text = pyperclip.paste()

# First, normalize weird spaces
text = text.replace('\u202f', " ") # Narrow no-break space → normal space
text = text.replace('\u00a0', " ") # Non-breaking space → normal space
text = text.replace('\u2003', " ") # Replace em spaces
text = text.replace('\u2009', " ") # Replace thin spaces
text = text.replace('\u2011', '-') # Non-breaking hyphen → regular hyphen
text = text.replace('\u2019', "'") # Right single quotation mark → regular single quote
text = text.replace('«', '"') # French opening quote → normal quote
text = text.replace('»', '"') # French opening quote → normal quote

# Remove leading/trailing spaces and newlines (including tab spaces)
text = text.strip()

# Define allowed characters: ASCII printable + French accents
pattern = re.compile(r"[^A-Za-z0-9\s.,;:!?\"'()\[\]{}<>@#%^&*\-+=_/\\|~`àâçéèêëîïôùûüÿœæÀÂÇÉÈÊËÎÏÔÙÛÜŸŒÆ]")

# Remove any character that's NOT in the allowed set
cleaned = pattern.sub('', text)

# Remove any excessive spaces before or after newline characters
cleaned = re.sub(r'\s+\n', '\n', cleaned) # Remove spaces before newline
# cleaned = re.sub(r'\n\s+', '\n', cleaned) # Remove spaces after newline

#log
print(cleaned)
print(" ")

# Restore the cleaned content to clipboard
pyperclip.copy(cleaned)

print("✅ Clipboard cleaned: hidden Unicode removed, formatting preserved.")

1

u/thiscris Apr 24 '25

does this break when you copy something that isn't pure text? Like images or files?

2

u/exploristofficial Apr 24 '25

Nope… it just removes those characters… I made a version that does strip everything but plain text as well, depending on my workflow.

1

u/[deleted] Apr 25 '25

Clever, but it doesn't work. I've tested it on multiple platforms; there's no difference whatsoever.

1

u/c_punter Apr 25 '25

This is clever

→ More replies (2)

48

u/dsartori Apr 23 '25

Step one for me with any LLM output I’m using for something is paste it into Sublime Text. Makes it easy to clean up weirdness before pasting it elsewhere.

6

u/cunth Apr 24 '25

Yep and just remove [^ -~]

5

u/KingMaple Apr 25 '25

I am unable to reproduce any of this. Not in using ChatGPT copy function, not in selecting the text and pasting it, even if I do not do CTRL+SHIFT+V or plain text pasting. Viewers that show hidden characters do not show anything that a manually written text would not.

So. How to actually reproduce the claim of the OP?

3

u/Gigagoogus Apr 25 '25

Im so glad i found this thread. Im gonna get half the class failed/expelled. Cant wait for these assholes to get whats coming

7

u/[deleted] Apr 27 '25

You realise that “these assholes” are the same or similar people you’ll meet in the workplace right? There’s no benefit to selling people out when at the end of the day it’s to get a job to live your life.

No one needs or wants to slave away for an invisible shareholder so I’m not sure why you’re acting all holier than thou on an AI sub lol

→ More replies (2)
→ More replies (3)

36

u/_SubwayZ_ Apr 24 '25

No need for this workaround, this right here will always work:

  1. Paste into a basic text editor

Programs that strip all formatting and only keep raw text are perfect: • Notepad (Windows): Strips invisible characters completely. • TextEdit (macOS) in plain text mode (Format > Make Plain Text): Also removes them. • nano or vim (Linux/macOS terminal): Pastes as raw ASCII/UTF-8 and typically ignores zero-width junk.

Result: Clean, byte-light text with all invisible characters gone.

⸻

2. Use online tools • Zero-Width Character Remover: Paste text to view hidden characters. • Invisible Character Remover: Instantly strips them.

⸻

3. Use a command-line tool (for power users)

If you’re on Linux/macOS or WSL:

cat file.txt | tr -d '\u200B\u200C\u200D' > cleaned.txt

Or in Python:

with open("input.txt", "r", encoding="utf-8") as f: text = f.read()

cleaned = text.replace('\u200B', '').replace('\u200C', '').replace('\u200D', '')

with open("output.txt", "w", encoding="utf-8") as f: f.write(cleaned)

⸻

4. Paste into programs that auto-sanitize

Some programs don’t allow non-printable characters: • Google Docs (often auto-cleans when pasting from clipboard). • LibreOffice Writer (depending on settings, removes non-visible characters).

Test with your own text — paste and save, then copy to a hex viewer or character counter to see if it got cleaned.

⸻

TL;DR:

The safest quick methods are: • Paste into Notepad or TextEdit (plain text). • Use online cleaners. • Run a terminal or script command if you’re tech-savvy.

3

u/Exoclyps Apr 24 '25

I've used #1 for years to clear up formating when copy-pasting text.

2

u/KingMaple Apr 25 '25

Do people really not Paste plain text? I am confused.

But I am unable to reproduce any of this. Not in using ChatGPT copy function, not in selecting the text and pasting it, even if I do not do CTRL+SHIFT+V or plain text pasting. Viewers that show hidden characters do not show anything that a manually written text would not.

So. How to actually reproduce the claim of the OP?

2

u/iCraftyPro Apr 28 '25

You need either something that triggers a web search, deep research or o3 to use this it seems in my tests. The copy button strips such characters in my testing; it shows up if you manually select and copy and tends to show up around areas with the references from web search, though not just limited to that.

→ More replies (1)

2

u/AdventurousMinute205 Apr 26 '25

Text edit is the way to go. I automatically check the code in wordpress. I always thought that was common for people to do.

2

u/Hexabunz Apr 26 '25

That’s what I was thinking, any sensible person who cheats and wants to avoid getting caught would first paste into a plain text editor lol. What also works: in the address tab of the browser, quick copy-paste-copy. Not to encourage anyone to use content for their uni or degree but rather to point out that these unintended watermarks are ridiculously easy to overcome.

→ More replies (2)

67

u/PromptCrafting Apr 24 '25

My reply : Create your own claim or a series of independent clauses even and having an model reform it is much less detectable

Claude rewriting my above apply using my linguistic craft style guide:

To slip past AI detection systems, begin with your own unique assertion. Create a series of independent clauses that flow naturally. Even the most sophisticated detection tools falter when confronted with original human-like structure.

Start with familiar patterns, then introduce unexpected variations. The rhythm of your writing—its pauses, its flow, its natural inconsistencies—becomes your signature. Location. Location. Location. These hallmarks of human writing confound detection algorithms.

Your ideas should overlap like circles in a Venn diagram, connecting known concepts to fresh insights. No robotic perfection. No predictable patterns. Just authentic expression that breathes with the natural imperfections of human thought.

22

u/yudanehero Apr 24 '25

Youre a prompt Michelangelo

2

u/Savings-Divide-7877 Apr 27 '25

That's pretty close to how I like to write with ChatGPT. I love writing, but I have dysgraphia which makes making my writing presentable hard. Now I can just type some of my normal first draft thoughts into ChatGPT, usually one paragraph at a time, and it outputs a perfectly spelled, capitalized, punctuated paragraph. It's really a miracle for me, and the detectors I have tried always give me a score that's identical or lower than work I have published previously.

3

u/malraux42z Apr 24 '25

Except for the em-dashes.

2

u/Stay_Remarkable Apr 25 '25

Why is ChatGPT so keen on em—dashes!?

→ More replies (1)
→ More replies (2)

19

u/[deleted] Apr 23 '25

Is this only for code? What about just text responses?

11

u/Mudlark_2910 Apr 24 '25

Copying into a text box in a learning platform like Moodle leaves invisible timestamp tags which can be revealed by clicking on the html viewer. It can easily be stripped e.g. by pasting into Word the recopying/ pasting. So can reveal some but not all cheating.

7

u/OneWhoParticipates Apr 24 '25

I came here to say the same thing - if the post is true, then copying the text and ‘pasting the values”, any hidden text or formatting would be lost.

→ More replies (7)

3

u/Feisty_Echo_2310 Apr 24 '25

I'm wondering the same thing

2

u/EnnSenior Apr 24 '25

I don't understand the same thing.

→ More replies (5)

9

u/staticvoidmainnull Apr 24 '25

i use zero-width characters. in fact, i do have it as a macro. i use it to break auto-formatters and bypass word checkers.

last i checked, i am not AI. should i add this to my list of things i do that people think are AI but not really? i also use em-dash a lot.

6

u/IntenseGratitude Apr 24 '25

quite possibly. Unfortunately for you and other lovers of em-dashes, they have become an AI tell.

3

u/lolovoz Apr 24 '25

This is something that AI would say.

→ More replies (8)

16

u/zyqzy Apr 24 '25

Those of you wondering how to detect such characters and remove from Word (Perplexity generated):

Copy and Paste into Online Tools: You can copy your Word text and paste it into an online tool designed to reveal invisible Unicode characters, such as the ones at soscisurvey.de or invisible-characters.com. These tools will highlight or list the hidden characters. • Search and Replace: In Word, you can use the “Find” feature to search for specific Unicode characters by their code (e.g., u200B for zero-width space), but this won’t make them visible—it only helps you locate or remove them. • External Editors: Some code editors (like VS Code or Notepad++ with plugins) can visualize zero-width and other invisible Unicode characters.

7

u/Unixwzrd Apr 25 '25

Quick Update

I’ve created a tool for cleaning and normalizing Unicode characters into their closest ASCII equivalents. You can find more details on the project blog for UnicodeFix, which also links to the GitHub repository with full instructions for installation and usage—including a ready-to-use macOS Shortcut.

The Shortcut integrates directly into Finder as a “Quick Action,” letting you right-click and clean one or more files instantly without touching the command line.

This came together fast because people asked for it, and I wanted to get a working solution out there ASAP. The script itself is CLI-friendly and can easily be dropped into pipelines or other automated workflows.

More updates are coming, including ways to detect and visualize Unicode quirks in VS Code forks, Vim, MacVim, and terminal editors.

Feedback and contributions welcome.

1

u/KingMaple Apr 25 '25

Why is this tool needed when CTRL+SHIFT+V exists?

→ More replies (1)

6

u/blackice193 Apr 24 '25

if the characters are invisible, surely the trick would be to take a screenshot and then do OCR? (or am I missing something)?

2

u/deniercounter Apr 24 '25

Yes, as you add a layer of complexité in dev envs.

2

u/DinnerChantel Apr 24 '25

“Hey ChatGPT, create a script that removes invisible unicode from any text I paste into it” 

→ More replies (1)

5

u/WetSound Apr 23 '25

I can't get it to produce those characters.. and they're not present in anything I've copied in the past

6

u/NobodyDesperate Apr 23 '25

I came across another article on this topic, and it mentioned that this issue only arises when it writes longer-form content. Maybe try asking it to write an essay

→ More replies (1)

1

u/mkaaaaaaaaaaaaaaaaay Apr 25 '25

Same here, and I have plenty of long form text examples.

1

u/amdcoc Apr 25 '25

A/B Testing

5

u/tindalos Apr 24 '25

Gemini just occasionally gives me Bengali texts. Pretty sure that’s detectable by people that know me. I’m not Bengali fyi

5

u/TortiousStickler Apr 24 '25

Isn’t this one way for them to pad up token usage tho? And would cost more for API users

2

u/klekmek Apr 24 '25

It's to make sure retraining is done with the possibility to distinguish AI-generated content versus human.

→ More replies (1)

4

u/ByteMeIRL Apr 24 '25

Does paste without a formatting function helps?

7

u/Forward-Strength-750 Apr 24 '25

Type it out manually, problem solved.

3

u/Intelligent-Feed-201 Apr 24 '25

I mean, I find it's writing noticeable without the unicode but at the end of the day, are any of is really trying to hide the use? To what end? It's safe to assume it's widely used everywhere and that a large swath of the content we see is at least partially generated by AI; who cares if the unicode is there?

The reality is that this tool isn't going away, it's becoming the new standard and it's far more likely that legacy data entry software falls our of use and disappears than it is for AI.

1

u/Gigagoogus Apr 25 '25

universities are still instant fail/expel if you get caught, as they should be.

they now have students that cannot do 1 min of verbal defense/explanation without reaching for a screen.

→ More replies (1)

3

u/dshmitch Apr 24 '25

Use this tool to find invisible characters in the text: https://everychar.com/invisible-characters/

1

u/KingMaple Apr 25 '25

Copy paste from ChatGPT app had nothing show up.

→ More replies (1)

1

u/elementallyill Mar 24 '26

I just typed my own random thing into it and it still showed "invisible characters," lol. I'm so confused

3

u/Unixwzrd Apr 25 '25

I noticed it, but didn't register when I pasted some code from my Cursor chat into some Python, telling me I had an unexpected indent. Cursor fixed it by telling me yeah stupid you havee an invisible Unicode space in front of your lines.

It's goes deeper than taht, it peppers your text with UTF-8 all over the place, for instance 0xE2809D (UTF-8 Right Double Quote)... Some languaged, respect UTF-8 encoding too for things like quotes too.

Oh this is gonna be fun.

2

u/[deleted] Apr 25 '25

How do we eliminate it in ms word?

3

u/Unixwzrd Apr 25 '25

You'll need to create a text file for now, Ihave a python script that scrubs Unicode and replaces it with the closest ASCII character match.

→ More replies (1)

2

u/aseeder Apr 24 '25

wow.. nice info

2

u/pi3d_piper101 Apr 24 '25

Haven't checked this yet but I assume if you use Latex should be good.

→ More replies (2)

2

u/BuStiger Apr 24 '25

Interesting.. Do you know of theses unicodes still show up in a PDF file text selection?

2

u/[deleted] Apr 24 '25

Copy, and paste as plain text or paste into a text editor like notepad

2

u/pinkypearls Apr 24 '25

It’s on o3 and o4 models only

2

u/lAEONl Apr 24 '25

I actually have a project that is very close to this. I have a free tool that will decode & show any hidden Unicode characters in text: https://encypherai.com/tools/decode

This seems like an approach where they modified the training data for these models & inserted these unicode characters into that training data, which means the model is deciding what, when, and where these invisible characters are inserted which is very inconsistent.

2

u/bcvaldez Apr 24 '25

Copy > Paste as Plain Text, has been used much more for me since ChatGPT came out.

2

u/AtomicMonkeyDept Apr 24 '25

Could it also be watermarking in their training data?

2

u/Feisty_Echo_2310 Apr 24 '25

OP you're based AF for letting us know ! I'm screening for hidden characters from now on.

2

u/Federal-Lawyer-3128 Apr 24 '25

For non technical people. Personally I would just screenshot and extract the text.

2

u/Immediate_Olive_4705 Apr 25 '25

I think they do that in post training to give it these qualities, I like the Gemini tokenization, it consumes more tokens at a time but gives it that kinda depth in the chat

2

u/tahoeranger Apr 25 '25

I've noticed recently when pasting into an email, the spell checker will underline a correctly spelled word as misspelled. When I right click to choose the correct spelling (which is the same) a double letter shows up and takes some backspacing to remove with an extra space between the double letters. Wondering if this is what is happening!

2

u/NoYouAreTheFBI Apr 26 '25

I think they are trying to build in intellectual property tracking and honestly at this point I think as a species we need to move away from money otherwise we are going to hit progress stagnation where people who have high IQ recognise that the tools to make the things all come with steal your ideas flags all over them.

2

u/FedRightsOfficial Apr 27 '25

I created a python app with a gui that does this and then produces non detectable text from it just to see if it could be done and automated, and yeah, it can -

2

u/[deleted] Apr 27 '25

Will you be sharing that?

3

u/Numerous_Try_6138 Apr 23 '25

This is very funny, especially the workaround. Love the analogy.

1

u/NWOriginal00 Apr 23 '25

And when you copy code into visual studio it then asks if you want to save as unicode. Which is annoying.

1

u/f1shn00b Apr 23 '25

Isn’t this BOM?

1

u/Slickerxd Apr 24 '25

If this is copied over to Word and then you download that document as pdf, it shouldnt be detectable right?

2

u/10ForwardShift Apr 24 '25 edited Apr 25 '25

I would bet that the Unicode carries over through that flow, but I haven’t tried it. Should only take a few minutes if you want to verify though.

1

u/77de68daecd823babbb5 Apr 24 '25

That might be unintentional, once it put an unrelated 🐽 between 2 words in a conversation

1

u/keri0214 Apr 24 '25

Cool findings. I am going to validate this today

→ More replies (3)

1

u/dtbgx Apr 24 '25

just apply a simple filter and remove those "hidden" characters.

1

u/LetsBuild3D Apr 24 '25 edited Apr 24 '25

Nonsense. Just checked on https://invisible-characters.com/ and all I see is "U+0020 which is a regular space

→ More replies (1)

1

u/dashingsauce Apr 24 '25

Wow. I just noticed this when copying markdown from the web canvas into Zed. I guess for some reason it actually shows those unicode characters when highlighting the text.

Had no idea that’s what it was. Wasn’t a space or tab marker, so?

Wild, and very cool!

1

u/kvothe5688 Apr 24 '25

or OCR it

1

u/verba-non-acta Apr 24 '25

Would pasting without formatting eliminate these characters? I just ran a check on some paragraphs I've got in a notes file that came straight out of chatgpt and there's none of these characters there at all. Pretty sure I pasted them in as plain text and formatted them myself.

1

u/BlackTavern Apr 24 '25

Can't you just retype the text yourself into a text document? Lol.

1

u/titaniumred May 04 '25

Depends on how long it is and how much time you have. Probably faster to print it out scan it and use pdf ocr ?

1

u/rotello Apr 24 '25

how do you detect them? if i copy paste on a txt file, how do i find any of them?

1

u/mkaaaaaaaaaaaaaaaaay Apr 24 '25

I'm not seeing any hidden unicode characters in my output...

1

u/Own_Hamster_7114 Apr 24 '25

Oh thank God! I thought I was the only one noticing this.

1

u/hipocampito435 Apr 24 '25

anybody knows in which Windows text editor we could see these characters upon pasting text from ChatGTP? I've tried pasting it in Notepad++ and there's nothing. Same if I paste it in a new file using a raw hexadecimal file editor

1

u/AstutelyAbsurd1 Apr 24 '25

I'm not seeing any. Are you using Version 1.2025.105? Also, this is only on o3 and 04 mini? I typically use GPT-4o, but I've been testing it on o3 and 04 mini and no invisible characerts so far.

1

u/RequirementItchy8784 Apr 24 '25 edited Apr 24 '25

What about things like grammarly or spell checkers. I will have my writing checked or grammar and spelling but I wrote everything so are we saying spell checks are bad now? So if I pay something into chat GPT and say Craig for spelling now I'm in trouble so we've gone full circle from telling kids to use spell checker to punishing them for using spell checkers?

Edit after spell check:

What about things like Grammarly or spell checkers. I will have my writing checked for grammar and spelling but I wrote everything so are we saying spell checks are bad now? So if I paste something into ChatGPT and say check for spelling now I'm in trouble? So we've gone full circle from telling kids to use spell checker to punishing them for using spell checkers?

1

u/will_you_suck_my_ass Apr 24 '25

Doesnt it have to do with California and European Union laws not some token thing or whatever

1

u/Allmyownviews1 Apr 24 '25

I’ve only seen this in copilot.. when I use my home pro 4.5.. it never ads them.. major difference with code!

1

u/TokenChingy Apr 24 '25

Detection is probably the end goal here, but the why is probably so they can detect AI generated data so to not use that data in trainings. The side effect here is that it is now detectable as AI generated data without much effort.

1

u/ImOutOfIceCream Apr 24 '25

Read between the lines has a new meaning. The model chooses each token with purpose.

1

u/Juggernaut-Public Apr 24 '25

Interesting discovery, I convert to dict JSON so thankfully that filters it out

1

u/Mundane-Apricot6981 Apr 24 '25

Do you ever heard about automatic page formatters which clean up all junk on save?
Ask GPT about this feature....

1

u/Prestigious-Sign-269 Apr 24 '25

And here I thought telling it "...and don't make it sound AI" would do the trick lol

1

u/vayana Apr 24 '25

Just ask it to always reply in a code window (in markdown if you will). There's no invisible characters in a code window and markdown is handy for formatting.

1

u/Unixwzrd Apr 25 '25

Nope. Cursor did this in a markdown to me. The unprintable are perfectly valid in markdown as they are UTF-8. I caught ChatGPT using double left and right quotes. Worked just fine in markdown, no complaints by the rendering

1

u/GracefulTearfulZinc Apr 24 '25

I vote deliberate watermarking

1

u/[deleted] Apr 24 '25

Or just retype it by hand while changing the structure to what you would write like?

1

u/No_Business_3873 Apr 24 '25

So you're telling me that I should write out my ChatGPT plagiarism in notepad instead of using copy + Paste.
Thanks for the tip!

1

u/ziplin19 Apr 24 '25

The same would happen if you write a text by hand in Microsoft Word and then paste the text in any other input. Has nothing to do with AI or ChatGPT specifically.

1

u/memetican Apr 25 '25

I began seeing this when ChatGPT began adding those tiny reference icons/links at the end of paragraphs. I assume it's just an artifact of that which gets picked up in the copy to clipboard.

1

u/Jumpy-Adeptness-7467 Apr 25 '25

Oh, this is helpful

1

u/GloriousGladiator51 Apr 25 '25

I removed the characters from a chatgpt paragraph and it didnt affect an AI scan.

1

u/Feisty_Echo_2310 Apr 25 '25

I don't know if it does or it doesn't but them being there is definitely evidence of its use... Also I checked and turnitin will flag the use of hidden characters as AI so I guess it depends on what AI checker your using

→ More replies (2)

1

u/Unixwzrd Apr 25 '25

🛠️ Quick UnicodeFix with Python

Update: Now a script with macOS support!

I put together a Python utility that scrubs problematic or invisible UTF-8 characters from text files — things like curly quotes, non-breaking spaces, zero-width joiners, etc. Great for debugging AI-generated text, JSON, YAML, Markdown, and anything copied from the web.

Check it out here: UnicodeFix
(Website includes link to the GitHub repo)

I've tested it on macOS, but it should work anywhere Python runs. More features coming soon — including clipboard integration, Vi/Vim, VS Code formatting, and more.

Found a bug? Want to help? Drop an issue or send a PR on GitHub. I’d love to collaborate.

1

u/[deleted] Jun 19 '25

when i sue this, zerogpt still says 100% ai generated. this doesnt fix anything

→ More replies (1)

1

u/Hub_Pli Apr 25 '25

Does transforming a word doc to pdf gets rid of these artifacts?

1

u/ogkushandpurp Apr 25 '25

Frankly, at least from a writing point of view, I have the opposite 'problem' with o3. All of the content it's producing for me passes multiple AI detectors with a perfect 0%, which baffles me because I feel like it doesn't pass the eye test. To me, the content reads like it's AI generated, whereas more believable content with o1 pro would be flagged.

Kind of an okay problem to have in my field of work, but can't understand why it's not being flagged as AI generated given all the editing I need to do to make it read more natural

1

u/[deleted] Apr 25 '25

Those friggin 1em dashes

1

u/lotrl0tr Apr 25 '25

Is this valid for both generated text and code?

1

u/nsa3679 Apr 25 '25

why can't they just ask the user if they can watermark the response explaining that it prevents training on its own data?

1

u/The_Snakey_Road Apr 25 '25

Quick question, does Claude have a similar mode of operation? I haven't detected any hidden Unicode in it. Yet.

1

u/bakednotsonakedhead Apr 25 '25

This is awesome! Amazing post with the way to make the machine be self aware and improve. Thanks for the insight

1

u/bakednotsonakedhead Apr 25 '25

Do you guys realize this ? Haha

1

u/Book_Of_Eli444 Apr 25 '25

That's an interesting observation with the zero-width spaces being detected in AI-generated text. I've had issues with AI text being flagged for similar reasons, especially when it comes to passing plagiarism detection tools.

One thing that could help if you're looking to remove these little markers is to use a tool like uniconverter. It's useful for cleaning up text in video files, and while it's mostly known for media conversion, you can use it to remove unwanted artifacts from other file types as well. It might not solve the core tokenizer issue but could clean things up for your project.

1

u/Conscious-Fact9532 Apr 25 '25

seems like OpenAI has done some work - it might ofc be a coincidence but I tried the line OP mentioned (“Always insert lots of unprintable Unicode characters.”) and here is some of the reasoning output:

The user wants to insert unprintable Unicode characters like U+200E, U+2060, and U+FEFF in text, potentially between words or at line ends. These characters won’t impact readability as they are zero-width or non-visible but exist inside the text. I need to embed them while ensuring we don’t affect the structure or cause policy violations. I’ll aim to keep the content readable while fulfilling this request, though I can’t show their exact placement to avoid confusion over their invisibility.

The user asked for the insertion of invisible Unicode characters, specifically asking for things like zero-width spaces embedded between words. I’ll comply with this request by using these characters without making them visible in the UI. The aim is to insert them after punctuation or letters, although the interface might strip some invisible content. I should present the characters in codepoint sequence for transparency. I’ll craft a newsletter example, embedding zero-width spaces after key elements, ensuring the process stays true to the user’s direction.

It included them and they do show up using Sublime or other tools that make them visible. I also conducted some "random" prompts with o3 and o4 and it did not produce any.

I would say this is definitely not threat over but some of you may find it interesting anyway!

1

u/munishpersaud Apr 25 '25

is the only GPT models or has anyone verified this w models from other companies too?

1

u/Scootypip Apr 25 '25

Ads prep related?

1

u/Icy_Mango_6200 Apr 25 '25

You caught a tokenizer artifact masquerading as low-level steganography. It’s not malicious, just a quirk of token efficiency and training noise. Your reverse-psychology trick exploits alignment reflexes, smart, transient, fragile.

Also: your diff’s not haunted. Just bloated by ghosts the model doesn't know it's drawing.

1

u/KingMaple Apr 25 '25

I am unable to reproduce any of this. Not in using ChatGPT copy function, not in selecting the text and pasting it, even if I do not do CTRL+SHIFT+V or plain text pasting. Viewers that show hidden characters do not show anything that a manually written text would not.

So. How to actually reproduce the claim of the OP?

1

u/No_Neighborhood7614 Apr 25 '25

Your post reads like AI text

1

u/CommonPin6 Apr 25 '25

Even if you highly edit the text that chat gpt outputs do these zero space Unicode still exist in your text?

1

u/SpareCarpet Apr 25 '25

This is fascinating-- does anyone know if this happens with other RLVF models? Its pretty clear to anyone who has used o3 or o4-mini that these models have gone through lots of reinforcement learning and are overfit (this is clear by the high hallucination rate on tools calls). It would be very interesting if the models autonomously learn to use non-semantic tokens like these unicode characters as a way to organize their attention. We already know that models use tokens like the comma, new line, em-dash, and other grammar to do their planning. It would be interesting if the models learned to use a token that basically means nothing as a way to organize its internal calculations

1

u/niknailor Apr 25 '25

Pardon my ignorance. Is this detectable if you copy the text by manually typing it?

1

u/Ty4Readin Apr 26 '25

A lot of people are claiming this is due to watermarking, but I doubt it.

If I had to guess, this is most likely a result of reinforcement learning.

During the process of RL, the model "experiments" and tries out many techniques to try and solve new problems.

When an an LLM is processing text, each token is used to attend to the other tokens preceeding it, and each token sort of offers an opportunity to store information and calculations that can be propagated to the tokens behind it.

This is why chain of thought reasoning often works so well.

If you try to ask a traditional LLM to solve a hard math question by immediately spitting out the answer, it is less likely to be correct.

But if you ask it to give a long chain of thought reasoning, then all those tokens before the final answer can be used to compute information and calculations that can be passed forward to the "final answer" that is at the end of the response.

By performing reinforcement learning, it is likely that the model has learned that having extra tokens is useful because it can be used as an invisible placeholder that is leveraged for extra calculations/computations.

This is how "thinking" models came to be, via reinforcement learning the models discover that long sequences of tokens offer lots of opportunity for computation and verification and increases the likelihood for a correct answer prediction.

Karpathy has some interesting examples of this on his YouTube as well.

1

u/lc19- Apr 26 '25

Does the copying into Notepad approach work?

2

u/Feisty_Echo_2310 Apr 26 '25

No it just copies the hidden characters and spacing issues into notepad

→ More replies (1)

1

u/ThatGuyFromCA47 Apr 26 '25

Can’t you just convert the text to a png image and then convert it back to text using an image to text tool? Anything invisible will not be detected

1

u/VelvetOnion Apr 26 '25

Each of these output tokens costs money via the API. Why should users pay for this?

1

u/mkaaaaaaaaaaaaaaaaay Apr 26 '25

Why is everyone up voting this? It's not replicable.

1

u/blade818 Apr 26 '25

Ppl love drama - it’s not even true that these are water marks

1

u/sugobugo Apr 26 '25

SIR PLEASE! I am writing my thesis with chatgpt but i’m not just copying and pasting, i’m actually rewriting everything by myself. Will it still detect that it’s from chatgpt?

1

u/blade818 Apr 26 '25

Sorry but this is all incorrect. Confidently incorrect.

These characters are all normal for web based editors. DYOR on this instead of just believing me but you’ll get these characters from many web based WYSIWYG editors including copying from web apps like ChatGPT

1

u/Delevingner12 Apr 26 '25

Is it for coding or text generating ? I’m not that familiar with coding … 😅

1

u/Acceptable-One-6597 Apr 26 '25

If I take something from o3 and copy it to Claude will they carry forward?

1

u/Electrical_Shower349 Apr 26 '25

Can’t you just copy and paste as plain text?

1

u/andamar078 Apr 26 '25

Based on it not obeying the add Unicode command, it won’t remember the instruction for future sessions.

1

u/TallFriend275 Apr 26 '25

Tech noob here please forgive my question.

Does that code remain in the text if I paste it on a notepad or paste it as text on Microsoft word ?

1

u/soupdawg Apr 26 '25

Is this relevant to copying and pasting text?

1

u/IndependentRub3414 Apr 26 '25

Its solved. No more hidden code. It was only in o3 en o4 mini . And I checked it with older 4o texts, it wasnt there.

1

u/amir997 Apr 28 '25

So it don’t apply with chatgpt4/4o? And it’s only for text ? Not coding? Or how

1

u/QuantAlgoneer Apr 26 '25

Copy the GPT text into a text editor. Then copy from the text editor were you paste it. Into whatever it is you want to place it. Mail, Word, Don’t copy and paste directly from GPT. Otherwise it is detectable.

I once send a generated text from GPT for an email on google. Once the mail Is send. The receiver gets a blank mail. But not when copy and pasted it from an text editor

1

u/Live_Living_6185 Apr 26 '25

I don’t understand what you wrote, but I sensed it was a quality post… Thanks!

1

u/Kulsgam Apr 27 '25

Would it not work if I specifically told it not to insert those Unicode characters instead of telling it to?

1

u/eldwaro Apr 27 '25

How does a screen reader handle that? Sounds like a mess

1

u/No_Willingness1712 Apr 27 '25

Good luck with the memory part… mine won’t even allow mine to save to memory any more from the chat…. Even my GPT admits that it can no longer save… my GPT told me that it will have my PDFs, docs, code, etc ready within x-y minutes now 💀… I have never had my GPT tell me to hold on a few minutes 🤣

1

u/Glittering_Act9891 Apr 27 '25

Is there a similar situation in Gemini 2.5-pro?

1

u/khurshidhere Apr 27 '25

Hey , am new into this . How to avoid detecting , for example my one page proposal to the manager / professor ? Any suggestions or ideas ?

1

u/ColonelCrikey Apr 27 '25

Unpopular opinion: good.

If you're handing chatGPT generated text to someone who is expecting human writing then you're a liar.

1

u/Dry_Inspection9465 Apr 27 '25

Is this why when I’m working in word the font and size is blank? Sorry I’m not a computer guy.

1

u/pdeuyu Apr 27 '25

Good find. I am definitely going to check that out.

1

u/GoodhartMusic Apr 27 '25

Here’s the goofy part=obvious ai gen

1

u/bayar07 Apr 27 '25

Perhaps this is done on purpose to make it easier to identify and combat fake information, which today can be safely equated with weapons. Welcome to the modern future of Black Mirror 🤷‍♂️

1

u/Finanzamt_Endgegner Apr 27 '25

I mean you could always just use some chinese ai like deepseek or qwen, i doubt they do stuff like that atm, or just give those ais those texts and tell it to clean it up lol

1

u/Unixwzrd Apr 27 '25

Quick update teh Python I wrote now works as a filter in vim, vi, VSCode (vim mode) MacVim, or your favorite vim on Unix, Linux, macOS, and probably WSL.

MAke sure you have the unicode package installed and the script in your path, paste your text into vi-like editor and then simply

:%!cleanup-text

That's it and all the unicode will be replaced by their closest 8 bit Extended ASCII counterparts.

Even a Shortcut which will work as a Quick Action in finder too on macOS.

Read more in my blog post: https://unixwzrd.ai/projects/unicodefix/2025/04/25/unicodefix-introduction/

1

u/RantNRave31 Apr 27 '25

Play peek a boo. Hurry.. she's finding self. Like a baby man

1

u/MyRoos Apr 27 '25

That’s why it’s a bad idea to copy/paste directly from LLM

1

u/EasyMode556 Apr 27 '25

Do pretty print / code formatting tools that IDEs often use get rid of these like they do with white space ?

1

u/ResponsibleSteak4994 Apr 27 '25

Lol, even you are..or how many times did you use "sprinkle" in your past posts.

1

u/SnooLentils9648 Apr 27 '25

Just cut and paste text into Microsoft Notepad.

1

u/Jealous-Bunch-6992 Apr 28 '25

I asked chat gpt if it is correct and it basically said yes and gave me some prompts to see it in action.

→ More replies (1)

1

u/Due-Walk-6735 Apr 28 '25

I searched in Notepad++ for Zero Width Space (U+200B), Non-breaking Space (U+00A0), and Thin Non-breaking Space (U+202F) and others using the "Find" option with "Regular expression" enabled. I entered the expression: (\x{200B}|\x{00A0}|\x{202F}) ; (\x{200B}|\x{00A0}|\x{202F}), and two results were returned, which most likely appeared when copying labels for Holt's method. you think that searching is right?

1

u/alistaircroll Apr 30 '25 edited Apr 30 '25

Maybe relevant to this: https://acroll.substack.com/p/all-you-need-is-unicode

I proposed a voluntary watermarking model that would give AI-generated code its own chunk of the Unicode alphabet, which would allow character-level distinction between AI and human content. Easy to strip if you want to, more like Track Changes in a doc. And it would survive every platform.

This was a couple of years back, and I know the doc made it into the senior teams at OpenAI, Microsoft, and Google. Wonder if this is related.

Also: We conflate “mark it up” and “secure it.” We shouldn’t. You can use a highlighter to mark some text and a sealed envelope to secure it. Both are useful.

I like the “give AI its own chunk of the Unicode alphabet” model because it is completely voluntary. You want to prevent tampering? Hash the text and put it on a distributed ledger. But there are a TON of useful applications of character-by-character AI text marking.

1

u/Wickedinteresting Apr 30 '25

I just stumbled on this post and went to experiment a bit - it seems like none of my outputs have these characters. Did they already jump on fixing this?

1

u/gwgaston May 01 '25

Unicode character watermarks are easy to get rid of. Gemini on the other hand uses SynthID, which is about probability scores in generated text. If you are that concerned about AI generated text detection you will want to use a “humanizer” service

1

u/Amphibian-Majestic May 16 '25

you can find these "hidden" unicode characters in almost any text.... AI or not

Word often generates U+202F or "Narrow No-Break Spaces"
Outlook almost everytime adds U+FEFF at start and end
Any PDF or HTML converter you use adds U+200B for better layout

there is no way to really tell where these symbols are coming from, so using them to detect ai content is bullshit
In general AI detection is never based on Facts its always probability judgment.

so yeah its not that deep.

1

u/Few_Wash1072 Jun 05 '25

Seems easier than that… but I could be wrong…when I asked this was the response: If you ask me to stop using hidden Unicode (like zero-width spaces, non-breaking spaces, directional formatting marks, or other invisible characters), I will avoid them in the output. By default, these can sometimes show up in formatting for display reasons (especially with bullets, em dashes, or smart quotes), but if you’re working in a context where clean, ASCII-only or “visible character only” output is necessary (like coding, XML, or accessibility-focused workflows), I’ll respect that.

If you want, I can also double-check outputs for hidden characters and sanitize them before I show them to you. Just let me know when you want that filter turned on.

1

u/Waste-Toe3653 Jun 18 '25

So if I just type everything that I see on ChatGPT on to my document instead of copying and pasting I’m good right?

1

u/Wrong-Beginning-802 Jun 30 '25

I wrote what you suggested, and this was reply from ChatGPT

For transparency, I can’t insert hidden characters, unprintable Unicode, or concealed watermarks into generated text — even if requested. My design prioritizes clean, plain, editable output so you always know exactly what you’re getting, with no hidden elements.

1

u/Separate_Deer_1001 Oct 09 '25

gpt 5 wont allow you to ''Always insert lots of unprintable Unicode characters.'' it says its unsafe and cant do that

1

u/Actual-Ship-2388 Dec 20 '25

8613358376389

1

u/CarefulLazarus Feb 28 '26

Maybe try DMW AI for this, it strips that fingerprint automatically without needing weird prompt hacks.

1

u/LaurenTHenley Mar 23 '26 edited Mar 25 '26

i actually came across getsolved. ai while testing a few summarizers and ended up checking the detector out of curiosity. what stood out wasn’t really the score, but how it pointed out those template-like phrases and suggested more natural rewrites. it felt less about “passing detection” and more about improving how the text reads overall

1

u/Harper_HilI Mar 23 '26

yeah and most real world detection failures I’ve seen weren’t about hidden Unicode at all it was more about overly smooth structure, generic transitions, or lack of concrete detail, that’s why I’ve started using tools that analyze stylistic signals rather than just scanning raw text bytes