Skip to content

Core Web Vitals: what they are and how to measure them without fooling yourself

By Carlos Alberto Cardona B.· 8 min read

If PageSpeed gave you two different scores, both are right. Core Web Vitals are three Google metrics for user experience: LCP, how long the main content takes to appear; INP, how long the page takes to respond; and CLS, how much it shifts while loading.

One mobile lab run, from Sep 26, 2026. The real-user section is empty: the site is too new for Google to have gathered field data.That's why this screenshot counts as a baseline and not as a conclusion. The lab is for comparing one change against the previous one. What real visitors experience only the field can say, and until it exists, the honest thing is to say it doesn't.

The essentials

What it is
Three Google metrics for user experience. LCP is how long the main content takes to appear, INP how fast it responds, and CLS how much the page shifts while loading.
Why it matters to you
One PageSpeed run is a sample of one: a lot of the variance comes from the conditions of the test, not from your page. A number without its range is one you can't act on.
What to do today
Run your page through PageSpeed Insights five times and write down the median (the middle value) and the range (lowest to highest). Then find your real LCP element before you optimize anything.

Request your free diagnostic

Let me start with the obvious: an AI wrote this article from my instructions, back when I was starting to write prompts for this site. I specified, reviewed and verified it, and published it to evaluate it in production, though Google might have been better served if I had waited. I checked its figures with AI against the official sources on Oct 18, 2026.

Core Web Vitals are three field metrics that Google uses to describe real user experience. The current definition and thresholds live on web.dev, and they change. So it's worth reading the source rather than a blog post from two years ago.

Everything below is measured, on this site and on a site I audit. That includes a measurement of mine that turned out to be worthless, and why.

What are Core Web Vitals: LCP, INP and CLS

Core Web Vitals are three field metrics: LCP measures loading, INP responsiveness and CLS visual stability, each judged at the 75th percentile of real visits, on mobile and desktop separately. Each has a good threshold and a poor one:

MetricGoodNeeds workPoorWhat it measures
LCP≤ 2.5 s≤ 4.0 s> 4.0 sWhen the largest visible element finishes painting
INP≤ 200 ms≤ 500 ms> 500 msHow long the page takes to respond to an interaction
CLS≤ 0.1≤ 0.25> 0.25How much the layout moves while it loads

What's at stake isn't just Google: it's the people who buy. Vodafone compared two versions of a landing page in an A/B test. According to the case study on web.dev (Mar 17, 2021), a 31% better LCP brought 8% more sales.

That's one large company, not a promise for yours. But it shows what to look at in the end: sales and leads, not the score.

“Largest” in LCP means largest by visible area inside the viewport, which is rarely the element you would have guessed.

INP replaced FID on March 12, 2024. FID only measured the input delay of the first interaction; INP observes all of them. If a guide still talks about FID, it's out of date.

And CLS doesn't care whether the movement annoyed anyone: it scores the shift whether or not a person was looking. That detail matters later.

Lab or field: why is the score not the metric?

The 0 to 100 number PageSpeed shows comes from Lighthouse, in a lab, on a simulated device. The three metrics that Google actually uses come from the Chrome UX Report, which collects data from real Chrome users. PageSpeed Insights shows them over the trailing 28 days.

If your site is new or has little traffic, the field section says “no data” and keeps saying it until there is enough traffic. That isn't a failure: a lab number isn't a field number, and until the field data exists you say it doesn't exist.

Two details change how you read field data. If your page doesn't have enough visits, PageSpeed may show you the whole site's data instead of that page's. And Search Console rates each group of pages by its worst metric: one bad CLS sinks a good LCP.

If your site was built with an AI builder, it's most likely a single-page app. Then Chrome attributes to the first page everything that happens while the person moves around inside the site. Field data for an inner page isn't exact, and the public data can't separate it.

Why does a single PageSpeed run lie?

Lighthouse's own documentation is explicit that a lot of the variability in a score isn't due to Lighthouse but to changing conditions. A/B tests or changing ads, internet traffic routing, different devices, browser extensions and antivirus software all move it. One run is a sample of one.

PageSpeed mobile · 5 back-to-back runs · same site, nothing changed · logged Sep 14, 2026
result A   performance 80
result B   performance 64
→ Every run gave A or B. Never anything in between.

I measured it on a site I audit. If I'd stopped at the first runs, I'd have reported a drop that didn't exist.

