Core Web Vitals: What Google Measures and How to Improve Your Site's Scores

Core Web Vitals are three Google metrics that describe what a visitor actually experiences on a page: how fast the main content appears (LCP), how quickly the site responds to a click or tap (INP), and how much the layout jumps around while loading (CLS). The "good" thresholds at the time of writing are LCP under 2.5 seconds, INP under 200 milliseconds and CLS under 0.1, and they are measured on real visitors, not on a single test run from a developer's laptop. Below we break down what each metric measures, where to find your numbers, why they are so often poor and what to do about it.

Three Core Web Vitals metrics LCP, INP and CLS shown on a laptop screen with green scores

What Core Web Vitals are and which three metrics Google measures

Google introduced the Web Vitals set in 2020 to boil the conversation about website loading speed down to a few numbers anyone can read. "Core" means the three that feed into ranking and into Search Console reports.

LCP: when the main content shows up

Largest Contentful Paint measures the time from the start of navigation until the largest element in the visible part of the screen has been painted: a hero banner, a heading, a product photo. It is not "fully loaded"; it is the moment a person sees that the page is actually there. If LCP is 5 seconds, the visitor stares at a blank screen for those five seconds.

INP: how fast the page reacts to input

Interaction to Next Paint looks at every click, tap and key press during a visit and effectively takes the worst one (with a small allowance for very long sessions). It measures the delay from the action to the next screen update. INP officially replaced First Input Delay on 12 March 2024, so if your old checklists still mention FID, it is time to update them. The difference matters: FID counted only the first interaction, INP watches the whole visit, so a catalogue filter or a cart that freezes now counts too.

CLS: how much the layout jumps

Cumulative Layout Shift is not a time but a unitless score: the sum of unexpected element shifts. The classic case: a person aims at a button, a banner loads in above it, the button slides down, the click lands on an ad. Every shift like that adds to CLS.

Which thresholds count as acceptable

Google splits each metric into three zones. For a page to "pass", all three metrics must be in the green zone at the 75th percentile, meaning at least three quarters of real page loads have to fit within the threshold.

MetricGoodNeeds improvementPoor
LCPup to 2.5 s2.5 to 4 sover 4 s
INPup to 200 ms200 to 500 msover 500 ms
CLSup to 0.10.1 to 0.25over 0.25

Pay attention to that 75th percentile. A site can open in a second from an office on fibre and still fail CWV because a quarter of visitors arrive on ageing Android phones over mobile data. That is why the mobile version is almost always worse than desktop, and it is the one Google looks at first.

Field data from CrUX vs a lab test: why the numbers disagree

This is the most common confusion we at Query run into during consultations. There are two data sources and they show different things.

  • Field data (CrUX, Chrome User Experience Report): anonymous statistics from real Chrome users over the last 28 days. This is what ranking uses and what you see at the top of a PageSpeed Insights report and in Search Console. The downside: with little traffic there is simply no data for a specific page, only for the domain as a whole, or nothing at all.
  • Lab data (Lighthouse): a single test in simulated conditions: slow 4G, a weak CPU. Handy for diagnosing what exactly is slow, but it is not a score Google ranks anything by. INP is not measured in the lab; Lighthouse shows Total Blocking Time as a rough proxy instead.

The practical takeaway: judge yourself by field data and treat the lab report as a list of hints. And do not be surprised when field numbers do not move right after a fix: the window is 28 days, changes trickle in gradually.

PageSpeed Insights report with Core Web Vitals field data and lab diagnostics on a monitor

Where to check website loading speed: PageSpeed Insights and Search Console

PageSpeed Insights (PSI) is Google's free tool: enter a URL and you get two blocks, a Core Web Vitals assessment based on field data (mobile and desktop separately) and a lab audit with recommendations. It is the first thing worth opening. The 0 to 100 performance score everyone loves to screenshot applies only to the lab part and plays no role in ranking. Chasing a perfect 100 is pointless; what you need is green field metrics.

The Core Web Vitals report in Google Search Console shows the picture across the whole site: how many URLs are good, how many need improvement, how many are poor, for mobile and desktop separately. Pages there are grouped by template: if one product page is poor, the rest are too, so fixing the template clears hundreds of URLs at once. It is the easiest way to set priorities: find the largest group and the metric that fails in it.

