The Zero Slop blog · August 25, 2026 · 4 minute read

The tells readers actually name.

Someone else counted, and it is a fair test of our meter.

By Manav Mishra

Carter Johnson mined Reddit for the phrases people cite when they say a piece of writing reads as AI-written. The method decides how much the numbers are worth, so it is worth stating. He searched 46 subreddits across 2021 to 2026, collected 89,239 posts, filtered them to 7,984 that were actually on topic, then had the 604 highest-engagement posts read one by one to tally which tells the author was naming as a marker rather than merely using. Five auditors re-read samples to check for over-counting. The data and the scripts are public under an MIT license.

Two limits before the numbers. Comment search timed out, so this is posts only. And the percentages are shares of those 604 read posts, which means the top result rests on roughly 43 of them. Treat the ranking as sound and the decimal places as noise.

Em dashes lead at 7.1%. Then uniform sentence rhythm at 4%. Then the “not just X, it’s Y” construction at 2.8%, sycophancy at 2.5%, and the perfectly-structured essay shape at 2.5%. Below those sit “deep dive” at 2%, everything-as-bullet-lists at 1.7%, the “delve” and “tapestry” vocabulary cluster at 1.3%, and the rule of three at 1.2%.

7.1%em dash overuse4%uniform rhythm2.8%“not just X, it’s Y”2.5%sycophancy2.5%formulaic essay shape2%“deep dive”1.7%bullet listicles1.3%delve, tapestry cluster1.2%rule of threeno word list can catch thesethey are properties of a whole document,not phrases you can match
Share of 604 read posts citing each tell. The two in terracotta are marked regex-blind by the study.

The ordering is not the interesting part. This is: the study marks which tells a word list can find, and three of its top nine are marked regex-blind. Uniform rhythm cannot be caught by matching phrases, and neither can sycophancy or polished-but-hollow prose, because none of them is a phrase. Each is a property of a whole document.

That is the finding worth sitting with. The tell readers name second most often is invisible to the technique most anti-slop tools are built on.

How our meter scores against it

I ran the top sixteen tells against Zero Slop and checked each one against every channel, not just the pattern list.

All sixteen are covered. Twelve are caught by the 279-pattern meter directly: the em dashes, the vocabulary cluster, “deep dive”, the bullet spam, the rule of three, the leftover assistant boilerplate, the hype words, “in conclusion”.

Four are not, and those are the ones that matter. Uniform rhythm is measured by the burstiness channel, which reads the spread of sentence lengths and has no word list at all. The formulaic essay shape is a formatting and structure measure. The “not just X, it’s Y” construction and hollow prose are handled in the judgment pass, where the rule is to flag a hollow span and ask for the missing substance rather than reword it into something that sounds better and says the same nothing.

We did not build those channels because of this study. They predate it. But an independent count of what readers complain about, produced by someone with no stake in our design, landed on the same conclusion the architecture assumes: a word list is necessary and nowhere near sufficient.

The thing he got right that we did not

The same repository ships a scanner built on the study. It carries 105 patterns across 23 tells to our 279, and it deliberately stops short of the structural work: rhythm and emptiness are handed to a human pass rather than guessed at. That is an honest boundary to draw.

But it does one thing we do not, and finding it cost us. His scanner skips material you are quoting. Text inside quotation marks is exempt, as are blockquotes and fenced code, on the grounds that flagging a cliche someone quotes so they can discuss it would be wrong.

We wrote that same rule into our own instructions and never implemented it in the scorer. This post was the proof. The first draft scored 79.7 out of 100, a major rewrite, purely because it quotes the tells it is about. Our own README scored 87.5 for the same reason. The meter had been charging writers for naming a cliche.

So we fixed it, and shipped the fix before this post went up. Quotations, blockquotes and fenced code are now out of scope for the pattern meter, with one guard: a quoted span longer than 200 characters is still scored, so quoting cannot become a way to smuggle a paragraph past its own meter. A long slop passage scores 100 either way.

This post now scores 11.5 and the README 11.4. The must-never-flag corpus still passes 12 of 12, and all 42 values in the public RAID+ benchmark are unchanged, so nothing we have published moved. The fix came from reading a competitor’s code.

Where this leaves the score

The em dash result is a caution, not a win. It is the most-cited tell by a wide margin, and it is also the easiest to overcorrect into. A writer who strips every em dash produces prose with a different problem. Our scorer caps dash density rather than banning the character, because Lincoln ran 2.1 per hundred words at Gettysburg and still scores clear.

And sycophancy is only partly a pattern problem. We catch “great question” and its relatives by phrase. We do not catch a document that is uniformly, structurally agreeable, and neither does anything else that works by matching text.

The full ranking, the corpus, and the scripts are on GitHub. Run our meter on your own writing and see which of these it finds.

← All posts