Methodology

How We Measure

We use Cloudflare's Browser Rendering API to load each site in a real Chromium browser. For each page load, we capture every network request via the Chrome DevTools Protocol (CDP), recording the URL, transfer size (compressed), resource type, and response status.

What We Capture

  • Total page weight (transfer size, not decoded size)
  • Number of HTTP requests
  • Resource breakdown (JS, CSS, images, fonts, media)
  • First-party vs third-party resource split
  • Third-party domain classification (ads, analytics, social, CDN)
  • Above-the-fold screenshot (1280x800 viewport)

Test Conditions

  • Desktop viewport: 1280x800
  • No authentication (logged-out view)
  • Datacenter IP (Cloudflare network)
  • Wait strategy: network idle (no requests for 500ms)
  • 60-second timeout per site
  • No ad blockers or content blockers

Third-Party Classification

We classify third-party domains using a built-in list of known tracker domains, covering major advertising networks, analytics providers, social widgets, and CDNs. Domains not in our list are categorized as "unknown."

Limitations

  • Datacenter IPs may receive different content than residential users
  • Some sites detect automated browsers and serve lighter pages
  • Cookie consent dialogs may block content loading
  • We measure the homepage only (not article pages or product pages)
  • Results may vary between crawl runs due to A/B testing and ad rotation

Crawl Frequency

Sites are crawled every 6 hours. Historical data shows trends over time.