I take five, keep the median and report the range next to it. A page with a median of 2.1 s and a range of 1.8 to 5.9 s has one problem. A page that sits at 2.1 s every time has another.

To show a change worked, I'd rather use a number that doesn't bounce around: how many kilobytes of JavaScript the page needs.

On that same site, the contact page's JavaScript dropped from 142 to 84 KB once what it didn't use was split out. I measured it in the build files on September 12, 2026. That number comes out the same every time it's measured; the score doesn't.

With the median and the range, I compared the home pages of my two sites with seven Colombian agencies and designers that sell websites. On mobile PageSpeed, cardonaseo.com scored 92 and regresoempresarial.com 95; the median of the seven was 62 (lab, median of three runs, Oct 17, 2026).

That was three runs per site, not the five of my rule, and a single night: it's good for comparing, not for promising a score. If you're getting a new website, ask for this measurement before you pay for delivery, whoever builds it. I publish mine on SEO website design.

On Oct 29, 2026, I measured two prototypes that score 99 for mobile performance the same way (PageSpeed Insights, median of three runs). They're prototypes for Bogotá businesses with no field data yet, so this is lab data.

From the browser · 8 min

Why your performance score changes by itself

Why it matters: If your page is slow to show, some of your visitors leave before reading it. PageSpeed Insights simulates the load, and that simulation changes from one run to the next: a single score misleads.

If someone quotes you a speed fix based on a single run, you're paying to fix a number that jumps around. Ask for five runs, the median and the range before you approve anything, and the same five runs afterwards to prove it worked. That's how I measure in the technical audit; the free diagnostic tells you first whether there's a serious error.

Which element is your LCP?

On a site I audit, in September 2026, the LCP element was the H1 heading, not the much larger hero image. Chrome leaves out elements that cover the full viewport, treating them as background, so optimizing the image wouldn't have moved LCP at all.

Optimizing the obvious candidate would have cost an afternoon and changed nothing. The fix isn't to guess: Chrome DevTools marks the LCP element on the Performance panel, and the PerformanceObserver API reports it in four lines.

$ the LCP element, from the browser console
new PerformanceObserver((list) => {
  const e = list.getEntries().at(-1);
  console.log(e.element, Math.round(e.startTime));
}).observe({ type: 'largest-contentful-paint', buffered: true });
→ paste it, reload, and read which element it actually was

Two measurements from this site, one of them useless

First measurement: LCP with and without an above-the-fold image, on localhost. The two numbers came out almost the same, and I nearly reported that the image didn't matter.

It was an instrument failure, not a finding. On localhost there's no latency, so the two arms couldn't differ.

Then I applied mobile throttling (1.6 Mbps, 150 ms round trip, CPU slowed four times). The same comparison gave 688 ms against 276 ms (lab, September 2026), and the conclusion reversed.

The second one: this site scored CLS 0.3246 on all 45 of its lazy-loaded routes. It was a lab run on September 27, 2026 (390 px, throttled mobile network). Only the home page, which isn't lazy-loaded, was clean.

The cause was a loading placeholder shorter than the screen, so the footer was visible and then moved down. One CSS line took it to 0.000.

What should you fix first?

Start with what has the biggest impact and costs the least to fix, after you have found the real LCP element. This is the order I use, one metric at a time. The last step is the one that's easiest to skip: measuring again under the same conditions.

  • LCP: find the real element first. If it's an image, give it explicit width and height, serve it in a modern format and let it load eagerly. If it's text, the problem is usually a web font blocking the paint.

  • CLS: reserve the space of anything that arrives late. Images without dimensions, ads, embeds, and loading placeholders shorter than the viewport, which is the one that caught me.

  • INP: it's almost always JavaScript holding the main thread. Break long tasks up and postpone whatever isn't needed for the first interaction.

  • And measure again, with the same instrument and the same conditions. A change you can't compare is a change you can't defend.

You can run all of this yourself at PageSpeed Insights, five times, and write down the median and the range. That's the whole method.

If your site depends on JavaScript to paint its content, that hits performance and what Google receives at the same time. I explain it in why a website doesn't show up on Google. If you haven't built it yet, it's cheaper to avoid this from the start: see how to build a website with AI.

In the technical SEO audit I measure it this way: five runs, the median and the range. And I identify the LCP element before I recommend anything.

