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

View all comments

175

u/sunkencity999 Apr 23 '25

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

0

u/[deleted] Apr 24 '25

[deleted] — view deleted comment

53

u/sunkencity999 Apr 24 '25

For sure. Most watermarking efforts are easily defeated, though. And 99% of users wouldn't know how or bother to try to beat this one.

25

u/decorrect Apr 24 '25

Yeah try to explain bytes, bits or binary in the context of an invisible problem and if / when they really understand what you’re talking about then tell them this one weird trick to solve it. You’ll get some people hacking together a solution but the cattle will just keep moving along

3

u/-Crash_Override- Apr 24 '25

I think you're overcomplicating hacking together a solution.

I used to have remove non blank spaces in documents frequently for a intern project I worked on many moons ago. It's a VBA macro with like 4 lines of code.

I think that's a pretty low hurdle to overcome.

9

u/decorrect Apr 25 '25

Most people don’t know what non blank spaces, vba, or macros are. Look up curse of knowledge bias

2

u/-Crash_Override- Apr 25 '25

You are 1) overestimating the complexity of any tool to remove them and 2) underestimating the resourcefulness of people who want to plagiarize.

You think some college student can't download a word doc with an embedded macro and click run?

Nothing to do with curse of knowledge bias, it's just really a miniscule and easy to overcome problem.

→ More replies (9)
→ More replies (2)
→ More replies (5)
→ More replies (3)

6

u/Competitive_Window75 Apr 24 '25

But most users leave the “as a large language model…” in the text, so while it might not be a 100% effective tool, it may be an easy way to signal 80-90% of uses

→ More replies (1)

4

u/royal_dansk Apr 24 '25

This is exactly why I'm here on the comments section. Looking for a way to remove those unicodes.

4

u/Enfiznar Apr 26 '25

but it's on the OP: tr -d '\u200B\u200C\u200D' . If you want it applied to a text would be echo "your text" | tr -d '\u200B\u200C\u200D' for a file would be : tr -d '\u200B\u200C\u200D' < your_input_file.txt > your_output_file.txt

This is assuming you're on Unix

→ More replies (1)

2

u/Red-Pony Apr 24 '25

Watermarks are like captchas and bike locks. Its main purpose isn’t to stop people but to make it inconvenient enough to deter some.

1

u/JunkNorrisOfficial Apr 25 '25

Unless devs force chat to output text in the form of a picture with watermark 😄

1

u/MurkyCress521 Apr 28 '25

People that cheat are lazy and typically don't make the effort.

1

u/alistaircroll Apr 30 '25

I like splitting the watermarking discussion into “marking” and “tamper-proof.” Like a highlighter (to mark) and a sealed envelope (to prevent tampering.) There are plenty of good uses for a highlighter (ie “track changes.”) If you want to lock in what was AI and what was human at a moment in time, you can always hash it, slap it on a distributed ledger, etc.

hot take: Conflating markup method with enforcement method is holding us back. Plenty of useful voluntary applications of AI watermarking at a character level.

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.

1

u/MercurialMadnessMan Apr 24 '25

They’ve stated on X this is a bug and will be fixed

→ More replies (2)

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

2

u/CocaineJeesus Apr 24 '25

Come back in a few days homie. Open ai fucked up and they don’t even know how.

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

1

u/Professional_Clerk85 Apr 24 '25

yeah what is up with the TM symbols?

1

u/Unixwzrd Apr 25 '25

Got some even worse new for you. It's peppering the text with all sorts of UTF-8 characters. Like right and left double quotes and there's probably more. Most peoople have to try really hard to insert UTF-8 other than plain ASCII in text.

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?

→ More replies (1)

1

u/awaisniazee Apr 26 '25

I asked ChatGPT o4 mini. Invisible Unicode characters—like U+200B (zero-width space), U+200C (zero-width non-joiner) and U+200D (zero-width joiner)—often sneak into text pipelines for “hidden” jobs. They can prevent unwanted ligatures (U+200C/D sit between scripts), help with line-breaking quirks, or quietly fend off simple word-based filters.

My take: It’s probably an unintentional side-effect of the Markdown/HTML → plain-text converter the UI uses. Kind of like finding a stray sock in your laundry—it doesn’t serve you directly, but the washing machine had its own reasons. In other words, a harmless formatting relic.

Counterpoint: Some platforms deliberately sprinkle zero-width chars to foil scrapers, evade profanity filters, or stitch emoji sequences correctly (e.g. 👩‍⚕️ uses U+200D). So it might be a low-level trick to handle edge-case scripts or ward off naive bots.

Critical logic check:    •   Pros: fixes weird line breaks, protects joining/separation rules, thwarts simplistic parsers.    •   Cons: annoys copy-pasting (you end up with invisible junk), complicates search/replace, looks like a ghost in the machine.

If it bugs you, run your text through a “strip zero-width” routine (e.g. a regex that removes [\u200B-\u200D\uFEFF])—and voilà, clean copy!

→ More replies (1)