How to check a document for hidden AI watermarks
Three completely different things get called a hidden watermark, and only two of them are yours to inspect. Invisible Unicode characters you can find and delete in a minute. File metadata you can read, and it says more about how you wrote the document than any watermark does. The statistical watermark that Anthropic began embedding on 2 August 2026 you cannot check at all, and neither can your university. Here is how to go through each layer, in the order worth doing them.
None of this is a cleanup routine for hiding AI use. It is an inspection routine, and the honest result of running it is usually "there was nothing here, and the thing I should be checking is the reference list." That is section seven.
Work out which layer you mean
The word watermark is doing three jobs at once, and mixing them up is why so much advice about it is useless.
| Layer | What it is | Can you check it? |
|---|---|---|
| Invisible characters | Real characters in the text: no-break spaces, zero-width spaces, word joiners | Yes, in a minute |
| File metadata | Author, timestamps, editing time, and C2PA manifests on images | Yes, and you should |
| Statistical watermark | A bias in which words the model chose, readable only with a secret key | No. Nor can your university |
Only the third one is what Anthropic and Google actually ship. The first is the one every "ChatGPT watermark remover" page is selling against, and it was never a watermark: it was a training artefact that some OpenAI models produced during 2025 and appear to have stopped producing. The second is the one nobody thinks about and the one most likely to say something about you.
Sweep for invisible characters
These are worth removing regardless of where they came from, because they break search, sort and hyphenation in ways that look like your mistake. Eight are worth knowing:
U+202Fnarrow no-break space, decimal 8239. The one that turned up in 2025 output.U+00A0no-break space, decimal 160. Extremely common in anything pasted from a web page.U+200Bzero-width space, decimal 8203.U+200CandU+200Dzero-width non-joiner and joiner, decimal 8204 and 8205.U+2060word joiner, decimal 8288.U+00ADsoft hyphen, decimal 173. Prints as a hyphen only when the line breaks there.U+FEFFbyte order mark, decimal 65279.
In Word. Open Find and Replace, and search for ^u followed by the decimal value: ^u8239, ^u160, ^u8203, ^u65279. Replace the two space-like ones with an ordinary space and the zero-width ones with nothing. Word will tell you how many it changed, which is the number you actually wanted to know.
In Google Docs. Open Find and replace, tick Match using regular expressions, and search [\x{00A0}\x{200B}-\x{200D}\x{202F}\x{2060}\x{FEFF}] to catch the set in one pass.
If you want to see exactly what is there. Paste the text into a code editor that renders control characters, or open your browser's developer console on any page and run [...text].filter(c => c.codePointAt(0) > 127) against a pasted string, adding .map(c => c.codePointAt(0).toString(16)) to read the results as codepoints.
That returns every non-ASCII character in the passage. Most of what comes back is ordinary: curly quotes at 2019, en dashes at 2013, accented letters. What you are looking for is 202f, 200b, feff and their neighbours.
Two things this sweep does not do. It does not tell you where the text came from, because a no-break space arrives just as easily from copying a journal abstract out of a browser. And it does not touch a statistical watermark, which is not made of characters at all.
Read your own file properties
This is the section people skip, and it is the one with something in it.
A .docx is a zip archive. Rename a copy to .zip, open it, and two files inside tell you what your submission is carrying. docProps/core.xml holds the document author, the name of whoever last saved it, and creation and modification timestamps. docProps/app.xml holds a revision count and TotalTime, the total minutes the file has been open for editing. In Word itself the same fields are under File, then Info, then Properties. In Pages or LibreOffice, look for document properties in the File menu.
Consider what that says. A 4000-word essay whose properties record eleven minutes of editing time, one revision, and a "last modified by" name that is not yours is a more concrete artefact than any detector score, because it is a record rather than a prediction. It is also the reason the standard advice about a shared or downloaded template is real advice: an author field left on someone else's name has started more awkward conversations than watermarks ever will.
The same fields work for you as well as against you. A document that shows steady editing across three weeks is exactly the process evidence that answers a suspicion, which is the point any guide to responding to an allegation keeps returning to. Do not sanitise this out of habit. Look at it, make sure it is true, and keep it.
PDFs carry a smaller set: title, author, and the producing application, visible in your reader's document properties dialog. Exporting to PDF drops the editing-time fields, which is worth knowing in both directions.
Inspect an image you did not make
If a figure, chart or photograph in your document came from anywhere but your own data, check what is attached to it.
The standard here is C2PA, cryptographically signed metadata recording what made the file and what edited it since. OpenAI attaches it to generated images, Anthropic attaches it to supported generated files, and several cameras and editors now write it too. To read it, drag the file onto the Content Credentials verifier, which shows the manifest if one is present and intact.
The catch is that a blank result proves nothing at all. C2PA is metadata, so anything that re-encodes the file removes it. A screenshot removes it. Independent testing of the major social platforms found manifests fully stripped on five of six, and a study of images uploaded to websites found the majority had their metadata gone even before AI provenance was a topic. Content that travels is exactly the content whose credentials do not survive the journey. We go through what this means for figures in a paper in the companion piece on images.
The layer nobody can check
Here is the part where the honest answer is that you cannot do this, and neither can anyone grading you.
A statistical watermark is written by biasing the model's token choices with a secret key, so reading it back requires that key. Only the provider has it. Google runs a SynthID Detector portal, still behind a waitlist aimed at journalists and researchers, and it only covers content from Google's own models. Anthropic says it will publish detection details in forthcoming technical documentation and has named no date. There is no cross-provider detector and no reason to expect one soon, because a single tool holding everyone's keys is also the thing that makes the marks forgeable if it leaks.
So treat any site advertising a universal AI watermark checker as what it is: an ordinary style-based detector with a new label on the button. Those tools guess from how the writing reads, which is why they misfire on genuine human writing and why a detector score is not evidence of anything.
One more thing follows from the mechanism, and it is oddly reassuring. Because the mark lives in word choice, rewriting a sentence in your own voice degrades it without anyone trying. Published figures put first-party detection around 99.5% on untouched output and roughly 75 to 85% after paraphrasing or a translation round trip, with far lower numbers on short passages. If you actually revised your draft, the question mostly answers itself.
What to do with what you found
Almost certainly nothing dramatic. Sorted by what people actually find:
- Stray Unicode. Clean it and move on. It is a formatting defect, it is not evidence, and fixing it is the same category of housekeeping as removing a double space.
- A wrong name in the file properties. Fix it if it is wrong. Do not blank out the honest history that sits beside it.
- An image with no credentials. That is the normal state of almost every image on the internet. What matters is whether you can say where the figure came from, not what the file remembers.
- Nothing at all. The usual outcome, and the correct one to expect.
What not to do is reach for a tool marketed as a watermark remover or an AI humanizer. Rewriting in your own words already degrades a statistical watermark, so the tool adds close to nothing on the technical side, while adding something real on the other side. Using a writing tool is a question about your process. Deliberately removing a provenance mark is a question about your intent, and only one of those is hard to explain.
The check that decides the outcome
Every layer above is invisible to the person marking your work. The reference list is not.
A marker who looks up one citation and finds it does not exist has a fact, not a suspicion, and no amount of file hygiene changes it. That is the failure mode that ends up in integrity findings, it survives every rewrite, and it is entirely preventable. If a chatbot drafted any part of your paper, go through the routine for checking whether each reference is real, or paste your bibliography into our free citation checker and let it resolve them against CrossRef and OpenAlex for you.
Then check the harder thing underneath it, which is whether each source actually supports the sentence citing it. A reference that exists and says something else is the more common failure and the one nobody screens for. Ten minutes there is worth more than any amount of time spent hunting for characters you cannot see.