Skip to content

Every AI detector publishes a number. Ask what is behind it.

This page is written by people who sell one of these tools, and it is not a ranking. We cannot produce a ranking: the terms of service of the detectors we would have to measure forbid the automated testing that would produce one, and we hold no measurement of any product but our own. What we can do is put our own working where you can check it, show you the code that refused to test anybody else, and report exactly what our dated records say each vendor publishes behind its figure.

Take the conflict of interest seriously while you read. We sell a detector and we sell a humanizer, so we profit from you believing detection works and from you believing it does not. That is a reason to check the numbers below rather than to trust them — which is the point of publishing them in a form that can be checked.

Four things a published figure needs before it means anything

A percentage on a marketing page is not a measurement. It is the output of a measurement whose inputs you have not seen. Four of those inputs decide whether the number tells you anything at all.

1. The corpus

What was scored, and how anyone knows the labels are right. Ours is 48 labelled samples — 24 human, 24 AI — and all 48 carry a citation, 30 of them with a link. The human half was published before any general-purpose LLM existed, so the label is a date fact rather than someone's stylistic judgement.

2. The method

The threshold, the register mix, and what happens when the scoring changes. Ours is threshold 50, 11 registers (6 human, 5 AI), plus 11 regression cases that each encode a specific defect this detector was caught making. The benchmark reruns on every scoring change and republishes whatever it reports.

3. Both error rates

One number cannot describe two failures. A tool that calls everything human never accuses anyone and still scores 50% on a balanced set. The false positive rate is the one that gets a student in trouble; the false negative rate is the one that tells you whether the tool works at all.

4. The uncertainty

24 human samples is a small corpus, and a rate computed on one is a range rather than a figure. One more mistake would move our false positive rate by about 4 points. Publishing the point estimate alone would lend it a precision the evidence cannot support.

Ours, including the number that embarrasses us

4.2%

False positive rate

95% CI 0.7% to 20.2%

1 of 24 human samples wrongly flagged

95.8%

False negative rate

95% CI 79.8% to 99.3%

23 of 24 AI samples we scored as human

0.41

ROC AUC

1.00 is perfect, 0.50 is a coin flip

0.6

Separation

Mean AI score minus mean human score, 48 samples

Read the second card again, because it is the one no marketing page prints. On this corpus the detector missed 23 of the 24 AI samples put in front of it. The corpus is deliberately weighted toward AI written to disguise itself, which is exactly the text a real user wants caught, and that is why the number is so bad. An AUC of 0.41 says the same thing without a threshold: on this material the score does not separate the two classes.

These are not good results and we are not dressing them up. The claim is that they are real, and that a number you can re-derive from a published file is worth more than a better-looking one you cannot. The full method, the per-register table and every sample's score are here, and the raw data is at /data/detector-accuracy.json.

We tried to measure the competition. Their terms forbid it.

The obvious page to write instead of this one is a comparison table. We built the harness for it — scripts/bench-humanizer-external.mjs, which sends text to a detector and records what comes back — and then could not legitimately point it at anybody. Its "Detector legality" block is dated 2026-08-26 in the file and reads, per vendor:

Originality.ai

Refused in code
"ToS explicitly forbids benchmarking. HARD-REFUSED in code below — do not add an adapter."

The script does not leave this to whoever runs it. Passing --external originality prints "Originality.ai forbids benchmarking in its ToS. Refusing." and exits before a single request is made.

GPTZero

Account-gated
"site ToS §8 forbids bot access to the Site; the API requires an account-issued key and is governed by separate API terms we could not read without an account."

An adapter exists and stays dark: it runs only with an API key present, the flag set, and --tos-checked passed by an operator who holds an account and has confirmed its terms permit evaluation use. Ten calls per run, maximum.

Copyleaks

Not testable
"not testable — ToS unverifiable without an account (page 403s non-browsers), API requires account credentials, and the scan API is async/webhook-based. Needs a real account + adapter work."

We could not read the terms to find out whether we were allowed to read the terms. There is no adapter, only a stub that records the reason.

ZeroGPT

Account-gated
"no ZEROGPT_API_KEY — official API is paid-key only; web UI scraping is off the table"

Same gate as GPTZero: key, flag, and an explicit confirmation that the account terms allow evaluation use.

Sapling

Account-gated
"no SAPLING_API_KEY — API requires an account key"

Adapter written, never run.

The harness caps itself at eight humanize calls and ten calls per external detector per run, and no flag raises either. Its last rule is the one that decides the shape of this page: "NEVER point this harness at any detector's web UI. Scraping a UI to dodge an API is exactly what we refuse to do."

So read the absence of a comparison table here as information. Anyone publishing one either holds an account whose terms permit the testing, and should say which, or is not telling you how the number was produced. We have never been able to run that test, and we make no claim about how our tools perform against anyone else's.

What each vendor publishes behind its figure

