Page Size and Web Performance: How Heavy Pages Are Hurting Your Website
The average webpage is now over 2 MB. Heavy pages load slowly, rank worse in Google and frustrate mobile users. Here's what's making your pages heavy — and how to fix it.
Average webpage size in 2025
According to the HTTP Archive, which tracks the state of the web by crawling millions of URLs, the median desktop page weighs approximately 2.3 MB in 2025. Mobile pages are slightly lighter at around 2.1 MB. These numbers have been growing steadily for years, driven primarily by larger JavaScript bundles and higher-resolution images.
For context: on a mobile connection of 10 Mbps (common 4G speed in many regions), downloading 2 MB takes about 1.6 seconds of pure transfer time — before accounting for parsing, rendering, DNS, and server response. On a 3G connection or in areas with poor signal, that number multiplies significantly.
Page size directly affects Core Web Vitals. LCP (Largest Contentful Paint) and overall load time are constrained by how much data needs to travel from server to browser. Smaller pages are faster pages, which are better-ranked pages.
The biggest culprits: what makes pages heavy
Images
Images are consistently the largest contributor to page weight — often 40–50% of total size. The most common problems: uploading original camera files (3–10 MB each) without resizing, using PNG format where JPEG or WebP would be significantly smaller, and failing to use responsive images (srcset) so mobile devices receive the same large file as desktop.
JavaScript
JavaScript has grown dramatically. Modern websites routinely load 500KB–1MB+ of JavaScript. This includes frameworks (React, Vue, Angular), third-party scripts (analytics, chat, CRM integrations), and unused library code. JavaScript is particularly expensive — the browser must not only download it but parse and execute it, which consumes CPU time and blocks rendering.
CSS
Unused CSS is a common problem, particularly with large CSS frameworks like Bootstrap or Tailwind used without tree-shaking. Loading the full Tailwind CSS file (300KB unminified) when only 5% of utility classes are used wastes significant bandwidth.
Web fonts
Fonts add 50–300KB per font family depending on the number of weights and character sets loaded. Loading 6 font weights where 2 would suffice is a common easy win.
How to measure page weight
The simplest way is Chrome DevTools → Network tab → reload the page → look at the total transferred size at the bottom. This shows you what's actually downloaded (after compression). The "Size" column shows compressed transfer size; the "Resources" column shows uncompressed size.
For a breakdown by resource type and identification of the largest individual files, WebPageTest.org provides a detailed waterfall chart and summary. GTmetrix also breaks down weight by category.
Practical steps to reduce page weight
- Convert images to WebP — WebP typically achieves 25–35% smaller file size than JPEG at equivalent visual quality. Most modern browsers support it. Use
<picture>with a JPEG fallback for older browsers. - Resize images to display size — don't serve a 3000×2000 pixel image if it's displayed at 800×533. Resize on upload or generate multiple sizes with responsive images.
- Lazy-load images below the fold —
loading="lazy"defers loading images until the user scrolls near them, reducing initial page weight significantly for long pages. - Enable server compression — Brotli or GZIP compression reduces text-based assets (HTML, CSS, JS) by 60–80%. Most servers support this with minimal configuration.
- Remove unused JavaScript and CSS — audit your bundle with tools like Webpack Bundle Analyzer. Remove plugins and libraries you no longer use.
- Subset web fonts — load only the character sets and weights you actually use. Google Fonts supports
text=parameter for subsetting. Consider using a variable font instead of multiple static weights.
Monitoring for page weight regressions
Page weight tends to creep upward over time — a new plugin here, a larger hero image there. Tracking page size as a metric (not just page speed score) lets you catch regressions immediately after deployments. A sudden 500KB increase after a content update is much easier to diagnose and fix than a gradual 2MB increase that accumulated over 18 months.
Track page size trends with Sitekeeper
Sitekeeper monitors page weight alongside speed, SEO health and uptime. Catch regressions before they affect your rankings. 30-day free trial, no credit card.
Start free trial →Frequently asked questions
What is a good page size for SEO?
There's no strict limit, but pages under 1 MB generally load faster and perform better. Under 500 KB is excellent. The more important metric is how page size translates to Core Web Vitals scores — particularly LCP. Focus on optimizing the heaviest assets (typically images and JavaScript) rather than hitting an arbitrary byte target.
Does page size affect mobile rankings specifically?
Yes. Google uses mobile-first indexing and mobile connections are generally slower than desktop connections. The same 2 MB page loads significantly slower on mobile. Core Web Vitals scores — which are influenced by page size — are measured on mobile conditions by default in Lighthouse.
What is the difference between page size and page weight?
The terms are often used interchangeably. Technically, "transfer size" is how much data is transmitted over the network (after compression), while "resource size" is the uncompressed size of all assets. Both matter: transfer size affects how long the page takes to download, resource size affects how long the browser takes to parse and execute it.
Is WebP format safe to use for all visitors?
Yes — as of 2024, WebP is supported by over 97% of browsers worldwide, including all modern versions of Chrome, Firefox, Safari, and Edge. The safest implementation uses the HTML <picture> element with a JPEG/PNG fallback for the remaining 3%.