The method

Everything the scorer does, and the one number it is allowed to say. Published because a score with no method behind it is an opinion in a nice font. That includes the measurement further down that says these features do not generalize.

174 machine samples fitted on · 685 held out from eleven other models · 4,677 human samples · no model in the free path

The one claim

Your text is sloppier than 96% of 4,077 real human samples (Enron sent mail, 1998-2002).

What we never say: "there is a 96% chance this was written by AI." Those are different statements and only the first is measurable. A percentile is a position against real writing in the same venue. It is not a probability, it is not evidence, and it is not grounds to fire anyone. Careful writers land high. Sloppy machines land low. Both happen, and both are in the numbers below.

The score exists to be acted on, not adjudicated. Every finding names the edit to make. That is the product.

What sets the score

One thing, measured hard: a library of 794 phrases and shapes that machine writing reaches for and people almost never do. Every one of them was tested against 10,008 real human business emails and 2,500 real human posts, and only kept if under 0.25% of real people write it.

The rule kills things that feel like slop. "In terms of" writes at 1.2% of real emails. "That said" at 1.08%. "Please find attached" at 0.54%. "At your earliest convenience" at 0.31%. All four are out, because a tool that flags what people actually write is a tool that accuses people.

Then the harder test. Each phrase being rare on its own says nothing about 794 of them running together, so we measured how many real humans trip at least one.

Stock expressions in one pieceShare of 10,008 real human emailsWhat we call it
None92.9%Reads human
One5.8%Trace
Two0.92%Elevated
Three or four0.29%Contaminated
Five or more0.03%Toxic

So the bands are not a taste call and not a percentile you have to trust. They are that table. When the result says "four stock expressions, only 0.11% of real human samples contain this many," every number in the sentence can be checked against the corpus it names.

Two other counts sit beside it, both measured the same way. Em dashes: zero of 4,077 real business emails contain one, against 9.1% of the machine written sample. Worth knowing that this corpus is plain text mail, so some of that zero is the format rather than the writer. Length: the median real business email is 90 words, and 90% are under 305.

The corpus

A percentile needs something real to be a percentile of. Each venue ranks against human writing from that venue, published before generative writing tools were widely used, so no sample can quietly be machine-written. Two venues have no corpus of their own yet. They borrow the closest one and say so on the result screen.

VenueHuman corpusHuman samplesMachine samples
emailEnron sent mail, 1998-20024,07744
docSEC 8-K press releases, 2018-202120078
socialHacker News comments, 2018-202140019
academicarXiv abstracts, RAID human split809280
newsNews articles, RAID human split908355
deckborrows doc20078
websiteborrows social40019

Academic and news were added after they broke it. The doc curve is SEC press releases, and against that curve 100% of real academic and news writing came back flagged. A student pasting a term paper was being ranked against corporate boilerplate and told they were contaminated. Both new corpora come from RAID's human rows, split in half by a stable hash of the row id so the fitted half and the held-out half can never leak into each other.

Human samples are capped at 60 per sender so a few heavy writers cannot own the curve. Quoted replies and headers are stripped, and anything under 120 words is dropped. The machine corpus is 174 samples across 13 sets, written to ordinary work briefs: decline a grant, dispute a denied claim, write an about page. The models were never asked to sound human or to beat a detector. Asking for that produces writing nobody would send, and it makes the measurement meaningless.

The corpus itself is not published. Publishing it hands every model vendor a tuning target, and the numbers stop meaning anything inside a release cycle. The method goes public instead. That is the part worth checking.

Six features, and why they no longer score

These were the backbone until 2026-08-26. They are now observations that never set the band. The sections below are kept because the reasoning is worth reading and because the findings they produce are still shown. What changed: measured against eleven other models they caught 20% of machine writing while flagging 28% of real people, and in a review of fourteen real drafts they put a good human board memo and an AI cover letter at the same percentile. A signal that cannot separate the two populations cannot be allowed to accuse anyone.

