Every phrase our AI detector looks for
Most detectors will not tell you what they are matching on. Ours is 70 regular expressions in 22 named categories, and this is all of them — the expressions as written, what each one weighs, and what each one actually did to the 48 licensed, dated, human- and machine-written samples in our published benchmark.
Phrases are one of four models in the score, and on their own they are the weakest kind of evidence about authorship: nearly everything below appears in human writing too. That is the point of showing them.
What the benchmark does and does not exercise
5 of the 22 labels appear anywhere in the 48-sample benchmark. That is a fact about the benchmark, not about the engine. 48 samples of 72-172 words do not contain an instance of most of what the detector looks for. Every label in the table fires on text matching its own pattern, and this file is regenerated by a script that fails the build if any of them stops doing so. The gap is a limit on what our published error rates can mean, and the reason the corpus is the thing worth widening.
Read that as a limit on us, not as a boast about coverage. A category that never appears in the benchmark is a category our published false positive and false negative rates say nothing about. Widening the corpus is what would change that.
The 13 categories with a page of their own
A label earns a URL when the engine spends 2 or more regex rows on it. One row is one phrase, and a page about one phrase is a page about a string. Two or more rows means the engine is describing a habit, which is the smallest thing a reader can be told something useful about. The single-row labels are listed in full, patterns included, rather than each being given a URL of its own.
Sixteen rows spanning weight 1 to weight 3 — everything from "delve into" to the word "significant". It is the largest single label in the engine and the one most likely to fire on ordinary prose.
Four rows, weight 2 each, matching the standard connectives of academic and administrative English. They are the only phrase family with a verdict floor of its own, shared with the structural markers.
Eight rows, weight 1 to 3, matching the way a chat assistant ends a turn: an offer to revise, an invitation to reply, or a summarising adverb.
Seven rows at weight 4 — the top weight in the engine — each anchored to the start of a line and each requiring the word to be followed immediately by punctuation.
Four rows at weight 4 matching meta-commentary that leaked past an instruction to output only the text: an announcement, a claim of having done the work, or a bold label above it.
Four rows at weight 3 matching the signposts of a five-paragraph essay. They share a verdict floor with the formal connectors: hits of the two labels are counted together, and enough of them override the rest of the ensemble.
Three rows at weight 3 matching the phrase families "it's important to note", "it is important to note" and "it's worth noting".
Three rows at weight 3: an invitation to delve, an invitation to dive in, and the "in today's (world|digital|fast-paced|rapidly)" opener.
Three rows at weight 2, each matching a sentence-opening adverb followed by a comma.
Three rows at weight 2 matching the habit of treating an abstract subject as terrain: a landscape to survey, a world to enter, a path to navigate.
Two rows at weight 3, both matching a fixed collocation rather than a single word.
Two rows at weight 2, both from the vocabulary of marketing rather than of chat assistants.
Two rows at weight 1 — the lowest in the table — matching a purpose clause bolted onto a statement.
3 of these 13 appear in the benchmark; 10 do not, and their pages say so instead of showing an invented example.
The 9 single-phrase categories
These match exactly one expression each. A page about one phrase would be a page about a string, so they are published here in full instead — the same information, without a URL that exists to have a URL.
/\boverall\b/gi The bare word "overall", weight 1. Note that "Overall," also matches a "GPT-4 closer" row, so the word contributes to both labels at once.
/\bin this article\b/gi One phrase: "in this article". Watch which side of the benchmark it fires on.
/harness the power/gi One phrase: "harness the power".
/\bat the end of the day\b/gi One phrase: "at the end of the day".
/\bwhen it comes to\b/gi One phrase: "when it comes to".
/\bi['']?d be happy to\b/gi One phrase, at the table's top weight: "I'd be happy to".
/in the realm of/gi Matches the exact string "in the realm of" and nothing else.
/\bit is essential\b/gi One phrase: "it is essential".
/\?\s*(?:probably|maybe|honestly|sort of|kind of|hard to say|yes and no)\b/gi A question mark followed immediately by a hedge ("? Probably", "? Honestly"). It carries weight 4 and contributes NOTHING to the score: an adversarial review showed one ordinary human sentence — "Would I watch it again? Probably not." — flipping a human film review in this benchmark from 13 to 80, because the hit re-armed the em-dash floor. Q&A, FAQ, interview and review writing are canonical human registers for the construction. It is now surfaced as an observation and never scored.
How to read any of this
A phrase match is not a finding about who wrote something. Our own benchmark contains human documents — a US federal rulemaking notice, peer-reviewed research published years before any general-purpose model existed — that trigger these categories, and machine-written documents that trigger none of them. We publish the resulting error rates, both directions, on the accuracy page.
If a detector score has been used against you, start with what a score actually proves. If you want to know which kinds of writing our engine scores highest, that ranking is published too, and it is close to inverted for the cases that matter.
Check your own text
Free, no account, and it names every category it matched along with the words that triggered it.
Run the detector
Generated 2026-08-28 by scripts/build-detector-tells.mjs from
functions/api/tools/detect.js and the corpus files
data/corpus-human-modern.json, data/corpus-ai-documented.json.
Nothing on this page is typed by hand.