Methodology

This page documents exactly how the numbers on this hub are produced. It covers the hub itself; each network site publishes its own methodology page for its own data.

Network stats (home page, mission page)

"Sites live" counts manifests with status of live or beta. "Datasets" counts live sites with kind of data. "Records" sums each live site's records field. "Countries" takes the maximum countries value across live sites, not a sum, since coverage overlaps between sites. "Page views, last 30 days" sums totalPageViews from the last 30 rows of the network analytics export.

Growth chart

The default series charted is Cloudflare Web Analytics visits where a site has a webAnalyticsToken configured, falling back to Cloudflare zone page views where it does not. Zone-level figures are pulled from the Cloudflare GraphQL Analytics API and include all traffic Cloudflare's edge sees, including bots, health checks, and scrapers. Web Analytics figures come from a JavaScript beacon and approximate human readers more closely, since most bots do not execute it. pipeline/export_analytics.py runs daily after 03:00 Pacific and pulls the prior day's complete data; a failed run leaves the previous export in place rather than publishing a gap.

Freshness ("last run") on site pages

Each site's own site.json manifest publishes its own lastRun field, set by that site's own pipeline. This hub displays that value as published; it does not independently verify it. pipeline/fetch_manifests.py refetches every site's manifest daily and keeps the last successfully validated copy if a fetch or validation fails.

What we do not compute

This hub does not run its own analytics on network sites beyond what each site's Cloudflare zone reports, and does not deduplicate readers across sites. A person reading three sites in the network counts as a visit on each.