The first version of this scorer ran on word lists. It caught 3% of the 174 machine samples. A modern model doing real work does not write "delve." It writes competent prose. What it cannot help doing is writing shorter, more even sentences, with more commas, more colons, a wider vocabulary and no contractions. Those are structural, and they survive a light edit.

Separation is how far apart the two populations sit, measured as the share of combined interquartile range that does not overlap. Weight is derived from separation, clamped so nothing is free and no single feature can carry a score. None of it was set by taste. Regenerate the whole profile with node fit.mjs > profile.mjs.

FeatureMachine leansWeightSep. emailSep. docSep. social
Sentence length
mean words per sentence
shorter2.000.881.001.00
Vocabulary spread
MATTR, 50-word window
wider1.480.991.000.56
Comma density
per 1,000 words
more0.790.480.490.88
Colons
per 1,000 words
more0.780.420.610.79
Very short sentences
share at six words or fewer
more0.560.720.121.00
Contractions
per 1,000 words
fewer0.400.780.870.12

The word lists still run. They sit on top as a lexical and register layer, and they earn their place on phrases nothing human writes. They are no longer the backbone.

Read the next two sections before trusting any of this. Tested outside the corpus these features were chosen on, the six of them stop separating machine writing from human writing, and in one measurement they separate it backwards.

Measured and rejected

Digit rateMachine samples looked twice as numeric. They only looked that way because the briefs that generated them asked for names, dates and dollar figures. That is a property of how the corpus was built, not of machine writing. Scoring it would have been cheating, so it stays documented in the source and out of the score.
Raw type-token ratioIt falls as a text gets longer, so it measures length as much as vocabulary. A 60-word human note scored 82% and got flagged. Replaced with MATTR over a fixed 50-word window, which is length-invariant.
BurstinessSentence-length variance separated the two populations by only 49%. Sentence-length mean turned out to be the stronger signal, so variance was dropped instead of carried for the sake of having it.
The 120-word floorBelow 120 words the structural features measure length rather than authorship. Short passages still report their numbers, but score nothing from structure and are carried by the lexical layer alone. The result screen says so.

Where the line sits

Band edges are an operating point read off the measured curve, not a taste call. Every threshold below is a real trade: catch more machines, flag more people. The shipped edge is the highlighted row.

Flag atMachine samples caughtReal humans flaggedRead
p6095%39%Catches almost everything, and calls four in ten real writers contaminated.
p7593%25%The old edge. Four points of recall bought with ten points of false alarm.
p8093%20%Same recall as p75 for five fewer points of damage.
p85 shipped89%15%ELEVATED starts here. The last point where the false-alarm rate is defensible to the person being flagged.
p9083%11%Six points of recall gone to buy four points of quiet.
p9574%6%CONTAMINATED starts here. A quarter of machine writing walks past.
p9940%2%TOXIC. Reserved for text well outside anything a person wrote.

The five bands are READS HUMAN, TRACE, ELEVATED, CONTAMINATED and TOXIC, with edges at p60, p85, p95 and p99. Moving ELEVATED from p75 to p85 gave up four points of recall to stop calling one real writer in four contaminated, which is the failure that gets a tool like this thrown out of a building.

Held-out validation

The curves are fitted on the human corpus, so scoring that same corpus proves nothing: it comes out uniform by construction. This splits the humans in half, fits on one half, and reports what the other half gets told. Run it with node validate.mjs.

VenueHeld outReads humanTraceElevatedContaminatedToxicFlagged
email2,03861%24%9%4%2%15%
doc10063%25%8%4%0%12%
social20064%20%9%4%3%16%
All humans2,33861%24%9%4%2%15.0%

A percentile scale puts 15% of humans above p85 by definition. Landing on 15.0% is the result that says the curve generalizes rather than memorizing the half it saw. Much higher would mean the thing is fitted to its own corpus and should not ship.

Tested against other models

Every number above this line was measured on machine writing from a single model family: ours. RAID (Dugan et al., ACL 2024) is a public benchmark of 2.27M generations across eleven models with matched human rows, none of it used to fit anything here. We pulled 600 machine samples and 50 human samples from the two RAID domains that map onto a venue we claim, news and academic abstracts, and scored them with the shipped scorer.

