How the crawler measures it

A cron reads the top 30 stories from the Hacker News API every 15 minutes and logs where each one sat. Crawling once a day would measure "the front page at 06:00 UTC" instead of the front page: it over-counts stories that sit for hours, and never sees the ones that arrive and fall off in between.

The same host often carries several stories, but its serving setup doesn't change hourly, so the crawler probes once per host per day. That avoids duplicate requests and leaves a daily record for spotting provider changes.

For each probe, the crawler compares three kinds of evidence instead of trusting the first match.

  1. Response headers. Vendor request-ids like cf-ray, x-vercel-id or x-nf-request-id carry heavy weight. server carries less, because any reverse proxy can rewrite it.
  2. DNS over HTTPS. A CNAME into a platform's ingress domain is close to a confession. Nameservers go into the record as a fact but score nothing: running DNS on Cloudflare says nothing about who serves the site, and four Route 53 nameservers would otherwise out-vote every real signal on record count alone.
  3. ASN. The resolved address maps to its origin AS, over IPv4 or IPv6. This is the only signal that survives a provider stripping its own headers.

What "serves the response" means

Exactly one party terminates each connection, and that's what this site counts. You can observe it for everything that answers, which is why this number has no unknowns, unlike almost everything else you might want to ask.

That party is one of three things, and the difference matters:

  • A CDN: something you put in front of hosting you already have. Seeing one tells you nothing about where the site lives.
  • A platform: a deployment target. You can't put Vercel in front of somebody else's server, so seeing Vercel means the site is on Vercel.
  • Nothing at all: no CDN, no platform, just the site's own server answering.

An edge a company built for itself still counts as an edge. GitHub answers github.com from GitHub's own network, and Google answers youtube.com from Google's. That you can't buy it makes it no less a CDN, and filing those under "nothing at all" would describe the purchase order rather than what serves the bytes. Only a site doing its own serving, on a machine it rents, lands in the last group.

Every row carries a label for which one it is, because a single vendor can be more than one. Cloudflare is both the web's dominant CDN and a developer platform; Vercel is a platform that serves its own edge. Summing them into one unlabelled list would let a proxy statistic read as a hosting one, which is the mistake this site exists to avoid.

Two ways to count

"Which one wins" has two honest answers, and they disagree. Counting each story once asks what do HN authors put in front of their sites? Weighting each story by how long it sat on the front page asks what did a reader actually load? A single story parked at #1 for twenty hours barely moves the first number and dominates the second. This site shows both rather than picking one for you.

Why you won't see a hosting leaderboard

Each probe also tries to identify the host behind the serving layer, and the result goes into the database. Cacher News doesn't publish a leaderboard because missing evidence would look like market share.

A reverse proxy exists to hide the origin, and it often succeeds. Headers disappear, DNS ends at the proxy, and the resolved address belongs to the edge network; naming the backend after that would be a guess.

There is a second problem, and it applies to any vendor that is both a proxy and a place to deploy. Its own proxy hides exactly the sites that would count toward its own platform share, so its own product undercounts it. Cloudflare is the clearest case today because it's the largest of both, but nothing about the effect is specific to it.

That data can produce lower bounds, not shares, so Cacher News leaves the hosting leaderboard unpublished. The crawler still stores every observation, which lets a future rule replay old probes instead of measuring today's sites.

Caveats

The crawler probes each host once a day from one Cloudflare colo. A geo-routed or multi-CDN site may answer differently elsewhere. Detection rules will miss sometimes; expand any hostname to see the signals behind that day's verdict, then open the raw probe for the unedited record.