{"componentChunkName":"component---src-templates-blog-post-js","path":"/readers-cant-identify-watermarked-ai-text/","result":{"data":{"site":{"siteMetadata":{"title":"sean goedecke"}},"markdownRemark":{"id":"3795d765-9753-5afe-a314-4c663fc03951","excerpt":"In the last few weeks, I’ve been complaining that everyone is wrong about AI watermarking: it isn’t really anti-consumer and it doesn’t make the outputs any…","html":"<p>In the last few weeks, I’ve been <a href=\"https://www.seangoedecke.com/ai-text-watermarking-is-not-a-big-deal/\">complaining</a> that everyone is wrong about AI watermarking: it isn’t really anti-consumer and it doesn’t make the outputs any worse. The watermarking <a href=\"https://arxiv.org/abs/2603.03410\">papers</a> demonstrate<sup id=\"fnref-1\"><a href=\"#fn-1\" class=\"footnote-ref\">1</a></sup> that this is true, but I thought it might be interesting to put it to a practical test. Given examples of watermarked and unwatermarked answers to the same prompt, could readers tell which is which?</p>\n<p>To find out, I vibed up<sup id=\"fnref-2\"><a href=\"#fn-2\" class=\"footnote-ref\">2</a></sup> <a href=\"https://sgoedecke.github.io/watermark-quiz/\">https://sgoedecke.github.io/watermark-quiz/</a>, a static site that quizzes readers. I used Qwen3-30B-A3B-Instruct-2507 on a rented H200 to generate thirty responses: three responses per question, one of which was secretly watermarked with SynthID-Text. The rented GPU cost around two dollars. To measure results, I just sent users to a different page for each score, and aggregated visitors-per-page in my analytics<sup id=\"fnref-3\"><a href=\"#fn-3\" class=\"footnote-ref\">3</a></sup>. This would be easily spoofable if anyone cared enough to do so, but for a casual test I think it’s acceptable.</p>\n<p>The first round of traffic I got to the quiz (278 participants) had these slightly puzzling results:</p>\n<table>\n<thead>\n<tr>\n<th align=\"right\">Score</th>\n<th align=\"right\">Participants</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td align=\"right\">0</td>\n<td align=\"right\">6</td>\n</tr>\n<tr>\n<td align=\"right\">1</td>\n<td align=\"right\">15</td>\n</tr>\n<tr>\n<td align=\"right\">2</td>\n<td align=\"right\">36</td>\n</tr>\n<tr>\n<td align=\"right\">3</td>\n<td align=\"right\">64</td>\n</tr>\n<tr>\n<td align=\"right\">4</td>\n<td align=\"right\">54</td>\n</tr>\n<tr>\n<td align=\"right\">5</td>\n<td align=\"right\">39</td>\n</tr>\n<tr>\n<td align=\"right\">6</td>\n<td align=\"right\">51</td>\n</tr>\n<tr>\n<td align=\"right\">7</td>\n<td align=\"right\">10</td>\n</tr>\n<tr>\n<td align=\"right\">8</td>\n<td align=\"right\">3</td>\n</tr>\n<tr>\n<td align=\"right\">9</td>\n<td align=\"right\">0</td>\n</tr>\n<tr>\n<td align=\"right\">10</td>\n<td align=\"right\">0</td>\n</tr>\n</tbody>\n</table>\n<p>Pure random choice would lead to an average score of 3.33/10. However, the mean score here is 3.92. There is indeed a spike around 3/10, as expected, but there’s also a second weird spike at 6/10. Why is that? It turned out that the SynthID response was option A in six of the ten questions, so users who just selected the first answer for every question would get 6/10. Oops.</p>\n<p>I re-shuffled the questions and got these results:</p>\n<table>\n<thead>\n<tr>\n<th align=\"right\">Score</th>\n<th align=\"right\">Participants</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td align=\"right\">0</td>\n<td align=\"right\">1</td>\n</tr>\n<tr>\n<td align=\"right\">1</td>\n<td align=\"right\">3</td>\n</tr>\n<tr>\n<td align=\"right\">2</td>\n<td align=\"right\">14</td>\n</tr>\n<tr>\n<td align=\"right\">3</td>\n<td align=\"right\">21</td>\n</tr>\n<tr>\n<td align=\"right\">4</td>\n<td align=\"right\">20</td>\n</tr>\n<tr>\n<td align=\"right\">5</td>\n<td align=\"right\">11</td>\n</tr>\n<tr>\n<td align=\"right\">6</td>\n<td align=\"right\">2</td>\n</tr>\n<tr>\n<td align=\"right\">7</td>\n<td align=\"right\">1</td>\n</tr>\n<tr>\n<td align=\"right\">8</td>\n<td align=\"right\">0</td>\n</tr>\n<tr>\n<td align=\"right\">9</td>\n<td align=\"right\">0</td>\n</tr>\n<tr>\n<td align=\"right\">10</td>\n<td align=\"right\">0</td>\n</tr>\n</tbody>\n</table>\n<p>Now the mean is 3.4/10, much closer to the expected 3.333. There’s no spike around 6. We only had 73 people take the quiz after I shuffled the questions — most people saw it and took it immediately after I posted it to my LinkedIn and Hacker News — but given the previous results, I think that’s still enough to feel confident that people were just guessing randomly.</p>\n<p>So no, <strong>people can’t identify the presence of AI watermarks</strong>. Obviously this wasn’t exactly a scientific study, but it’s still pretty suggestive. If watermarks were really choosing random words that the model would never pick, you’d be able to sometimes tell from three side-by-side responses which one went down the weird watermarked road, right? I also hope that something like this can serve as a persuasive tool: if you’re worrying about what impact watermarking is going to have, and your intuition is unmoved by the mathematical explanations, <a href=\"https://sgoedecke.github.io/watermark-quiz/\">having a read</a> of the watermarked and unwatermarked responses might convince you that there’s really no difference in quality.</p>\n<div class=\"footnotes\">\n<hr>\n<ol>\n<li id=\"fn-1\">\n<p>The one-sentence explanation for why is that AI models already randomly select from a handful of top tokens, and watermarking just replaces that random choice with a bias that is predictable while still being equivalently “random”: as a simple example, instead of “pick randomly from the top three tokens”, you could do “count the letters in the previous ten tokens, take mod three, then pick that token”.</p>\n<a href=\"#fnref-1\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-2\">\n<p>Some notes from the vibing: GPT-5.6-Sol put extraneous text all over the page I had to get it to remove, it chose the now-very-recognizable styling that I had to rip out, and it built some kind of weird Javascript-driven static site instead of just the cross-linked pure HTML thing I would have built by hand. It took me about an hour (although I did maybe ten minutes of actual work).</p>\n<a href=\"#fnref-2\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-3\">\n<p>Umami, hosted on PikaPods. For my blog, I do also pay for Netlify analytics because I find JS-based analytics misses >50% of technical users, but for stuff like this Umami is fine.</p>\n<a href=\"#fnref-3\" class=\"footnote-backref\">↩</a>\n</li>\n</ol>\n</div>","frontmatter":{"title":"Readers can't identify watermarked AI text","description":null,"date":"August 21, 2026","tags":["ai","ai watermarks"]}}},"pageContext":{"slug":"/readers-cant-identify-watermarked-ai-text/","previous":{"slug":"/good-writing-is-obvious-not-original/","title":"Good writing is obvious, not original"},"next":null,"preview":{"slug":"/ai-text-watermarking-is-not-a-big-deal/","title":"AI text watermarking is not a big deal","snippetHtml":"<p>People are <a href=\"https://x.com/arturovilla/status/2088406939466084643?s=20\">pretty</a> <a href=\"https://x.com/NickADobos/status/2088350712359256440?s=20\">unhappy</a> about Anthropic’s recent <a href=\"https://www.anthropic.com/news/claude-text-watermark\">announcement</a> that they’re planning to include a hidden watermark in Claude model outputs. Will this lead to a mass exodus from Anthropic models? Will the introduction of watermarking be a meaningful change for users?</p><p>No. AI text watermarking is not a big deal. It doesn’t make the text worse, it doesn’t make AI outputs more detectable in practice, it doesn’t violate user privacy, and everyone’s going to be doing it by 2027 regardless.<br /><a href=\"/ai-text-watermarking-is-not-a-big-deal/\">Continue reading...</a></p>"}}},"staticQueryHashes":["1146911855","3764592887"]}