How do you optimize Core Web Vitals with AI?

Use AI as an assistant, not a judge: measure with PageSpeed Insights and ask an agent to pull the diagnosis into a report. Then fix things with Claude Code on your repository, one change at a time, and measure again with the same instrument. Finally, ask Google to recrawl what changed.

It's the workflow I use on this site. The AI does the heavy lifting; I specify, review and verify.

  • 1 · Measure. Run each important URL through PageSpeed Insights five times and write down the median and the range. Lighthouse, in Chrome DevTools, runs the same kind of lab test.

  • 2 · Ask an agent for the diagnosis. The Claude in Chrome extension can run those tests for you and hand you a report as a .md file. The prompt I use is below this list.

  • 3 · Take the report to Claude Code. Connect your repository and ask it to check the report against the code and review the site's technical SEO in depth. Have it propose one change at a time and wait for your yes; if you don't know where to start, ask Claude inside your project.

  • 4 · Fix and verify. Measure again with the same instrument, five runs. Also check that the fix didn't remove anything Google used: the title, the canonical, the H1 and the text.

  • 5 · Request indexing for what changed. You do it URL by URL in Search Console's URL Inspection, and there's a quota; for many URLs, submit the sitemap. If you'd rather not, the extension can do it while you watch, as long as you're an owner or full user of the property.

Prompt for the Claude in Chrome extension: the Core Web Vitals diagnosis

Pinterest learned this in 2017, when it rebuilt its pages to load faster. According to its engineering team, the wait time it measures dropped 40% and SEO traffic rose 15%. But first it took weeks to bring SEO traffic level with the old pages, because of differences in tags like the h1 or the canonical.

What about Screaming Frog? It's great for reviewing a whole site at once, but it doesn't measure Core Web Vitals by itself. It pulls them in if you connect it to the PageSpeed Insights API, a feature of the paid version.

Three warnings before you start. PageSpeed and Lighthouse are lab tools, and what counts for Google is field data from real users. An AI doesn't replace reading the documentation it cites, and a speed fix on its own won't lift your rankings.

If you'd rather not do it yourself, the free diagnostic tells you whether there's a serious error. And if you're getting a new website, in SEO website design speed counts from the design stage. If one of your references clashes with it, speed wins.

Watch it explained, by the people who built it

Three short videos from Google's own channels. They're the same source the links above point to, in video form:

Frequently asked questions

Sources

Article reviewed on October 31, 2026. Each date is the source's last published update.

See the 20 sources
  1. 01What is Interaction to Next Paint (INP)? · Chrome for Developers · video
  2. 02How to improve Largest Contentful Paint for a better page experience · Google Search Central · video
  3. 03Monitor live Core Web Vitals in Chrome DevTools · Chrome for Developers · video
  4. 04Web Vitals · web.dev
  5. 05Largest Contentful Paint (LCP) · web.dev
  6. 06Interaction to Next Paint (INP) · web.dev
  7. 07Cumulative Layout Shift (CLS) · web.dev
  8. 08Chrome UX Report · Chrome for Developers
  9. 09Lighthouse performance scoring and variability · Chrome for Developers
  10. 10PageSpeed Insights · Google
  11. 11About PageSpeed Insights · Google for Developers
  12. 12Core Web Vitals report · Search Console Help
  13. 13Understanding Core Web Vitals and Google search results · Google Search Central
  14. 14CrUX methodology · Chrome for Developers
  15. 15Interaction to Next Paint becomes a Core Web Vital on March 12 · web.dev
  16. 16Vodafone: A 31% improvement in LCP increased sales by 8% · web.devMarch 17, 2021
  17. 17Driving user growth with performance improvements · Pinterest EngineeringMarch 3, 2017
  18. 18Get started with Claude in Chrome · Claude Help Center
  19. 19Ask Google to recrawl your URLs · Google Search Central
  20. 20SEO Spider Pricing · Screaming Frog

About the author. Carlos Alberto Cardona B., SEO specialist in Bogotá. I write what I measure, with every number next to its instrument and date, and I verify what AI executes myself.

Site loading slowly and you don't know where to start?

In the free diagnostic I tell you whether there's a serious error. If you're getting a new website, in SEO website design speed beats any decoration.

Request your free diagnostic

Carlos Alberto Cardona B., who will reply to youCarlos Alberto Cardona B. · SEO Specialist