A secret coin flip for every word in the dictionary
The trick starts before any bias: hash the previous word together with each candidate, and the hash splits the whole vocabulary into a green list and a red list — roughly half and half. Crucially, the split reshuffles for every context. Pick a previous word below and watch this model's real vocabulary re-deal itself.
The hash is public math but keyed by a secret — without the key, green and red words are statistically indistinguishable from any other half-split.
Write with the thumb on the scale
Now generation: at each step the model computes its normal probabilities, then multiplies every green candidate by eδ before sampling. Slide the strength δ and generate — green-list words are highlighted. Watch two live meters fight: the green ratio climbs, and the share of picks that were still the model's natural first choice falls.
The detector — counting a loaded coin
Detection needs no model, no AI — just the key. Re-derive each word's green/red flag from its predecessor and count: unmarked text should be ~50% green, like fair coin flips. The detector turns the excess into a z-score and a p-value (the chance a fair coin looks this loaded). Generate both kinds of text and compare.
Too short to catch — the sample-size wall
A loaded coin flipped 8 times looks like luck; flipped 200 times it confesses. The chart below is computed live: for each length, this page generates 36 watermarked texts and 36 unmarked ones and plots the average detection z-score. Drag the slider along the curve and watch the catch-rate meter — short texts simply do not carry enough statistical signal.
Detection threshold: z > 2.33, i.e. p < 0.01. Every point is a fresh simulation in your browser — numbers wobble run to run, exactly like real statistics.
The paraphrase attack — washing off the ink
The signature lives in exact word choices — so change the words. Below, a watermarked text (δ = 3) starts fully detectable. Drag the attack slider to swap words for synonyms (swaps shown in red). Every swap re-rolls that word's coin and its successor's, since the hash keys on the previous word. Watch the z-score bleed out in real time.