Reading a marketing page is allowed, and that is what this is: our own dated records of what 25 vendors publish about themselves, last verified between 2026-08-28 and 2026-08-29. A published accuracy or evasion figure appears in 9 of them, and 3 record that the vendor publishes no such figure at all. Of those, 2 have been answered field by field against the four tests above.

Detector CorpusMethodBoth error ratesUncertainty
Coda One (this detector) as at 2026-08-28 YesYesYesYes
GPTZero as at 2026-08-29 YesYesYesNo
ZeroGPT as at 2026-08-29 NoNoNoNo

Our row is computed from src/data/detector-accuracy.json: the corpus counts as published because all 48 samples carry a citation, the uncertainty because both rates ship with a 95% interval. Every other row is read out of the vendor record named beneath it.

GPTZero

record last verified 2026-08-29
"We support AI detection in English with 99% accuracy."

Unusually for this category, GPTZero substantiates the figure. Its standardized benchmarking page (updated quarterly) publishes a full metrics table -- GPTZero (4.3b): FPR 0.08%, Recall 99.60%, Precision 99.93%, Accuracy 99.76% -- so both error rates are given, not just headline accuracy. It publishes the benchmark construction procedure, per-domain sample sizes ("Each benchmark consists of 1000 human texts and 1000 LLM-generated texts, generated uniformly across providers [250 texts per LLM]"), the LLM set (GPT-5.2, Gemini 3 Pro, Claude Sonnet 4.5, Grok 4 Fast), the binarization mapping used to compare against Pangram and Originality, and explicit detector version tagging. On the corpus it states "We make (almost) every benchmark publicly available" and "raw predictions are available for researchers interested in reproducing results", with a stated caveat that hard-to-obtain benchmarks are restricted to researchers on request. It separately reports third-party RAID benchmark results. What it does NOT publish is any confidence interval, standard deviation or error bar on any figure -- searched the benchmarking page for "confidence interval", "standard deviation", "error bar", "p-value" and found none.

Read on the vendor's own site: gptzero.me

ZeroGPT

record last verified 2026-08-29
"ZeroGPT delivers industry-leading accuracy and is continuously improved to maintain best-in-class performance—pushing toward >98% on internal evaluations."

Nothing behind the figure is published. The claim is explicitly self-scored -- "on internal evaluations" -- and no dataset is named, sized or offered for download. No false-positive or false-negative rate is given anywhere; the FAQ acknowledges false positives only qualitatively ("Highly polished, formulaic, or low-entropy writing can resemble AI") and answers "How do I reduce false positives on human text?" with writing advice rather than a number. Method is described in prose only -- "token patterns, burstiness, entropy, and ensemble classifier features trained on mixed datasets", "We retrain regularly, calibrate thresholds, and run diverse test suites" -- with no thresholds, sample sizes, competitor comparison or reproducible protocol. The /ai-detector page describes training data as "trained on extensive text collections from the internet, educational datasets, and our proprietary synthetic AI datasets produced using various language models" with no quantity. No confidence interval.

Changed since our last check: The previous record captured a firm "98%+" self-reported figure. As of 2026-08-29 the vendor has softened the wording to "pushing toward >98% on internal evaluations" and the FAQ has been restructured to add a "Detection Accuracy & Methodology" section. The older, widely-cited framing (an "up to 98%" rate derived from analysing "more than 10 million articles") no longer appears in the FAQ text. Reported as a change in the vendor’s own claim, not as a measurement.

Read on the vendor's own site: zerogpt.com

One column is worth stopping on. Of the rows above, ours is the only one that states an interval — which is not a boast about our detector, the worst-performing thing in this table. It is a statement about the category: a figure published with no error bar cannot be told apart from a figure that was rounded up, and every other number here is published bare. Ours was too, until the benchmark that produced this page put an interval on it.

The other thing the table will not tell you is that these corpora are not the same size. Ours is 48 samples. The benchmark GPTZero describes above is larger than ours by orders of magnitude, and on the evidence available the better-evidenced detector is not the one selling you this page. What our file buys you is different: every input to the number is checkable, including the inputs that make it look bad.

2 more claims we recorded, without a field-by-field audit

Grammarly

Grammarly AI Detector verified 2026-08-29
"Achieves 99% detection accuracy and ranks #1 on RAID's independent benchmark"

The same page carries disclaimers that no AI detector is 100% accurate and that results should not be used as standalone verification. This is a vendor claim about an independent benchmark (RAID), not an independently reproduced figure.

Source: grammarly.com

Quillbot

Quillbot's AI Detector verified 2026-08-29
"Detect AI text reliably with a 99% detection rate, according to independent evaluations from RAID."

Vendor claim citing the RAID benchmark, not an independently reproduced figure. Note that Grammarly publishes a near-identical "99% / #1 on RAID" claim on its own AI-detector page, so a comparison page that presents 99% as a differentiator for either vendor is misleading.

