Claude Watermarks Its Output Now. Your Code Is Barely Affected.
Anthropic now watermarks Claude's output. What it really marks, why generated code mostly escapes it, who can actually detect it, and why your SEO does not change.
Anthropic published a support page on how Claude marks AI-generated content, and within a day the reading had settled into a single sentence: Claude now snitches on you, and every repository you touched with an agent is a liability.
That reading is wrong on the part people care about most. The marking is real, it is worldwide, and it is not optional. It also targets prose, and prose is exactly what code is not. Below is what actually got shipped, how the mechanism works in plain terms, why generated code is the worst possible carrier for it, and why the SEO panic has no basis at all.
What Anthropic actually shipped
Anthropic signed the EU AI Act's Code of Practice on Transparency of AI-Generated Content. The marking is the technical side of that commitment, and it takes two different forms.
Text gets a statistical watermark. An imperceptible mark woven into the generated text itself. In Anthropic's words, "it weaves an imperceptible watermark directly into the text itself. You won't see it, and it doesn't change the meaning, quality, or readability of Claude's response." It persists through copy and paste, and "may persist through some editing."
Files get signed provenance metadata. When Claude generates a supported file type, currently .svg, .png and .jpg, it attaches metadata following the C2PA open standard, the same Content Credentials system backed by Adobe, Microsoft and the BBC.
The scope is broad and worth stating precisely, because a lot of the commentary assumed it was an EU-only or Claude.ai-only measure:
| Models | Anything launched on or after August 2, 2026, marked at launch |
| Surfaces | API, Claude web, Claude Code, Cowork, Tag |
| Cloud partners | AWS, Google Cloud, Microsoft Foundry |
| Geography | Worldwide, not just the EU |
The watermark is not a hidden character
This is the single biggest misconception, and it is why half the advice circulating right now is useless.
People assume the mark is something inserted into the text: a zero-width space, an unusual Unicode variant, a distinctive punctuation pattern. That assumption leads straight to "just run it through a cleaner and you're fine". It does not work, because there is nothing inserted to clean.
The mark is which words were chosen.

Anthropic has not published its algorithm, and that is a deliberate choice we will come back to. But every property they describe (invisible, inside the text, survives copy and paste, needs enough text to be read) matches the published family of sampling-bias watermarks, the approach behind Google's SynthID-Text and the academic work that preceded it.
The idea is simpler than it sounds. Whenever the model writes, it picks the next token from a set of candidates. Very often several candidates are near-equivalent: fast, quick, rapid, swift all work. A secret key splits the vocabulary into a favoured group and the rest, and the sampler leans towards the favoured group whenever leaning costs nothing in meaning or quality.
One such choice tells you nothing. Chance alone would put roughly half the tokens in the favoured group. But across a few hundred tokens the imbalance grows into something you can measure, and a detector holding the key can compute how far the text sits from what chance would produce. That gap is the whole signal.
Two consequences follow directly, and both matter more than the mechanism itself:
- Length is a hard requirement. A tweet or a commit message carries no usable signal. The detector needs volume.
- Changing the words is the only thing that removes it. Not because removal is clever, but because the words are the mark.
Why generated code is the worst possible carrier
Here is the part the panic skipped. A sampling watermark is a tax on freedom of choice, and it can only be levied where choice exists. Prose is rich in it. Code is close to bankrupt.

Take a single ordinary line: const user = await getUserById(id).
const is set by the file's own conventions. getUserById is not a choice at all, it is the name that already exists in the codebase, and any near-equivalent would simply be a bug. await is forced by the function's signature. The parentheses and the argument are forced by the syntax. What is genuinely free? The name of a local variable, and the wording of a comment. That is the entire channel.
Now compare with a paragraph of prose, where nearly every content word has three or four interchangeable alternatives. The difference is not marginal, it is the difference between dozens of carrier slots per paragraph and a handful per file.
And then the pipeline runs.
Formatters are the specific problem. prettier, eslint --fix, gofmt, black, rustfmt all exist to normalise exactly the near-equivalent surface choices that a sampling watermark uses as its carrier. Running a formatter over generated code is, functionally, running a laundering pass over the watermark, without anyone intending it. Add review edits, a rename, a refactor, and the interleaving of generated code with human code inside the same file, and the residue is spread across diffs that are usually far too short to measure anyway.
The honest caveat, because this is an argument from mechanics rather than a confirmed exemption: Anthropic has not said code is excluded, has not published the algorithm, and has not released a detector. Nobody outside Anthropic can measure what actually remains in a committed .ts file. The scenario with the most residual exposure is a long generated file, committed untouched, unformatted, and never reviewed. If that describes your workflow, the watermark is the least of the problems it creates, and our take on reviewing agent-written code applies well before this one.
What erases it, and who can actually detect it
Anthropic is unusually direct about the limits, which is worth crediting. A detected mark means the content may have been processed by Claude. It is explicitly not conclusive. And the absence of a mark proves nothing at all.

