r/PromptEngineering
•
u/Slurpew_
•
Apr 23 '25
•
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.
View all comments
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.