Heavy Resource Weigher
One URL → the list of page resources sorted by weight, with alerts on files ≥ 2 MB that Google struggles to crawl.
URL to weigh
Up to 40 resources scanned in parallel (HEAD, fallback GET Range).
Also worth exploring
All toolsTest your robots.txt against 18 user-agents: Googlebot, Bingbot, GPTBot, ClaudeBot, PerplexityBot, Applebot and other AI crawlers. Path × bot matrix.
Verify your hreflang tags: valid ISO codes, reciprocity between language versions, x-default, conformance with Google's recommendations.
Inspect HTTP response headers: x-robots-tag, cache-control, HSTS, link, vary, server. SEO + security annotations on impactful headers.
Validate your sitemap.xml: structure, URL count, lastmod outliers, sitemap-index recursion. Conforms to sitemaps.org and Google.
Frequently asked questions
Why 2 MB as a threshold? +
Google has documented that it does not analyze individual resources beyond 15 MB (explicit HTTP 416 from Googlebot). In practice, from 2 to 5 MB, crawl budget takes a hit and first-paint latency collapses. Most SEO leaders use 2 MB as a pre-alert threshold. Videos are an exception (they are rarely crawled anyway) but a 2 MB image on the home page is 99% of the time a poorly compressed PNG/JPEG.
What are the main causes? +
Unoptimized images first, PNG where WebP/AVIF would be 5-10× smaller, photos exported in high resolution for no reason. Monolithic JS bundles second, SPAs without code-splitting can send 5-10 MB of JS for nothing. Self-hosted fonts not subset third, a full .woff2 file weighs 200-500 KB, but subset (only used glyphs), 20-50 KB.
How to reduce? +
For images: WebP/AVIF conversion with a tool like Squoosh or a build pipeline (Astro/Next/Vite have automatic plugins). For JS: code-splitting per route plus strict tree-shaking plus dependency inspection with Bundlephobia. For fonts: subset (load only Latin Extended characters), woff2, plus font-display: swap. And always: Brotli compression server-side (10-30% free gain vs gzip).
Tool limitation? +
We scan up to 40 resources per page (Cloudflare Workers subrequest limit). We make HEAD requests in parallel to fetch Content-Length. Some CDNs refuse HEAD, in that case we do a GET with Range: bytes=0-0. Resources without Content-Length nor Content-Range show up as "unknown size".
Actually buying backlinks?
Our network catalog is browsable without signup. Publisher pricing shown, no commission, no middleman.