The detection question splits cleanly in two, and conflating the halves is what produced most of the bad takes.
Files are publicly verifiable, right now. C2PA is ordinary cryptographic signing: a private key signs, a public key verifies. Anyone can check a generated .png in a Content Credentials viewer, and Google is rolling that verification into Search, Lens and Chrome. There is no Anthropic privilege here, and the signature does double duty by revealing whether the file was altered after generation.
Text is not, and only Anthropic can read it today. Detection requires the secret key that biased the sampling. Without it the text is statistically indistinguishable from unmarked text. That is the current state, and it is the source of the "only Claude can catch you" reaction.
But it is not the intended end state. The Code of Practice Anthropic signed obliges them to provide third-party detection, and the support page says they are working to enable users and third parties to detect the marks, with documentation to follow.
The reason it has not shipped yet is a genuine dilemma rather than foot-dragging: publishing a detector also publishes the map for removing the mark. Give someone an oracle that scores a passage, and they can rewrite in a loop until the score drops below the threshold. Google faced the same trade-off with SynthID-Text and released a detector that stays hard to weaponise without the surrounding model. The likeliest outcome for Anthropic is a gated detection API with verified access and quotas, not a public one-click checker.
The detail almost nobody has picked up
The mark applies to text the model produced. It does not distinguish between text Claude invented and text Claude merely touched.
Ask Claude to fix the grammar in a paragraph you wrote yourself, and the output carries the watermark. Ask it to tighten a paragraph, translate a sentence, or reformat your own notes, and the same applies.
This cuts in both directions, and it is more interesting than the scandal framing suggests. It weakens the accusation scenario people fear, because a positive detection cannot separate "an AI wrote this" from "a human wrote this and an AI polished it", and those two are not remotely the same claim. It also means anyone planning to treat detection as proof of authorship is building on sand. Anthropic effectively concedes this by describing a hit as "may have been processed by Claude".
What this changes for SEO: nothing
We run this site's SEO in the open, so let us be blunt about the part that generated the most noise. There is no ranking risk here. Three reasons, stacked.
Google does not penalise AI-written content as such. The policy has not moved: what gets sanctioned is scaled content abuse, mass-produced pages with no value. The judgement is on quality and usefulness, not on the origin of the words. A genuinely good article stays a genuinely good article.
Google cannot read this watermark anyway. It is gated by a key Anthropic holds. Even if Google wanted it as a ranking signal, it would need an agreement with Anthropic to obtain one. No such thing has been announced, and no signal targeting AI-written text was announced at I/O 2026 either.
What actually shipped is media provenance, and it is a label, not a factor. Google's 2026 work covers images, video and audio through SynthID and C2PA, surfaced so users can ask whether an image is AI-generated in Search, Lens and Circle to Search. That is transparency for readers, not a lever on rankings.
There is one real, practical consequence, and it is about your images rather than your text. If you publish visuals generated by Claude, they now carry Content Credentials, and Chrome and Search will increasingly be able to label them. The effect is not a demotion, it is CTR and trust: a hero image flagged as AI-generated does not read the same way as a photograph.
Worth knowing before anyone over-engineers a response: most image pipelines already strip C2PA without being asked. sharp, next/image, build-time compression, a CDN that re-encodes on the fly, all of them drop the metadata. On a typical site the provenance is gone long before a browser sees it. That is a double-edged outcome. It disposes of the labelling question by accident, but deliberately stripping provenance becomes its own compliance problem the moment the use case is regulated, and if you are shipping into the EU that question belongs next to the GDPR side of AI-assisted work.
What to actually do
Short list, because there is less to do than the discourse suggests.
- Nothing, for code. No cleaner, no stripper, no workflow change. There is nothing to remove, and your formatter is already doing more than any tool you could add.
- Keep reviewing generated code, for the reasons that already applied. The watermark changes none of them.
- Decide consciously about images. If you publish Claude-generated visuals, know whether your pipeline keeps or strips Content Credentials, and make that a decision rather than an accident.
- Do not chase watermark removal for text. The only reliable removal is rewriting the text yourself, and if you are rewriting it yourself the question has already answered itself.
- Worry about quality instead. Scaled content abuse is the thing that actually costs rankings, and it was costing them long before any watermark existed.
The measure is a transparency obligation, honestly documented, with limits its own author is careful to state. It is a much smaller event than the reaction suggests, and for anyone shipping code with agents, it is very close to a non-event.
If you run agents at any scale, the operational questions worth your attention are still the old ones: what the agents touched, what got reviewed, and what shipped. That is the part AgentsRoom exists to make visible.
Download AgentsRoom
Run your AI agents (Claude, Codex, Antigravity CLI, OpenCode, Aider, Grok Build, Mistral Vibe, Kimi Code) on all your projects, from a single window.
Companion app: monitor your agents on the go
Bring your own: Claude, Codex, Antigravity CLI, or other AI provider.
Push bugs and requests straight to your public backlog.
A glimpse of AgentsRoom in action.
Keep reading
Vibe Coding and GDPR: Why Your AI-Built Site May Be Breaking the Law
AI coding agents like Claude Code and Codex ship working sites fast, but they quietly introduce GDPR violations you never asked for: cookies set before consent, personal data kept forever, no way for users to delete it. Here is why it happens across every coding agent, what it can cost you, and the free Claude Code skill that scans your project for GDPR issues and fixes them.
Read the articleThe Canary Trick: Catch Claude (or Any AI Agent) Before It Starts Hallucinating
A one-line trick to know when your AI coding agent is degrading: make it begin every reply with a name. When the name vanishes, the canary is dead and it is time for a fresh session. Works on Claude, Codex, Antigravity CLI, Mistral Vibe and every LLM.
Read the articleClaude Code Keeps One Login at a Time. Here Is How to Run Several.
A field guide to running a work account and a personal account on the same machine: the one environment variable that decides which login is active, why the shell approach breaks once you have more than two terminals, and how to pin an account per project.
Read the article