How Claude’s Invisible Watermark Works, and It’s Not Zero-Width

So Anthropic started watermarking every Claude output. And honestly? I had the same thought everyone else did.

When I first heard about it, I assumed they were doing the usual trick. Zero-width characters, invisible Unicode, weird spaces that look normal but aren’t. That’s what every other “watermark” has been. That’s what I would have done if someone told me to watermark text.

Turns out I was completely wrong.

Anthropic dropped a blog post on August 14 explaining how it actually works. And it’s not what any of us guessed. I dug into what it actually covers when it landed, and the details are weirder than the headline.

The Short Version

The watermark isn’t hidden characters. It’s not Unicode tricks. It’s not metadata stuffed in the file.

It’s a pattern in the word choices themselves.

Here’s the thing about how Claude writes. When it’s generating text, it picks one word at a time. And a lot of the time, there are multiple words that would work just fine. Take the sentence “The weather today was cold and…” The next word could be “overcast” or “grey.” Both make sense. Both mean basically the same thing.

Normally, Claude picks between those options using a random number. The watermark changes where that randomness comes from. Instead of a generic random generator, it uses a secret key plus the previous few words to make the choice. So the selection isn’t free anymore. It’s nudged in a way only the key holder can see.

The result? A statistical pattern that’s invisible to you and me. But someone with the right key can check the sequence of words and calculate the probability that Claude generated it.

No hidden characters. No extra tokens. Nothing added to the text at all, which is why you’ll never spot it by eye or by copying the text into a hex editor.

Why Are They Doing This?

The short answer: EU regulation.

Article 50 of the EU AI Act requires AI providers to mark AI-generated content. Anthropic signed the Code of Practice along with about 190 other organizations. The obligation kicked in on August 2, 2026.

But here’s the interesting part. They’re applying it globally, not just in Europe. Anthropic says there’s “not yet a reliable way to limit the scope by region”. So every Claude output everywhere gets the mark, whether the user is in Berlin or Boise.

Claude Code, Claude Cowork, Claude Tag, the API, everything. AWS, Google Cloud, Microsoft Foundry partners too. If it touches Claude, the watermark rides along.

What It Can and Can’t Do

The watermark isn’t a smoking gun.

A detected mark means Claude was likely involved in producing the text. It doesn’t mean Claude wrote the whole thing. Ask Claude to proofread your email? That might carry the mark too.

And the absence of a mark doesn’t mean a human wrote it. Heavy editing can strip it. A full rewrite makes it disappear entirely, so a determined person has an obvious off switch: just rewrite the words.

Code is mostly exempt too. Since code has to be exact to work, there aren’t many places where Claude can freely choose between equivalent options. The watermark mainly shows up in code comments, where wording has slack.

Short texts? Harder to detect. Longer texts? More reliable. The statistics need enough word choices to become obvious, so a two-sentence reply is nearly impossible to tag with confidence.

The Backlash Is Real

People are mad about this.

Reddit threads are full of complaints. Some users are calling it a “conspiracy against innocent Claude users”. Business Insider reported “dozens” of X users claiming they canceled their subscriptions. I’d take the cancellation number with a grain of salt, but the annoyance is clearly real.

The concerns are pretty understandable. One developer said he’s worried about delivering code to clients with an AI mark that could raise copyright questions. Others are worried their work will carry a “scarlet letter” just because they used Claude to proofread.

Anthropic’s response? They’re planning to release a free detection API so anyone can check if text has the watermark. The watermark itself doesn’t contain any user-identifying info. No person, no organization, no specific chat can be traced from it, which addresses the creepiest version of the worry.

The Tools Are Already Here

Within days of the announcement, watermark removal tools started popping up on GitHub. Google has its own version of this problem, and its answer is very different. Google leans on invisible SynthID marks in pixels, which is a separate technique from Claude’s word-choice trick.

One project called “watermarks-remover” already has 4.6k stars. It claims to strip Claude watermarks plus C2PA and SynthID-class signals across multiple file formats.

Cardano founder Charles Hoskinson even released a tool called “Anthropies” specifically for removing Anthropic watermarks.

Whether any of these actually work? Hard to say. Anthropic hasn’t released its detection API yet, so there’s no way to verify what’s being removed, and a tool that claims to strip a pattern you can’t see is hard to prove either way.

What I Think

Honestly? I was wrong about how this works.

I assumed it was Unicode tricks. Zero-width spaces. Homoglyphs. The stuff Claude Code got caught using back in March to detect Chinese users. It replaced apostrophes with visually identical but technically different Unicode characters. That was a real thing. Anthropic removed it after researchers found it, and it’s a good reminder that “watermark” has meant a lot of sketchy things.

But the watermark is different. It’s statistical. It’s in the words themselves, not in the bytes around them.

Does that make it better? I’m not sure. It’s definitely harder to remove than hidden characters. You can’t just run a script to strip invisible Unicode. You’d have to actually rewrite the text, which is a higher bar than cropping a logo.

But that also means it’s more intrusive. It’s baked into the output at the model level. You can’t opt out. You can’t turn off, short of not using Claude at all.

I get why they’re doing it. EU law is EU law. And when you’re a big AI company serving a global market, you comply with the strictest regional requirements and call it a day. The global rollout is the pragmatic choice, even if it annoys users outside the EU who never asked for it.

But I also get why users are upset. If I’m paying for Claude to help me write, and everything I produce gets invisibly stamped as “AI-generated”, even stuff I just asked it to proofread, that feels different from just using a tool. The stamp travels further than the AI’s actual contribution.

I’ll keep using it and see how it goes. Might change my mind next week. We’ll see.