For ongoing monitoring there is also the CrUX Dashboard in Looker Studio and the Web Vitals extension for Chrome, which shows the metrics right while you browse a page. Developers usually prefer Lighthouse in DevTools, alongside the Performance tab for tracking down a specific heavy script.

Leave an application

Enter your name and email, our managers will contact you as soon as possible.

Why the scores are poor and what to do about it

The causes repeat from site to site. In our experience it is rarely one big problem; more often it is five or six medium ones that together push a page into the red.

Metric"Good" thresholdTypical causeWhat to do
LCPup to 2.5 sHeavy hero image, slow server (TTFB over 800 ms), render-blocking CSS and JSCompress images and convert to WebP/AVIF, add fetchpriority="high" to the hero image, enable caching and a CDN, move non-critical CSS/JS out of <head>
INPup to 200 msThird-party scripts (chats, pixels, widgets), heavy framework JS, long click handlersRemove unused scripts, load the rest deferred (defer, async), break long tasks into chunks, check server response times for AJAX calls
CLSup to 0.1Images and videos without dimensions, banners and ads injected at the top, web fonts loading with a text "jump"Set width/height on all media, reserve space for banners, serve fonts with font-display: swap and preload

A few notes on the items that most often turn out to be "the" cause.

Images. A homepage slider with five photos at 2 MB each is a standard find on sites built a few years ago. The first photo is the LCP element and should not weigh more than 150-200 KB. The other slides can load later.

Fonts. Three families with four weights each pulled from Google Fonts add both an LCP delay and a CLS jump when the system font is swapped for the custom one. Keep two weights and serve them from your own server as WOFF2.

Third-party scripts. A live chat, a few ad pixels, a map, a reviews widget: each brings its own JS, and these are what usually ruin INP. Count which ones are actually used. Switch off the ones nobody needs; load the ones you do need after the first interaction or through Tag Manager with a delay.

Hosting and TTFB. Time to First Byte, the time until the server sends the first byte of its response, is the floor for LCP: if the server thinks for 1.5 seconds, an LCP under 2.5 is physically impossible. Cheap shared hosting, no page cache, heavy database queries: all of it shows up in PSI as "Reduce initial server response time". Sometimes the cheapest fix is simply turning on server-side caching and moving to a decent hosting plan.

Part of this is covered by standard technical SEO optimisation, while deeper work such as rewriting templates or replacing a slider falls under website refinement by a developer. At Query we usually run the two together: the audit shows what is slow, the developer fixes it, and field data confirms the result.

Developer optimising website images and scripts to improve page loading speed

How much Core Web Vitals affect rankings

The honest answer: they do, but not the way some people scare you with. Google confirms that Core Web Vitals are part of the page experience signals, yet this is one factor among many, and content relevance weighs far more. A site with poor metrics but a better answer to the query will, as a rule, outrank a fast site with a thin page. It works more like a tiebreaker: when competitors are close on content, the green zone gives you the edge.

The effect on conversion, on the other hand, is direct and visible without any Google involved. A slow page loses part of its visitors before the first screen renders, layout jumps cause misclicks, and a "Buy" button that hangs for half a second feels like a broken site. That is why we suggest treating CWV not as an SEO checkbox but as a measure of how much money leaks out through website loading speed. The full description of the metrics and the measurement method is in Google's official documentation at web.dev/vitals.

Where to start: a checklist

  1. Open the Core Web Vitals report in Search Console and find the largest group of poor mobile URLs: that is priority number one.
  2. Run one page from that group through PageSpeed Insights and record the field LCP, INP and CLS values as your baseline.
  3. Check the first screen: the weight of the hero image, the number of fonts, whether all media have explicit dimensions.
  4. List every third-party script and switch off the ones nobody uses.
  5. Measure TTFB; if it is over 800 ms, sort out hosting and caching first and only then the front end.
  6. Four weeks after the changes, check again: field data updates with a lag, and earlier conclusions are premature.

Other articles

Other services

Get in touch
Messengers