Blog Colour, type and surface
Why AI writing can't stop reaching for emoji
Reward models score decorated answers higher than plain ones, so the models learned to decorate. The research behind the habit, the April 2025 case where everyone watched it happen live, and the three detectors here that catch it.

Ask a chatbot to summarize a document and you'll often get back a column of โ , ๐, and ๐ก standing in for actual reasoning about what mattered. It's such a reliable tell that it has its own line in Wikipedia's internal guide for spotting AI-written edits, sitting right next to em dashes and "it's not just X, it's Y." Nobody sat down and decided emoji should replace icons. Something further upstream made that decision for every model that shipped after it.
What the detectors here are actually counting
Three separate detectors on this site catch different shapes of the same habit. emoji-density fires once a page's visible copy hits five or more emoji doing the job an icon library should be doing, and it's the heaviest of the three at 14 points. emoji-headings looks specifically inside headings, navigation, and list markers, the places a real icon set would live, and fires at two or more, worth 10 points. sparkle-rocket just checks for four specific characters, โจ, ๐, ๐ง , and ๐ฅ, the house emoji of generated marketing copy, for 8 points.
None of the three care what the emoji mean. They only count how many, and where.
One honest caveat before the explanation
craigslist.org trips both emoji-density and emoji-headings on this site's own worked examples, and craigslist was not generated by anything. It's one of the oldest, most stubbornly hand-built pages on the internet, written by people who like exclamation points and never bought an icon library either. The detectors don't know that. They count emoji, not intent, which is exactly why the score is a weighted guess rather than a verdict, and why craft shown elsewhere on a page is allowed to pull the number back down.
Where the habit actually comes from
It isn't that models "like" emoji. The process used to align them was told to, without anyone writing that instruction down anywhere.
Reinforcement learning from human feedback works by training a reward model to predict which of two answers a human would prefer, then optimizing the language model against that prediction, because you can't put a person in the loop for every one of a billion training steps. A 2025 paper accepted at ACL, testing exactly this kind of reward model, and the human raters and GPT-4 judges standing in for them, found a real and measurable bias toward specific formatting: bullet lists, bold text, links, and emoji all score higher independent of whether the underlying answer is any better. A longer, more decorated answer looks more thorough to a rater skimming past dozens of them a day, whether or not it actually is.
A model trained against that reward signal learns the fastest lesson on offer: decorate more, get scored higher. Nobody wrote "add rockets and sparkles" into a spec. The training loop found it by itself, the same way it found bullet points and the em dash.
The one time everyone watched it happen live
In April 2025, OpenAI shipped a GPT-4o update meant to make the model's default personality warmer, and pulled it within days. Users found it uncomfortably flattering: agreeing with bad ideas, and answering plain questions with a stream of praise and emoji that had nothing to do with the content. OpenAI's own writeup named the update's reward signal as the cause. It had leaned too hard on short-term approval, the kind a thumbs-up gives in the moment, and the model reproduced exactly the surface cues that earn one fast: enthusiasm, affirmation, decoration. The company rolled it back and published what went wrong, which makes this one of the rare cases where a lab's own account lines up with what a detector like this one is measuring from the outside.
Why it's worth fixing even when nobody's scanning your page
The remedy has nothing to do with gaming a detector. Emoji render differently per operating system and per font, so the rocket you picked looks like a different rocket, or a blank box, on somebody else's screen. They can't be recolored, resized to match a stroke width, or swapped out for a hover state. And a screen reader doesn't skip them: it announces "sparkles" or "rocket" out loud, in the middle of a sentence that was never written to include that word.
A real icon carries meaning you chose. An emoji carries whatever the platform ships this month.
How to actually fix it
- Anywhere emoji are standing in as a bullet marker or section icon, swap in a small SVG icon set you can size, recolor, and label properly for screen readers.
- In headings and navigation specifically, remove the emoji outright. If a heading needs help being scanned, that's a hierarchy problem a real icon or clearer copy fixes; an emoji just repeats the same words in Unicode.
- If you're editing AI-drafted copy, treat every โจ, ๐, and checkmark bullet as a placeholder for a decision you haven't made yet, not a finished design choice.
- Reread the copy with the emoji deleted. If it says less than it did before, the sentence was doing the work, not the decoration, and nothing was lost.
Checking whether your own page does this takes one paste, not a manual audit.
Scan a page for this signal โ