In short
To measure page speed for real visitors, read the field data in PageSpeed Insights, which covers the past 28 days. To check whether a change worked, run Lighthouse under the same conditions and compare the median of five runs. A new website often has only lab data at first, and that doesn’t show what visitors actually experience.
Key takeaways
- PageSpeed Insights shows field data from real Chrome visits over 28 days at the top and a Lighthouse lab test below. The two can disagree.
- By default, Lighthouse calculates from an unthrottled load. On datafalke.de, it once reported an LCP of 1.36 s while the page took 5.39 s.
- The Lighthouse team says the median score of five runs is twice as stable as one run. Our LCP varied by up to 366 ms with no change.
- Local and live runs aren’t comparable: for one page, Lighthouse gave 1,801 ms locally and 1,530 ms live, though the local server was faster.
- Field data is missing for new or little-visited sites. Google doesn’t state a minimum and doesn’t accept requests for inclusion.
What do Lighthouse, PageSpeed Insights and CrUX measure?
Lighthouse tests a page in the lab with a fixed device and network. The Chrome UX Report (CrUX) collects measurements from real Chrome visits. PageSpeed Insights shows both on one page: CrUX field data at the top and a Lighthouse lab test below it.
The field data in PageSpeed Insights covers the previous 28 days (PageSpeed Insights documentation (external site)). The lab test is a snapshot. None of these tools gives you one single load time, because each measures several metrics. The metric closest to what people mean by load time is Largest Contentful Paint (LCP), which measures loading performance (web.dev on Web Vitals (external site)). The table shows which question each tool answers. For the thresholds and how to improve your scores, see our article on Core Web Vitals. Our guide to technical SEO covers the rest of a website’s technical foundation.
| Tool | Data | Answers | Limitation |
|---|---|---|---|
| Lighthouse | lab test on your computer, in Chrome DevTools or in a test pipeline | Did a change make the page faster in the test? | doesn’t show what visitors experience; no Interaction to Next Paint (INP) in a standard page-load test |
| PageSpeed Insights | CrUX field data and a lab test on a Google server | How fast does this URL or the whole website load for real Chrome visits? | no field data without enough visits |
| Chrome UX Report (CrUX) | measurements from real Chrome visits over the previous 28 days | How are the values for real visits changing? | doesn’t name causes; no data from Chrome on iOS |
Done when you’ve picked the right tool for your question: field data for real visits, Lighthouse for the effect of a change.
How do you read a PageSpeed Insights report?
Start with the field data at the top and first check whether it applies to this one URL or to the whole website. Next come the Core Web Vitals assessment and the distribution in the bars. The lab test below is there to help you find causes.
Open PageSpeed Insights (external site), enter a URL and go through the report in this order:
- Choose a device. Mobile and desktop results are separate. Start with the device type your customers use most, and if in doubt, with mobile.
- Check the scope. If a URL has too little data, PageSpeed Insights shows the values for the whole website. The result then says little about your slowest page.
- Read the assessment. A page passes if all three metrics are good at the 75th percentile. If INP data is missing, good values for LCP and Cumulative Layout Shift (CLS) are enough. If LCP or CLS data is missing, there’s no assessment.
- Read the distribution. The value above the bars is the 75th percentile. If it says 2.4 s for LCP, three out of four page views came in at 2.4 s or less, and the last quarter took longer.
- Note the time period. Field data covers 28 days and is updated daily, so an improvement you make today only shows up gradually. The CrUX API always lists the period as 28 days, even if a page has been online for less time (CrUX API documentation (external site)).
- Put the lab test in context. Only now look at the score. A score of 90 or above counts as good. For mobile, Lighthouse in PageSpeed Insights emulates a mid-tier phone on a mobile network and runs on a Google server in North America, Europe or Asia. The report’s environment details name the location.
Common mistake: People read the score first, even though the measurements from real visits are right above it.
Done when you can tie every value to a device type, a scope and a time period. The details of the report and the test setup come from the PageSpeed Insights documentation (external site).
Why do Lighthouse and PageSpeed Insights show different results?
Lighthouse on your computer and the lab test in PageSpeed Insights use the same tool, but they run on different machines, in different places and possibly in different versions. That’s why times and scores differ. Only compare numbers from the same environment.
By default, Lighthouse on your computer uses the same simulated throttling as the lab test in PageSpeed Insights (Lighthouse docs on throttling (external site)). Differences come mainly from hardware, load on the machine and the network. Malware, browser extensions and antivirus software have a particularly strong effect on the measurement (Lighthouse docs on variability (external site)).
To keep numbers comparable, record three things:
- Tool and version: Lighthouse in the browser, in a test pipeline or in PageSpeed Insights, each with its version number.
- Environment: the same computer or testing service, a browser profile without extensions and no other load on the machine.
- Page and state: the same URL with the same content, with no A/B tests running and no rotating ads.
Common mistake: A value from PageSpeed Insights gets compared with a run on your own computer.
Done when every number comes with a note of the tool, version, environment and state of the page.
How do you get stable results from Lighthouse?
Measure each page five times and compare the median, the middle of the five values. The Lighthouse team says the median score of five runs is twice as stable as a single run. Keep the device, network, version and state of the page the same, and never run two measurements at once.
Lighthouse results vary even when nothing on the page has changed. Running several Lighthouse instances at the same time distorts the results further (Lighthouse docs on variability (external site)). The median works better than the average here because a single outlier barely moves it.
If you don’t write code, run Lighthouse in Chrome DevTools five times in a row and note the values. With Lighthouse CI, one command does the measuring:
npx -p @lhci/cli lhci collect --url https://example.com/ -n 5Here’s how to go about it:
- Choose the URLs you’ll always measure, such as your home page, your most important service page and your contact page.
- Before a change, measure each URL five times and note the median for each metric.
- After the change, measure five times again in the same environment.
- Only evaluate the difference once it’s larger than the spread of the five runs.
Assess the difference in milliseconds for each metric. The score alone hides what changed.
Common mistake: You measure once before and once after a change and credit the change with the whole difference.
Done when you know the median before and after the change for each page, and the difference is larger than the spread of the five runs.
What doesn’t a good lab result show?
A good lab result shows how a page loads under the test’s conditions. It doesn’t show how fast the page loads for your visitors or how it responds to clicks. In its default setting, Lighthouse also calculates its times from a model and can miss a single slow server response.
- Response to input. INP is harder to measure in the lab than with real visits. There, Lighthouse uses Total Blocking Time (TBT) as a stand-in (web.dev on TBT (external site)).
- Device and location. A lab test runs on one device, on one network and from one location (web.dev on lab and field data (external site)). Your visitors use many devices and networks.
- Cache. Lab tests usually start with an empty browser cache. Returning visitors often have files stored already.
- Server response. By default, Lighthouse loads the page without throttling and calculates from that how it would have loaded on a slow connection. The documentation gives 150 ms of latency and 1.6 Mbps of throughput and points out inaccuracies in edge cases.
For server time, the model takes the median of the observed response times of all requests to the same server. That’s true both of the version we use (Lighthouse 12.6.1 source code (external site)) and of the latest one (Lighthouse 13.6.0 source code (external site)). A single very slow response can disappear in that median. Our measurements on datafalke.de show how much that can matter.
Our article on Core Web Vitals explains the basic difference between lab and field data in its section What’s the difference between lab data and field data?
Done when you treat a good lab value as an indication and use field data for real visits.
What can you do when field data is missing?
Check that your pages are public and indexable, keep measuring in the lab and add your own measurement of real visits if you need it. Field data is missing when the Chrome UX Report has too few visits for a URL or website. Google doesn’t disclose the minimum, and you can’t apply for inclusion.
If there’s too little data for a URL, PageSpeed Insights shows the values for the whole website. If that isn’t enough either, it shows no field data (PageSpeed Insights documentation (external site)). In Search Console, this state is called “No data available”: either the property is new or there’s not enough data in the Chrome UX Report (Search Console Help on the Core Web Vitals report (external site)).
Missing field data isn’t a bad rating. Google doesn’t describe in its documentation how it treats such pages in rankings.
Here’s how to go about it:
- Check the conditions. To be included in the Chrome UX Report, a page must be publicly discoverable, return status 200 and not carry a noindex directive (CrUX methodology (external site)). If your website is missing from Google, see our how-to Why isn’t my website showing up on Google?
- Keep measuring in the lab. With every change, take the median of five runs for your most important pages.
- Measure it yourself if needed. Google’s web-vitals (external site) library records Web Vitals in your visitors’ browsers. You need a script on the page and somewhere for the values to go. Check with your data protection advisor first whether and how you may use it.
- Wait. Google doesn’t give a date. Once your website reaches the minimum number of visits, the Chrome UX Report includes it automatically.
Common mistake: A lab value appears in a report to management as if it were the load time of real visits.
Done when your pages meet the conditions and you have a dated lab value for your most important pages.
Which wrong conclusions should you avoid?
Measurements mislead mainly when you treat numbers from different environments as equal or take a single run as the result. A score also says little about real visits. Missing field data only means Google hasn’t evaluated enough visits yet.
The numbers in the “Sources” column refer to the source list at the end of this article.
| Wrong conclusion | What’s true | Sources |
|---|---|---|
| “A score of 100 means the website is fast.” | The score rates a lab test. A score of 90 or above counts as good. It doesn’t reflect real visits. | 1 |
| “The score dropped, so the page got worse.” | Values vary even when nothing on the page has changed. Compare the median of five runs. | 5 |
| “The field data isn’t moving, so the change did nothing.” | Field data covers 28 days. New values replace old ones only gradually. | 1, 3 |
| “It’s fast locally, so it’s fast live.” | Server and network differ. Measure the live website. | 5 |
| “No field data means a bad rating.” | The website has too few visits. That isn’t a rating. | 1, 9 |
| “The value applies to this exact page.” | With too little data for a URL, PageSpeed Insights shows the whole website. | 1 |
| “The field data shows all my visitors.” | It comes only from Chrome, and Chrome on iOS is missing. | 9 |
Google doesn’t say that a higher score leads to better rankings. You’ll find more on that in our article on Core Web Vitals. Our website migration checklist shows when to measure again after a redesign.
Done when you check before every comparison that both numbers come from the same environment.
From our work: what our measurements show and what they don’t
On November 8, 2026, we measured datafalke.de with Lighthouse against the live site: all 98 URLs once each, and 10 fixed measurement pages five times each. All URLs stayed within the limits of our test pipeline, based on the median of five runs for the 10 measurement pages. In the single runs, the performance score per URL was 98 to 100, LCP was 1.06 to 1.68 s and CLS was no higher than 0.040. These are lab values. We don’t have field data for the website yet.
Measured · Lighthouse 12.6.1 in Chrome 156, mobile, simulated throttling, work computer against the live site, 10 pages with five runs each
During the night of November 8–9, 2026, the same check ran as part of our test pipeline on the work computer, against a version of the site a few hours newer. The last column shows those values. Eight of the 10 pages are German-language pages; the two under /en/ are in English.
| Page | Performance, live | LCP live, median | Range, live | LCP local, median |
|---|---|---|---|---|
| / | 100 | 1,502 | 1,355–1,506 | 1,501 |
| /en/ | 100 | 1,505 | 1,358–1,530 | 1,501 |
| /kontakt/ | 100 | 1,502 | 1,206–1,513 | 1,501 |
| /leistungen/ | 100 | 1,207 | 1,205–1,357 | 1,501 |
| /leistungen/geo-optimierung/ | 100 | 1,508 | 1,433–1,654 | 1,651 |
| /leistungen/softwareentwicklung/ | 100 | 1,429 | 1,380–1,455 | 1,501 |
| /leistungen/website-erstellen-lassen/ | 99 | 1,654 | 1,356–1,680 | 1,651 |
| /methode/ | 99 | 1,656 | 1,293–1,659 | 1,651 |
| /wissen/generative-engine-optimization/ | 100 | 1,530 | 1,358–1,586 | 1,801 |
| /en/insights/generative-engine-optimization/ | 100 | 1,576 | 1,575–1,604 | 1,801 |
Measured · Lighthouse 12.6.1 in Chrome 156, mobile, simulated throttling, local server, 10 pages with five runs each
Variation with no changes. On eight of the 10 pages, more than 100 ms separated the fastest and slowest runs. On /methode/, it was 366 ms. We hadn’t changed anything in that time. The contact page came in at 1,282 ms in one single run and at a median of 1,502 ms.
A run that misleads. In the third run on the German version of our guide to generative engine optimization (GEO), on November 8, 2026, at around 5:15 p.m. German time, the server took 5,161 ms for its first response (Time to First Byte, TTFB), and the page only appeared in the browser after 5,391 ms. The report gave an LCP of 1,358 ms for that same run. The score fell to 92 because the Speed Index rose to 8,041 ms. We haven’t established what caused the slow response; the computer was idle. The median of all five runs stayed at 1,530 ms and 100 points. So LCP alone wouldn’t have revealed the slow response.
| Run | LCP in the report | LCP observed, no throttling | Server response (TTFB) | Performance |
|---|---|---|---|---|
| 1 | 1,586 | 233 | 34 | 100 |
| 2 | 1,579 | 242 | 27 | 100 |
| 3 | 1,358 | 5,391 | 5,161 | 92 |
| 4 | 1,431 | 258 | 30 | 100 |
| 5 | 1,530 | 379 | 18 | 100 |
Local vs. live. The local server responded in 4 ms or less, and the live site mostly in 16 to 52 ms. Even so, Lighthouse reported 1,801 ms locally and 1,530 ms live for the GEO guide. The two runs also differ in protocol (HTTP/1.1 locally, HTTP/2 live), in compression (Brotli locally, gzip live) and in the state of the pages. We haven’t tested which of these differences moves the value. That’s why we only compare runs from the same environment.
Steps in the model. Of the 50 local runs, 47 landed at about 1,501, 1,651 or 1,801 ms. The steps are exactly 150 ms apart, which is the size of the simulated latency. Our reading is that the model calculates in these steps. So don’t read too much into single differences of 150 ms or less.
Version. Our test pipeline uses Lighthouse CI 0.15.1 with Lighthouse 12.6.1 from June 2025. Lighthouse 13.0.0 (external site) came out on October 10, 2025. Lighthouse CI only moved to the new major version with Lighthouse CI 0.16.0 (external site) on November 2, 2026, and has shipped with Lighthouse 13.6.0 (external site) since then. So a test pipeline can lag more than a year behind the latest major version. If you keep measurement series over a longer period, record the version in every note.
What the measurements don’t show. They contain no INP and no field data. Our website has been online since November 7, 2026. Whether and when the Chrome UX Report includes it depends on a number of visits that Google doesn’t disclose. Until then, our numbers say nothing about how fast the pages load for real visits. We’ll publish field data in our measurement log as soon as the Chrome UX Report shows values for datafalke.de.
To check for yourself, run Lighthouse in Chrome DevTools five times on one of the 10 measurement pages, or enter its URL in PageSpeed Insights (external site). Your times will differ because your computer, network and version are different.