At the shipped p85 edgeSamplesBefore matched corporaAfter
Machine, eleven generators63567% caught20% caught
Human, same domains74100% flagged28% flagged

The first column is what happens when the curve does not match the writing. Flagging every real person in the sample is the worst outcome this tool has, and giving those two registers their own human corpora fixed it.

The second column is the honest one. With matched corpora the scorer catches 20% of machine writing and flags 28% of real people. Real people are flagged more often than machines are caught, so in academic and news writing these features do not separate the two populations in either direction. The result screen says so in plain words on those venues rather than letting a number imply otherwise.

The reason is the corpus, not the text. The doc curve is fitted on SEC 8-K press releases, whose median sentence runs 31 words with a vocabulary spread of 72. Human academic and news prose runs 21.5-word sentences at a spread of 83, which our curve reads as machine-like. The same 50 human samples score a median p97 against doc, p76 against social and p53 against email. The benchmark chosen, not the writing, is producing the answer.

Refitting the doc curve on RAID's own human writing inverts the signal outright. Machine text lands at a median of p16 and human text at p56, and all eleven generators sit below the humans. What the six features actually measure is a register: dense, even, formal, contraction-free prose. That register describes our own corpus. It also describes an arXiv abstract and a wire story, which is why real writers in those domains score as slop.

Reproduce it with python fetch_ai_bench.py then node bench.mjs. RAID is free and needs no key.

Email is not in this test. RAID has no email domain, so the venue this tool is built around is also the one with no independent evidence behind it. Every email number here comes from writing by a single model family scored against Enron. That gap is real and it is not closed.

Scoring against yourself

Every failure on this page has the same shape: the curve did not match the writer. A shared corpus is a population of strangers, and when you sit far from that population the number is about the corpus rather than about you. A personal baseline removes the mismatch instead of managing it. You supply your own writing, we fit a curve from it, and a draft is ranked against how you normally write.

It is the same percentile machinery with one author instead of thousands. No model runs, nothing is stored, and the profile stays in your browser.

How much writing it takes is measured, not guessed. The Enron corpus is organized per sender, which is the exact shape of a personal corpus, so we refit 40 real senders at several sample counts and compared each personal curve against that sender's full curve.

Samples suppliedMean percentile errorBand would change
109.927%
206.520%
30 the floor5.116%
503.612%
603.09%
Somebody else's writing entirely9.024%

Read the last row first. At ten samples a personal curve is worse than using a stranger's writing, so a profile that thin is noise wearing your name and the tool refuses to build one. Thirty is the first point where your own writing clearly beats a stranger's. Fifty is where the band label steadies. The error is still falling at sixty, so sixty is where the measurement stopped, not where it converges.

Reproduce it with node min_samples.mjs.

What this does not do

It proves nothing about a person.Roughly one real writer in seven lands at ELEVATED or worse. Formal, tight, heavily edited human writing is exactly the writing that scores high. Use the score on your own work. Do not use it to accuse someone else.
174 machine samples is a small set.Enough to choose features and set an operating point. Not enough to publish a precision figure with a straight face. Growing it is the next piece of work.
The fitting corpus came from one generator, and it shows.The 174 machine samples the features were chosen on were written by a single model family. Measured against eleven other models on writing our corpus does not cover, the separation disappears and then reverses. Treat 89% as a number about business prose scored against business prose, not as a general detection rate.
Each venue has exactly one human corpus behind it.The whole doc venue rests on 200 SEC press releases, a register almost nothing else is written in. A venue is only as honest as the writing it ranks against, and right now none of them are wide enough. Broadening them is the next piece of work.
Deck and website are borrowed.Neither has a corpus of its own. They rank against doc and social, which is honest but blunt. The result screen names the corpus it borrowed.
Deliberate imitation beats it.Anyone who knows the six features can write past them: run the sentences long, contract everything, drop the colons. That is a fair trade. The point of the tool is writing that reads better, and text edited to pass these checks reads better.