On this page
What the website speed test measures
The website speed test runs from a server in Stockholm, inside the EU, so you see how your site answers a visitor in Europe rather than one next to a data centre in Virginia. For a company outside Europe with European customers, that is the number that counts: a site hosted far away can feel fast at the office and slow in Amsterdam, Munich or Milan.
The test measures the time to first byte, the moment your server starts answering. It weighs your HTML on the wire and unpacked, checks compression, counts what the page loads and weighs up to five of your own heaviest files. It checks whether your first image loads at once, whether your images have a fixed size, how many scripts come from other servers, which platform your site runs on and whether a CDN sits in front. On top it shows what that weight costs on slow 4G; below, what to fix first and roughly what it takes. How fast Belgian business sites load on average, per sector and platform, is in our page speed statistics for Belgium.
The sum behind the load time
The load time on top is a sum in three parts: the weight in bits divided by 1.6 megabits a second, plus 0.15 seconds per request, plus the server time. Those are Lighthouse's slow 4G values, roughly the slowest quarter of 4G connections. A worked example: a page with 40 kB of HTML, a 1.4 MB hero photo and a 230 kB script weighs 1,704 kB together. That is 8.7 seconds to fetch, plus three requests of 0.15 seconds, plus 0.3 seconds of server time: 9.5 seconds. Convert the photo to WebP at the size it is shown, say 250 kB, and the total drops to 3.4 seconds. Same page, same photo on screen.
The yardstick of the test, and who sets each limit:
| Part | Good | Needs a look | Slow | Limit set by |
|---|---|---|---|---|
| Time to first byte | up to 0.8 s | 0.8 to 1.8 s | above 1.8 s | Google (web.dev) |
| HTML over the wire | up to 100 kB | 100 to 300 kB | above 300 kB | our rule of thumb |
| Compression | on from 10 kB of HTML | off | our rule of thumb | |
| Heaviest image | up to 300 kB | up to 750 kB | above 750 kB | our rule of thumb |
| Heaviest script or stylesheet | up to 200 kB | up to 500 kB | above 500 kB | our rule of thumb |
| Files that hold up rendering | up to 2 | 3 to 5 | more than 5 | our rule of thumb |
| Scripts from other servers | up to 5 | 6 to 11 | 12 or more | our rule of thumb |
| First image | loads at once | lazy-loaded | Google (web.dev) |
What the test does not measure: how fast your page paints in a browser, how quickly it responds to a tap and whether anything jumps. Those are the Core Web Vitals, and Google measures them with real visitors. The test opens no browser and does not weigh files from other servers; it counts them without fetching them.
Weight, waiting time and the three thresholds
Weight becomes waiting
Just to fetch the bytes: weight in megabits divided by 1.6 Mbit/s.
Villa Lidia, homepage before 8.4 MB70.5 Mbit / 1.6 Mbit/s44 s
Median mobile page, 2025 2,164 kB17.7 Mbit / 1.6 Mbit/s11 s
Villa Lidia, homepage after 1.4 MB11.7 Mbit / 1.6 Mbit/s7.3 s
What Google measures with real visitors
At the 75th percentile of visits, per phone and desktop.
LCPthe largest element is in place
2.5 s4 s62% of mobile sites good
INPthe page responds to a tap
200 ms500 ms77% good
CLSnothing jumps
0.10.2581% good
All three good: 48% of mobile sites.
The test on this page measures the left part: server time and weight. The right part comes from Chrome with real visitors, over 28 days; you see it in PageSpeed Insights and Search Console.
Core Web Vitals: lab data and field data
Google judges speed with three Core Web Vitals, each at the 75th percentile of visits, separately for phones and desktops. Three out of four visits have to meet the limit.
| Metric | What it measures | Good | Needs improvement | Poor | Mobile sites good in 2025 |
|---|---|---|---|---|---|
| LCP | when the largest element is in place | up to 2.5 s | 2.5 to 4 s | above 4 s | 62% |
| INP | how fast the page responds to a tap or click | up to 200 ms | 200 to 500 ms | above 500 ms | 77% |
| CLS | how much moves while loading | up to 0.1 | 0.1 to 0.25 | above 0.25 | 81% |
| TTFB, not a Core Web Vital | when the server starts answering | up to 0.8 s | 0.8 to 1.8 s | above 1.8 s | 44% |
48 percent of mobile sites pass all three. Field data comes from Chrome users over 28 days: you see it on top in PageSpeed Insights and in the Core Web Vitals report in Search Console. With too few visitors on a page, PageSpeed Insights falls back to your whole domain, or shows nothing. Lab data is one Lighthouse run on a simulated mid-tier phone on a mobile network. Lighthouse cannot measure INP, because nobody taps; it shows Total Blocking Time instead. The 0 to 100 score is a lab score: 90 and up is good, under 50 poor. Google ranks on the field data, not on that score.
Does speed count in Google? Google writes that its ranking systems use the Core Web Vitals. Relevance comes first, though: the page that answers best can win while slower, and good scores guarantee no top spot. Speed mostly decides between pages that answer equally well, which is why this test belongs next to the SEO checker, not instead of it. A page that does not show at all is a different problem: run the findability check.
Where the weight sits
The median mobile page weighed 2,164 kB in 2025, over 72 requests, with 911 kB of images and 646 kB of JavaScript. One mobile page in ten weighs more than 8,337 kB. The causes come from the same five corners.
Images. On 76 percent of mobile pages an image is the largest element, the one LCP waits for. WebP is 25 to 34 percent lighter than JPEG at the same quality, and an image at the size it is shown often saves more than the format. Never lazy-load that first image: 16 to 17 percent of pages do, and the largest element then waits for a scroll that does not come. Give it fetchpriority=high; only 17 percent do.
Fonts. Every font from another server is one more connection before text can show. Host them yourself, load only the weights you use and set font-display to swap.
Third-party scripts. Chat widgets, trackers, video and map embeds, consent banners: each is code you do not control. The test counts them; from six on, check per script whether it still earns its place.
Hosting and distance. If the server answers slowly, nothing else helps. In 2025 only 44 percent of mobile sites had a good time to first byte. A page cache, or a CDN close to your visitors, usually solves it. A site that serves Europe from a single server on another continent pays that distance on every first request. Moving it is less risky than it sounds when the addresses stay the same: see moving a website to a new host.
The platform. A page builder with dozens of plugins puts code on every page, also where it does nothing. Why that happens so often on WordPress is in why WordPress is so slow.
WordPress or a static export
Where each one's speed comes from, and where it gets lost.
- At every visit
- WordPressPHP builds the page from the database, unless a cache has it ready
- Static exportThe page is already there as a file
- Server time
- WordPressDepends on hosting, cache and PHP version
- Static exportA CDN serves the file from a server close to the visitor
- What slows it
- WordPressPlugins, a page builder, heavy images and scripts
- Static exportHeavy images and scripts you add
- Maintenance
- WordPressUpdates to core, theme and plugins
- Static exportNo database and no plugins to update
- Editing text yourself
- WordPressIn the dashboard
- Static exportThrough the builder or a connected CMS
Pick WordPress if you publish often yourself and take a host with a page cache. Pick a static export when speed across Europe and little maintenance weigh more than clicking everything yourself.
What to do per finding, and what it takes
The test lists findings in the order they cost your visitor most, and says roughly what the first one takes. The times below are our estimate for an ordinary business site, not a quote.
| Finding | What you do | Roughly what it takes |
|---|---|---|
| Slow server | Turn on a page cache, or move to hosting with a CDN closer to your visitors | Often a day's work, plus any difference in hosting |
| Heavy image | Resize to the displayed size, convert to WebP or AVIF | A few minutes per image, half a day to a day per site |
| No compression | Turn on gzip or Brotli at your host or CDN | Usually under an hour |
| First image lazy-loaded | Remove loading=lazy, set fetchpriority=high | Under an hour |
| Scripts that hold up rendering | Add defer or async, or load them later | An hour to half a day |
| Many third-party scripts | Decide per script whether it stays | About an hour per script |
| Images without a size | width and height in the theme or the images | A few hours |
| Heavy HTML | Move inline code out, a lighter theme or another builder | From a few hours to a new theme |
Three buyers, three routes. A small firm on shared WordPress hosting: the server usually tops the list; a page cache first, the images second, an afternoon in total. A store on Shopify or WooCommerce: the server is fine or not yours to change; the gain sits in product photos and in apps that each add a script, so test a product page, not only the homepage. Building or rebuilding a store is webshop development. A company of ten selling into several EU countries: test what your customers in the Netherlands or Germany get, on each language version; every extra language is a set of pages that has to be light too, which is what multilingual website development is about. A static export on a CDN takes the server time almost out of the equation, wherever they sit; that is how we work as a web development agency in Europe, with Next.js, which you can also hire us for inside your own team.
Page speed: what buyers ask us
What is a good page load time?
Google says: the largest element within 2.5 seconds, a response to a tap within 200 milliseconds and a layout shift of at most 0.1, for three out of four visits. The server should start answering within 0.8 seconds.
Why does this differ from PageSpeed Insights?
PageSpeed Insights loads your page in a browser and shows real-visitor figures above that. This test measures server and weight without a browser, from Europe. Here you see which file is the problem, there how the visitor feels it.
Our site is fast in the US. Why is it slow in Europe?
Every first request travels to your server and back. A server on another continent adds that distance to every visit, before a single byte arrives. A CDN with servers in Europe, or hosting in the EU, takes most of it away. The test shows it in the time to first byte.
Does website speed count in Google?
Yes, Google uses the Core Web Vitals in its ranking systems. But the most relevant page wins, even when slower. Speed mostly decides between pages that answer the question equally well.
Why measure from Stockholm?
Our function runs in an AWS data centre in Stockholm, inside the EU. A visitor in Western Europe sits a little closer to a server in Frankfurt or Paris, so their time to first byte can be slightly lower than what the test shows.
Is my address stored?
No. We only count how many tests run per day, not which sites. Files on other servers are never fetched, only counted.