How to measure Core Web Vitals: tools compared

Which tool answers which question: PageSpeed Insights, Search Console, Lighthouse, Chrome DevTools and the web-vitals library, and when to trust each number.

BeginnerHow-to5 min readUpdated October 29, 2026

In this guide
  1. Two kinds of data
  2. Step 1: check whether a page passes
  3. Step 2: see which pages are affected
  4. Step 3: find the cause with a lab test
  5. Step 4: measure your own real visitors
  6. Other sources of the same data
  7. Which tool for which question
  8. A simple routine
  9. Check your own page
  10. Sources

Two kinds of data

Every speed tool gives you one of two kinds of number, and most of the confusion about Core Web Vitals comes from mixing them.

Field dataLab data
Comes fromReal visits by real peopleOne test load by a tool
ConditionsEvery device, network and habitFixed and simulated
Used toDecide pass or failFind the cause and test a fix
UpdatesRolling 28 daysThe moment you run it
Can show INPYesOnly in a recorded interaction
ExamplesChrome UX Report, Search Console, PageSpeed Insights top sectionLighthouse, PageSpeed Insights lower section, DevTools

Google judges the Core Web Vitals on field data. That is why a page can score 100 in a lab test and still fail: the test is a fast, patient visitor, and real visitors are not.

Step 1: check whether a page passes

Open PageSpeed Insights, enter the address and choose the Mobile tab first, because most sites are weaker there. The report has two parts.

Read the top part for the answer and the bottom part for ideas. The big number in the lab part, the performance score from 0 to 100, is not what Google uses to decide whether you pass.

Step 2: see which pages are affected

PageSpeed Insights looks at one address at a time. The Core Web Vitals report in Google Search Console covers the whole site: it groups your URLs by status for mobile and for desktop and lists the issues that keep URLs out of the good group, so you can see which kinds of page to look at first. It uses the same real-user data, and it only has data for pages with enough visits.

Step 3: find the cause with a lab test

Run Lighthouse (the Lighthouse guide covers each way), either in PageSpeed Insights, in the Lighthouse panel of Chrome DevTools, or from the command line. Know what the default test assumes, because it explains the numbers you get:

Lighthouse does not slow your real network: it loads the page and then calculates what would have happened on the slower one. That is why the lab results are repeatable and why they still differ a little from run to run. Run the test three times and use the median.

Once the lab test points at a failing metric, read the guide for it: LCP for slow loading, INP for slow reactions and CLS for a page that jumps. A standard lab test cannot measure INP at all, because nobody taps anything during the load. Lighthouse reports Total Blocking Time instead, which tends to move together with it.

For a question about something you can see happening, such as a button that reacts late, use Chrome DevTools. Its Performance panel records a load or an interaction and shows the main thread, the layout shifts and the interaction timings. The live metrics view shows LCP, CLS and INP as you click through the page.

Step 4: measure your own real visitors

The Chrome UX Report is a large sample, not all of your visitors (see the CrUX guide). It includes Chrome users on desktop and Android who share usage statistics, and it leaves out Chrome on iOS, other Chromium browsers such as Edge, and WebView apps. To see every browser, and to find out which element and which script caused a slow result, collect the numbers yourself with Google's open-source web-vitals library. It is small, and each of its callbacks runs once a metric is ready:

import {onLCP, onINP, onCLS} from 'web-vitals/attribution';

function send(metric) {
  navigator.sendBeacon('/vitals', JSON.stringify({
    name: metric.name,        // LCP, INP or CLS
    value: metric.value,
    rating: metric.rating,    // good, needs-improvement or poor
    id: metric.id,
  }));
}

onLCP(send);
onINP(send);
onCLS(send);

The attribution import adds the diagnostic details: for INP, the element that was touched and the three parts of the delay; for LCP, which element it was and the four parts; for CLS, which elements shifted. sendBeacon can send data while the page is being closed. Your server only needs a small endpoint that stores the lines, or you can send the data to an analytics tool you already use.

Other sources of the same data

The Chrome UX Report is also available in other forms. The CrUX API gives page-level and site-level data, updated daily from the previous 28 days. The CrUX Dashboard and BigQuery tables are updated monthly and show the history since 2017 at site level. They are useful for trends and for comparing against competitors' public sites, and less useful for a fix you made this week.

Which tool for which question

QuestionUse
Does this page pass?PageSpeed Insights, top section
Which pages on my site fail?Search Console, Core Web Vitals report
Why is this page slow?Lighthouse (PageSpeed Insights, lower section)
What exactly happens when I tap this button?Chrome DevTools, Performance panel
Did my fix work?Lab test now, field data after 4 weeks
What do all my real visitors experience?web-vitals library on your site

A simple routine

  1. Check the field data for mobile in PageSpeed Insights. Note which of the three metrics is not good.
  2. Run the lab test three times and read the insight that matches the failing metric.
  3. Fix the biggest cause. Change one thing at a time.
  4. Run the lab test again to confirm the cause is gone.
  5. Check the field data again after four weeks, because that is when the real visits catch up.

Check your own page

Run the free audit for the lab and field view of your page in one report. Then compare the real-user numbers with the lab numbers: if the lab looks good and the field does not, your visitors have slower devices or networks than the test, or they do things after the page loads that the test never does.

Sources

Start here

Free website audit

Live Google data for any public page: mobile and desktop.

Mobile + desktop · Lighthouse lab test · Real-user Chrome data when Google has it

Rather have this done for you? Core Web Vitals · Book a call

Related guides

All guides →