Skip to main content

Total Page Weight.

Performance Asset Optimization

Total bytes downloaded — lighter pages load faster on all networks

What does this check test?

This check measures the total number of bytes transferred to load the page, including HTML, CSS, JavaScript, images, fonts, media, and all other resources. Total page weight is the sum of all compressed transfer sizes. The median web page in 2024 is approximately 2.5MB on desktop and 2.2MB on mobile, but high-performing sites target under 1MB. Page weight directly determines load time on bandwidth-constrained connections — a 3MB page takes 24 seconds to load on a 1Mbps connection (typical slow 3G).

Why does it matter?

Page weight is the fundamental constraint on load performance for users on slow or metered connections. No amount of rendering optimization can overcome the physics of downloading large amounts of data over a limited connection. Users on mobile data plans pay for every byte — a 5MB page costs real money in many countries. Lighter pages also consume less device memory, less battery (fewer bytes to decompress and process), and are more resilient to network interruptions. Google and other performance-focused organizations recommend a total page weight budget as a first-line defense against performance regression.

Who is affected?

All websites benefit from monitoring page weight, but media-heavy sites (news, e-commerce, portfolios), sites targeting users in emerging markets with limited bandwidth, and mobile-first applications are most impacted. Sites that have grown organically over years tend to accumulate weight as new features, libraries, and assets are added without removing old ones.

Where does this apply?

Chrome DevTools Network panel shows the total transferred size at the bottom of the panel. Break down weight by resource type using the filter buttons (JS, CSS, Img, Font, Doc, Other). The largest resource type is usually images (50%+), followed by JavaScript (30%+). Look at both the compressed transfer size (what's downloaded) and the uncompressed resource size (what the browser processes).

How to fix it

Set a performance budget for total page weight — a common target is 500KB compressed for the critical path, 1.5MB total. Implement the budget in CI/CD using Lighthouse CI or `bundlesize`. Enforce a performance budget in Lighthouse CI:
json
{
  "ci": {
    "assert": {
      "assertions": {
        "total-byte-weight": ["error", { "maxNumericValue": 1572864 }],
        "resource-summary:script:size": ["warn", { "maxNumericValue": 524288 }]
      }
    }
  }
}
Serve a lite experience on slow connections:
js
if (navigator.connection?.saveData || navigator.connection?.effectiveType === '2g') {
  loadLiteVersion();
} else {
  loadFullVersion();
}
Attack the largest resource types first: optimize and convert images to WebP/AVIF, code-split and tree-shake JavaScript, purge unused CSS, and subset or remove custom fonts. Use `<link rel="preload">` for critical resources and `loading="lazy"` for below-the-fold images. Self-host third-party resources when possible to reduce connection overhead. Review and remove unused npm dependencies with `depcheck`.

References

AppVet checks Total Page Weight automatically

Run a free performance scan and get a full report with actionable fixes, including a Fix with AI prompt you can paste into any coding tool.

Run Audit