Code and repositories
Claude Code watermark: comments come back in other words, the code comes back byte for byte
Send the source file as it is. The comments and docstrings are re-expressed, everything else is left exactly as you sent it, and the before and after view is on the screen before any decision about money.
Remove the Claude watermark from code: what we do with a source file
What we promise about a code file
In a language we parse, only the comments and docstrings are processed: the code itself and every string literal come back byte for byte, and you see exactly that in the before and after. We promise nothing about how the program behaves afterwards, because there is no compiler and no test runner in this service.
In a language we parse, we read the file, find the prose inside it and send only that to the model. Two things stay as they are on purpose: comments too short to carry any wording, and anything written for a tool rather than a reader, such as lint directives, type pragmas, licence headers and generated-file notices. A file with no comments or docstrings in it is refused before processing, because there is nothing in it to process. In Python the result also has to parse as a program before we hand it over.
Languages where only the comments and docstrings are processed
Python, JavaScript, TypeScript, Java, Kotlin, Scala, Groovy, C, C++, C#, Go, Rust, Swift, Dart, PHP, Shell, Ruby, Perl, R, PowerShell, SQL, CSS, Sass and Less, TOML, YAML.
Anything else goes through as ordinary text from the first character to the last, including single-file component formats and the languages we have no parser for: .vue, .svelte, .ex, .exs, .erl, .hs, .clj, .lua. Markup (.md, .markdown, .rst, .adoc, .asciidoc, .org, .tex, .html, .htm, .xml) belongs to that group on purpose: there the wording a reader sees is the page itself. Your report names which of the two happened to your file.
The file types we take today
.txt .text .log .csv .tsv .md .markdown .rst .adoc .asciidoc .org .tex .html .htm .xml .json .jsonc .yaml .yml .toml .ini .cfg .conf .properties .sql .css .scss .sass .less .py .pyi .js .mjs .cjs .jsx .ts .tsx .vue .svelte .java .kt .kts .scala .groovy .gradle .c .h .cpp .cc .cxx .hpp .cs .go .rs .rb .php .swift .dart .ex .exs .erl .hs .clj .lua .pl .r .sh .bash .zsh .ps1
Plus these names with no extension: readme, license, licence, changelog, notice, makefile, dockerfile, rakefile, gemfile, procfile. A format we do not take is refused before processing, so it never costs you a free run.
Check it with your own eyes: comments changed, code identical
Read the before and after view in two passes. First the lines that came back different: every one of them is a comment or a docstring, and the sentences inside are in other words. Then everything else, which is most of the file: signatures, identifiers, string literals, indentation, blank lines, character for character as you sent them.
The same comparison runs on our side first. We strip our comments back out of the result and what remains has to match your original exactly; a file that fails that check comes back to you untouched, with the report saying so. Paste one source file and that comparison, with every figure, name and term from your comments checked against the original, is yours on the free run.
The Claude watermark in code: three traces, and only one is the mark
Someone strips characters and is told the mark is untouched; someone puts a whole file through a rewriter and is told they wasted an afternoon. Both are right about their own trace. Sorted out, this stops being confusing.
-
1. Signature lines in the open
A trailer on a commit, a note at the top of a generated file, a line in a pull request description. Ordinary text in your history: find every instance with a search and decide what stays. Clearing them changes nothing about the wording around them.
-
2. Invisible characters
Hidden characters in generated output, a separate story from June 2026. A free cleaner takes them out in one pass and the count is yours to check. Our processing clears them too and counts every one in your report, as hygiene rather than as the method.
-
3. The statistical mark, in word choice
Anthropic has been marking Claude output since 2 August 2026, in text, code and files. It lives in the sequence of words the model chose, so it survives the two traces above and is reached only by re-expressing the wording. In a source file that means the comments and docstrings; in a repository, the README, the docs and the commit messages as well.
Why developers arrive on this page
-
The repository goes to the client this week
The README, half the comments and a run of commit messages came out of the same session, and whoever opens it reads them like anything else you handed over.
-
Code review
A reviewer who has read a lot of assistant output recognises the register without any detector: the tidy summary comment, the docstring that restates the signature.
-
Security asked where the material came from
A third party's marker inside a deliverable turns into a policy question, and the person who has to answer it is you.
-
It is your product and somebody else's stamp is on it
You pay for the tool, then it advertises itself inside your project. The material is yours; the law obliges the model provider to mark its output, not you to carry the mark.
A repository is bigger than one run
One file can be any length, up to 100,000 words per order and 15 MB per upload; free, you see the first 3,600 characters of it processed, about 600 words. Work through a repository a file at a time, in the order that carries the most of the mark: the README, then the docs, then the source files from a single session, sent whole, then commit messages if changing that history is something your project allows.
Paid processing is one payment per document, nothing recurring: $5 for a document up to 10,000 words. Longer documents are priced by length; you see the exact price before paying.
Questions developers ask
Claude code watermark: the questions that come up
Does Claude watermark code?
Yes. Anthropic has been marking Claude output since 2 August 2026, and code is covered the same way as text and files. The mark is placed in word choice, and source code leaves very little room for that: the syntax is fixed and the identifiers are constrained by the project around them. The prose in the repository is where the wording was free: the README, the docs, the comments and docstrings, the commit messages.
How do I remove the Claude watermark from my code?
Separate three things first, because the advice you find treats them as one. Signature lines the tooling wrote in the open are ordinary text: find them and decide what stays. Invisible characters come out with a free cleaner in one pass. The statistical mark sits in the sequence of words the model chose, so only re-expressing that wording reaches it: for that one, send us the source file as it stands and read the before and after view that comes back.
Is there a Claude Code watermark remover on GitHub?
Several free ones, and they are worth knowing before you pay anyone. The open repositories, scripts and packaged skills at the top of this search are built from the same layers: clearing invisible characters, stripping file metadata, and rewriting text through a model you supply. The first two finish completely. The third depends entirely on which model you point it at, and it hands you nothing about what happened to your figures and names. We ran them on the same marked texts and published what came back.