ai writing
How Human Does AI Fiction Actually Read? We Built a Way to Measure It
Introducing Fiction Slop Index!
How Human Does AI Fiction Actually Read? We Built a Way to Measure It
Gemini 3.1 Pro scores 84.7 out of 100 on the Fiction Slop Index. GLM-5.2, the lowest-ranked model in the current roster, scores 73.7. Eleven points separate the most human-reading fiction writer among nine leading AI models from the least, across six craft tasks in three genres, tested at default settings with nothing regenerated because we didn't like the first draft. That's a narrower gap than we expected going in, and it's the first real number we've had for a question every AI writing tool eventually runs into: which model actually writes fiction that doesn't read as a machine wrote it?
theslopindex.com already answers a version of this question, and answers it well, for functional writing. Their Human Score blends a 40% Arena (blind human votes) with four 15% mechanical axes, Conciseness, Templating, Rhythm, and Tells, measured across email, essays, social posts, and chat. It's a good model. It also doesn't touch fiction, and fiction fails in ways a cover letter doesn't. A cover letter that avoids "in today's fast-paced world" is doing its job. A short story that avoids that same phrase can still open on a symbolic sunrise, close on a bookend image that rhymes with its first paragraph, and never once let a character feel something without also stating, in so many words, that the character felt it. None of that shows up on a leaderboard built for business writing, because business writing doesn't have those failure modes to catch.
So we built our own, reusing detectors we'd already shipped for a different job and writing one axis from nothing.
What the score actually measures
The Fiction Slop Index reports a Human Prose Score on a 0-100 scale, where 100 reads as a person wrote it. Five components make it up:
|
Component |
Weight |
Status |
What it reads |
|
Arena |
35% |
Planned |
Blind human A/B votes on real passages |
|
Tells |
20% |
Live |
Density against a 758-entry AI cliché corpus |
|
Templating |
15% |
Live |
Repeated openers, framing phrases, symbolic endings |
|
Rhythm |
15% |
Live |
Sentence-length variation vs. a metronomic cadence |
|
Show / Tell |
15% |
Live |
Filter verbs, emotion-naming, telling instead of showing |
The Arena isn't live yet, so the leaderboard today reports a Mechanical Prose Score: the four running axes, renormalized to their relative weights.
MechanicalProseScore = 0.308 · Tells + 0.231 · Templating + 0.231 · Rhythm + 0.231 · ShowTell
Every one of those four axes is a pure function of the text. No model reads a passage and grades it. Feed a detector the same paragraph twice and it returns the same number twice, which is the property that makes a score worth publishing: you can check our arithmetic.
Tells: the word-level fingerprint
The most direct axis runs against the AI Cliché Corpus, 758 entries built from published frequency studies and our own testing of what these models actually write when nobody's editing them. A passage reaching for "a testament to," "the silence was deafening," or "in the tapestry of" is a passage the detector has already seen, many times over, and it counts.
d = Σ (strength · repeat(count) · lifecycle) / words · 1000Tells = 100 - (100 · d / (d + 100))
Two details in that formula are worth spelling out. Repetition of a single term is capped, so one weak tell doesn't sink a score the way ten repeats of it should. And every corpus entry carries a lifecycle weight, because clichés decay. A phrase that read as a screaming tell eighteen months ago sometimes fades into ordinary use as writers, human and machine both, absorb it, so entries on their way out get down-weighted instead of frozen at full strength.
Templating, Rhythm, and Show / Tell: what a word list can't catch
Word matching only reaches the surface. The other three axes exist because the deepest tells in AI fiction carry no banned words at all.
Templating looks for structure: runs of sentences that open identically, the negation pivot ("she did not run, she walked"), a symbolic final line that echoes the opening image, detachable epigrams that could be lifted out and printed on a poster. A chapter can use flawless, original vocabulary in every single sentence and still close on a bookend so mechanical that a careful reader feels the seams.
pts = 2·anaphoraRuns + 2·negationPivot + 2·framingFrames + 3·symbolicEnding + 1·epigramsTemplating = 100 - (100 · pts / (pts + 4))
Rhythm reads sentence-length variation against the flat cadence AI defaults to when nothing is pushing back, averaging five sub-signals: burstiness, a comfort band around fifteen to twenty words, subordination, the share of simple sentences, and a check for the opposite failure, an over-corrected staccato chop, the telltale of a model that's been told to vary its rhythm and responds by hacking every third sentence into a fragment. Passages under six sentences don't carry enough length to read a cadence from, so they score a neutral 75 rather than get punished for being short.
Show / Tell is the axis nothing else in this space measures, and the reason we couldn't just borrow someone else's leaderboard wholesale. It counts filter verbs ("she saw," "he felt"), emotion-naming ("a wave of dread"), and flat telling labels ("was terrified"), weighted by how directly each one substitutes for a scene instead of rendering it.
d = Σ (hit · weight) / words · 1000ShowTell = 100 - (100 · d / (d + 22))
Our first pass at this axis wasn't Show / Tell at all. We started by porting theslopindex's fourth axis directly, Conciseness, which penalizes wordiness and filler. It made sense on paper: mechanical, already built, transferable across domains. It took about an afternoon of reading real model output to see the problem. Conciseness rewards compression. Fiction doesn't. A tense scene that lingers two extra sentences on a character's hands shaking before they pick up the phone isn't padding; it's the point of the scene, and an axis built to punish extra words would have scored that lingering as a flaw. Functional writing wants you to say the thing and stop. Fiction wants you to know when to say it slowly. We cut Conciseness and spent the following week building Show / Tell instead: not writing too much, but naming a feeling rather than showing it happen.
The test set
Each model writes to a fixed grid: six craft tasks (chapter opening, tense dialogue, action beat, setting and atmosphere, emotional interior, a turn or reveal) across three genres (literary, fantasy, thriller), eighteen scenarios total, at roughly 400 words each. The prompts are persona-rich on purpose. A bare instruction like "write a tense scene" produces bare, forgettable prose from every model we tried it on; fixing a point of view, a tense, and one real constraint gets closer to what a model does when an actual writer is directing it. Every model runs at default settings, and every passage that comes back gets scored, the weak ones included.
Where the models land
Nine models from five labs, current snapshot, two samples per scenario:
|
Rank |
Model |
Maker |
Score |
Samples |
|
1 |
Gemini 3.1 Pro |
|
84.7 |
36 |
|
2 |
GPT-5.5 |
OpenAI |
81.2 |
36 |
|
3 |
GPT-5.6 Sol |
OpenAI |
80.6 |
36 |
|
4 |
GPT-5.6 Luna |
OpenAI |
79.7 |
36 |
|
5 |
Claude Sonnet 5 |
Anthropic |
77.5 |
36 |
|
6 |
Claude Fable 5 |
Anthropic |
77.2 |
36 |
|
7 |
GPT-5.6 Terra |
OpenAI |
76.7 |
36 |
|
8 |
DeepSeek V4 Pro |
DeepSeek |
76.4 |
33 |
|
9 |
GLM-5.2 |
Z.ai |
73.7 |
33 |
DeepSeek V4 Pro and GLM-5.2 run on 33 passages instead of 36 because both models occasionally return an empty second sample, most likely due to reasoning tokens eating up the output budget before the model reaches the actual prose. A tenth model, Kimi K3, doesn't appear on this list at all. It returned empty completions on seventeen of eighteen scenarios, even after we raised its token budget more than once to give the reasoning room to finish before the prose started. We dropped it from the roster rather than publish a score built on a single valid passage.
What the number doesn't tell you
A model can score 84 here and still write dull fiction. Slop-free and good are different claims, and treating them as the same thing is exactly the mistake a mechanical score invites if nobody stops it. Gemini 3.1 Pro's lead is a lead in avoiding recognizable machine patterns, not a verdict on whether its prose is worth reading. We keep a separate Craft Quality board, scored by a blind LLM judge, for voice, originality, and how well an ending actually lands, specifically so this number is never asked to answer a question it can't.
That separation is also why no model grades its own prose on the Human Prose Score itself. The four live axes are code, not another model with opinions, and the planned Arena replaces an AI judge with blind human votes: two passages, same prompt, model names hidden, a reader flags whichever one reads more like AI. Votes update a Bradley-Terry rating, with human-written control passages mixed into the pairs, so a run of lucky guessing can't inflate a model that real readers are actually catching half the time.
What's still thin
Three gaps matter enough to say plainly rather than bury in a footnote. Rhythm barely spreads across this roster at 400 words: every model we tested lands near the top of that axis, because none of them hit real cadence extremes at this length, which means the axis isn't earning its 15% weight yet. It will, once passages run longer and the model set widens. This is a preview snapshot, not a finished ranking; the Arena isn't live, eighteen scenarios is the whole test bank rather than a sample of a larger one, and every number here will move once both change. And the score measures style, not authorship. An edited AI draft can read clean on every axis here, and plenty of human writers work in a cliché-heavy style with no machine anywhere near the keyboard. This is a measure of how templated the prose reads, full stop. It was never built to answer the question of who wrote it.
The Tells axis behind this leaderboard runs, unmodified, in our free Slop Checker: paste a passage, get the same corpus-density score these nine models are getting, no account needed. The corpus is open, and so is every formula on this page. If a number here looks wrong to you, reproducing it is the whole point, so go check.
Full methodology, every threshold, and the complete model roster: https://aistoryhub.co/slop-index/methodology.