How GPTZero works
Updated June 10, 2026
GPTZero is the detector most people meet first, so its mechanics are worth understanding precisely — both the elegant original idea and the modern classifier stack built on top of it.
From dorm room to default
Edward Tian, a Princeton senior, shipped GPTZero in January 2023 — weeks after ChatGPT's launch — and it went viral on a simple promise: paste text, learn if a machine wrote it. It has since grown into a company serving educators, with document reports, sentence-level highlighting, and an API that plugs into school workflows.
The original two signals
Perplexity: run text through a language model and ask how surprised the model is by each word. Model-generated text is built from each-most-likely-next-word, so a model reading it back is rarely surprised — low perplexity. Human writing takes odd turns; higher perplexity.
Burstiness: humans alternate short punchy sentences with long winding ones; models settle into a steady medium. Low variance in sentence statistics is a machine tell.
Both are measurements of the same deep fact: generation is sampling from a probability distribution, and sampling leaves fingerprints.
What modern GPTZero adds
Today's GPTZero layers trained classifiers over those raw signals — models trained on large corpora of human and AI text that learn subtler patterns than any single metric. It reports per-sentence probabilities, handles mixed human-AI documents, and updates as new models ship. The architecture evolved; the statistical intuition underneath didn't.
What its scores mean (and don't)
GPTZero reports probabilities, not verdicts, and the company itself cautions against using scores as sole evidence for academic decisions. Independent testing finds it solid on unedited model output and — like every detector — capable of false positives on formal human prose. Treat it as a good instrument with known error bars.
If you want your text to score well on it for legitimate reasons, our GPTZero guide covers the workflow: humanize structurally, verify, iterate.