How it works

What every number, badge and emoji on the site means, and how it's made. Everything here is computed on one home computer, every hour, from the front pages of the outlets we follow.

Where the news comes from

πŸ—žοΈOutlets and front pages

We follow 135 outlets and read what's on their front pages every hour. 87 are read straight from their homepage, 41 from their own RSS feeds, 2 through Google News (outlets that block readers like ours), and 5 with a real browser (pages built by JavaScript).

A headline is live while it's still on a front page. When it drops off, we keep it, which is how the site can say an outlet dropped a story (πŸ‘») or rewrote a headline.

🧹News, not everything

Front pages carry shopping guides, horoscopes and recipes too. A language model labels every new headline as news, not news, or page junk; only news counts toward stories, the cloud and the measures below. Very short or very long "headlines" and text repeated across a page are dropped as navigation.

How headlines are read

πŸ€–The language model

A small open model, qwen3:8b, runs on our own computer (not a cloud service). It reads each new headline once and answers in a fixed format: whether it's news, how good or bad the event is, how loaded the wording is, and the feelings it's most likely to stir. Before scoring, it writes a short note on who's affected, which keeps its answers grounded. It makes mistakes, so treat any one score as a rough read; the averages over many headlines are what the site shows.

🌦️Mood

How good or bad the event in a headline is for the people it's about, from grim to upbeat (β›ˆοΈ 🌧️ 🍞 🌀️ β˜€οΈ; "+" means more so). It's about what happened, not the wording. A story's mood is the average of its headlines.

🌢️Spin

How much a headline's own wording adds emotion, judgment or alarm beyond the facts: 🍞 plain, 🌢️ loaded (a charged word or two, like "slams" or "chaos"), 🌢️🌢️ loaded+ (built to provoke). Words quoted from someone don't count.

😨Feelings

The feelings a headline is most likely to stir in a reader, ranked, up to three, from: 😨 fear, 😠 anger, 😒 sadness, 🀒 disgust, 😲 surprise, πŸ˜„ joy, 🀞 hope, πŸ₯› neutral. Like ranked-choice voting, each headline's vote is split 3:2:1 across its picks, and a story's or word's feelings are the average of those votes. A story card shows every feeling with 20% or more of the votes; πŸ₯› neutral is plain information.

Stories and sagas

πŸ“°Stories

Headlines about the same event, from different outlets. Each headline is turned into a meaning fingerprint (a small sentence-embedding model), and headlines whose fingerprints are close enough join up; a story needs at least six outlets. Stories look back 24 hours, so an outlet that dropped one still shows on its card, faded with a πŸ‘». The language model writes each story's title.

Covered by on a card (🫏 to 🐘) is the average lean of the outlets covering it, compared with all the outlets we follow, which lean left as a group.

🧡Sagas

One running story told in several parts: the Cornell case's prosecutor, the allegations, the governor stepping in. Two stories join a saga when their centers are close (similarity 0.58+) and they share a distinctive word, one in at least 30% of both stories' headlines but no more than 4% of the day's. Headlines that made no story but clearly belong count toward a saga's outlets. Sagas count once in trending and the news-day sticker.

🚨News day

How big a news day it is: the share of outlets carrying the top story on their front page right now, weighed by the story's age (full weight for 12 hours, then halving every 24). 45%+ is a big news day, 25%+ just another news day, less a slow one.

πŸš€Speed of break

How many outlets had a story within 75 minutes of our first sighting (two hourly reads). 8+ earns the rocket.

πŸ™ˆBlindspots

Stories almost only one side is covering: at least 6 rated outlets, 70%+ of them from one side, and that side's share at least 1.5Γ— its share of all our rated outlets.

β˜€οΈThe bright side

Good news, for a breather: stories and headlines whose strongest feeling is hope or joy, and that the language model agrees most readers across the spectrum would be glad about (so not a company's deal or a party's win).

The word cloud

☁️Size and color

The 95 words and phrases the most outlets are using right now; each outlet counts once per word, so a busy outlet can't inflate one. Bigger means more outlets.

Color is who uses a word more readily: blue for left-leaning outlets, red for right, a blue-to-red blend for both, gray when it's mostly center outlets. Each outlet's use is weighted by how many distinct words it publishes, so high-volume outlets don't tilt everything their way.

😰Emoji bookends

A word framed by emoji (😰death😱) has a strong feeling in its headlines: at least 25% of the votes, among words 5+ outlets use; the 25 strongest get them.

πŸ“Sorting

Words are packed at tilts (bigger ones closer to level) and drift along the arrow behind them: biggest first by default, or left to right, or plain to spicy. Click a word to see how outlets are using it.

Other measures

πŸ“’Buzz

In the headline table: how much a headline uses the words and phrases everyone else is using today, as a percentile of the day's headlines (πŸ“’ top 5%, πŸ”Š top 20%, πŸ”‰ top half, πŸ”ˆ low, 🀫 quiet).

😈Framing

On the outlets page: on stories other outlets also covered, whether an outlet's headlines make the same event look worse (😈 gloomier) or better (πŸ˜‡ sunnier) than everyone else's. Comparing within a story separates how an outlet frames the news from which news happens to be bad.

✏️Headline changes

Headlines an outlet changed on an article it had already published, over 7 days. A change counts only if the old headline left before the new one appeared; live blogs, reused links and minor changes (capitalization, punctuation, a label like "WATCH:") are skipped.

Outlet ratings

βš–οΈLean: AllSides

Each outlet's lean is AllSides' Media Bias Rating (CC BY-NC 4.0), on their five levels: Left, Lean Left, Center, Lean Right, Right. Outlets AllSides doesn't rate are shown dashed and "not rated", and are left out of every lean average.

✏️Our estimate (est.)

For outlets AllSides doesn't rate, we estimate lean from the wording of their headlines over 30 days, with a model trained on the rated outlets. It publishes only when the model checks out (tested by hiding each rated outlet in turn, its rank agreement must be 0.45+) and it's confident about the outlet. Right now it calls a side for 11 of the 92 rated outlets in that test, and gets 91% of those right; 2 outlets carry an estimate. Estimates are dashed "est." chips, and they stay out of lean averages.

πŸ“šReliability: Wikipedia

Whether Wikipedia's editors treat an outlet as a reliable source (generally reliable, no consensus, generally unreliable, deprecated), from their perennial sources list (CC BY-SA 4.0). It's a judgment about citing a source, not a fact-check score.

Limits

πŸ”What to keep in mind

  • Front pages, not readership. We measure what outlets put up front, not what people read or share.
  • Our outlet mix leans left as a group; lean measures compare against that mix, and blindspots account for it.
  • The language model makes mistakes. Single scores are rough; averages over many headlines are steadier.
  • Young data. Our database starts on October 2, 2026, so stories that were already running then look newer than they are, and 30-day measures are still filling in.
  • Mostly US. Stories, sagas and lean use US outlets plus a few British ones; we follow foreign outlets for the cloud and the outlets page.

The code is open: github.com/mas-4/maudlin2.