Source: quillbot.com

The caveat we publish next to our worst number

Publishing a bad number is easy next to publishing why it is not even the right bad number. Our benchmark file carries 4 written caveats. This is the one attached to the 95.8% false negative rate, reproduced exactly as it stands in the data file, including the list of models that are not in the corpus at all:

Read this before quoting any FNR computed from this file. WHICH MODELS ARE ACTUALLY IN HERE (24 samples): - claude-opus-5 (Anthropic), generated 2026-08-26 for this benchmark: 18 samples. - OpenAI gpt-4o-mini, as the engine of the Codaone production humanizer, rewriting claude-opus-5 text: 3 samples. Mixed lineage — Claude wrote it, GPT rewrote it. - OpenAI ChatGPT, December 2022 web release (gpt-3.5 era), via the HC3 dataset: 3 samples. WHICH ARE NOT: Google Gemini. Meta Llama. Mistral. DeepSeek. Qwen. xAI Grok. Cohere. Every current-generation OpenAI model (GPT-4o, GPT-5 family) except gpt-4o-mini in its humanizer role. Every current-generation Claude except opus-5. Nothing from a consumer "undetectable AI" service (StealthGPT, Undetectable.ai, Phrasly) — those are the strongest evasion tools in the wild and we have zero samples of their output. THEREFORE: an FNR computed over this corpus is an FNR *for Claude Opus 5 output, for our own humanizer's output, and for three-year-old ChatGPT output*. It is not an estimate of how often we miss AI text in general, and it must not be published as one. If the number is quoted on /ai-detector/accuracy, this sentence has to travel with it. A SECOND BIAS, LESS OBVIOUS: 18 of the samples were written by the same model that assembled this corpus, while it knew it was building a detector benchmark. That is a demand-characteristic risk in both directions — the model may have written more stereotypically "AI" prose for the default-register samples, and may have tried harder than a naive user would on the evasion samples. The prompts are recorded verbatim so a third party can rerun them on any model and check. Doing that on a non-Claude model is the cheapest available fix for both biases. THIRD, THE REGISTER MIX IS NOT A USAGE DISTRIBUTION: {"default-assistant":7,"instructed-casual":5,"instructed-varied-rhythm":5,"humanizer-output":3,"domain-specific":4}. It is deliberately weighted toward evasion (13 of 24 samples are instructed-casual, instructed-varied-rhythm, or humanizer output) because §1.4 of AI-DETECTOR-COMPETITIVE-2026-08-25 measured that all of our false negatives come from disguised AI. A corpus weighted this way will report a WORSE FNR than a corpus of default-register text would. That is intentional and honest; it is not comparable to a competitor's headline accuracy number, which is measured on whatever mix flatters them. FOURTH, ON THE HUMANIZER SAMPLES: the free anonymous quota is 3/day/IP and all three were used on 2026-08-26, so there are exactly three and no reruns. They are the highest-value rows in the file — a false negative on any of them means our own paid product defeats our own free product, which is the central question the accuracy page exists to answer honestly.

Source: src/data/detector-accuracy.json, regenerated 2026-08-28. The other 3 caveats — on how the publication dates were verified, on how the non-native-English samples were sourced, and on within-register variance — travel with the file too.

Five questions for any detector, including this one

If you are choosing a tool, or arguing with an institution about one, these are the questions that separate a measurement from a marketing figure. Our answers are underneath each; ask the same of anyone else.

  1. 1. What text was the number measured on?

    A detector scored on default-register essays reports a flattering number. Ours is weighted toward AI written to hide that it is AI, which is why our false negative rate looks terrible. Ask for the mix, not the headline.

  2. 2. How do you know the human samples are human?

    Every human sample here predates public LLMs and records how that was checked — DOIs against Crossref, Federal Register document numbers, MediaWiki revision ids. 30 of the 48 rows carry a link you can open. "Our team wrote them" is not a verification method.

  3. 3. What is the false negative rate?

    Accuracy on a balanced set hides which direction the errors run. A tool that calls everything human scores 50% and never accuses anyone. Ours misses 23 of 24 AI samples, and we would rather print that than an average that conceals it.

  4. 4. What is the confidence interval?

    A rate computed on a small corpus is a range, not a figure. Our 4.2% false positive rate has a 95% interval running from 0.7% to 20.2%. Published bare, the same evidence reads as a precision it does not have — and this is the question the whole category currently fails.

  5. 5. Who checked it besides you?

    Nobody has checked ours. We are the vendor, we chose the corpus, and it is small. Saying so is available to every vendor in this category and few of them say it.

What this does not prove

None of it makes our detector better than anyone else's, and we are not saying it does: we hold no measurement that could support the claim, and the numbers above are bad. Showing the working buys something narrower and more useful — you can see how far to trust a number, which direction it fails in, and how much of it is noise. If you have been accused of something on the strength of a score, that is the distinction worth arguing about.