Skip to content
Technical SEO

Core Web Vitals

Google's field-measured page-experience metrics: LCP, INP, and CLS.

Core Web Vitals are Google's set of field-measured page-experience metrics — Largest Contentful Paint (LCP), Interaction to Next Paint (INP), and Cumulative Layout Shift (CLS) — that quantify loading speed, interaction responsiveness, and visual stability as real users experience a page.

They matter because Google has confirmed page experience, including Core Web Vitals, is a ranking factor, though a comparatively minor one relative to content relevance and quality — a page that fails its Vitals thresholds is not automatically demoted, but it competes at a disadvantage against an otherwise-equal page that passes, and poor Vitals correlate strongly with higher bounce rates and lower conversion regardless of any ranking effect.

The three metrics are measured using real-user data collected in the Chrome User Experience Report (CrUX), which Google draws on for ranking purposes, distinct from lab-based tools like Lighthouse, which simulate a single, controlled page load and are useful for diagnosis but are not what Google uses to assess field performance.

Each metric has a 'good', 'needs improvement', and 'poor' threshold measured at the 75th percentile of real page visits — meaning a site needs at least three-quarters of its visits to clear the 'good' bar to be classified as passing overall, not merely an average visit.

How each metric works mechanically

LCP measures the render time of the largest visible content element in the viewport — usually a hero image, a large block of text, or a video poster — from navigation start. It is dominated by server response time, resource load time, render-blocking resources, and client-side rendering delays.

INP measures the latency between a user's interaction (click, tap, key press) and the next visual update the browser paints in response, sampled across all interactions during a page's lifetime and reported as a high percentile. It replaced First Input Delay (FID) in March 2024 because FID only measured the first interaction and only the delay before processing began, missing the far more common problem of slow processing after that.

CLS measures unexpected movement of visible page elements during the page's lifetime, calculated from the impact fraction (how much of the viewport shifted) multiplied by the distance fraction (how far it moved), summed across the worst burst of shifts in a session.

Why Core Web Vitals matter more in the AI-search era

As classical organic clicks become scarcer on informational queries due to AI Overviews, the clicks that do arrive are disproportionately commercial and local-intent, high-conversion-value traffic — exactly the traffic where a slow, unstable page directly costs revenue rather than merely losing a ranking edge. Vitals have shifted from a modest ranking lever to a direct conversion-rate lever whose importance has, if anything, increased.

How to measure Core Web Vitals correctly

Use Google Search Console's Core Web Vitals report and the CrUX dashboard for authoritative, field-measured, ranking-relevant data, grouped by URL pattern rather than individual page where traffic is too low for a stable sample.

Use PageSpeed Insights or Lighthouse for lab-based diagnosis — identifying which specific resources or scripts are causing a failure — but never treat a Lighthouse score as equivalent to real field performance; a page can pass in the lab and fail in the field, and vice versa, especially on real-world device and network conditions Lighthouse doesn't fully replicate.

Common causes of Core Web Vitals failure

LCP failures are most often caused by unoptimised hero images, slow server response times (especially on shared or under-provisioned hosting), and render-blocking CSS or JavaScript loaded before the largest element can paint.

INP failures are most commonly caused by heavy client-side JavaScript execution triggered on interaction — large React component trees re-rendering unnecessarily, third-party analytics or ad tags running expensive work on the main thread, or poorly-optimised event handlers.

CLS failures typically come from images or embeds without explicit width and height attributes, web fonts that load late and reflow text (FOIT/FOUT), and ads or dynamically-injected content that pushes existing page content down after the initial layout.

  • Unoptimised, unresized hero images causing slow LCP.
  • Heavy analytics/ad scripts blocking the main thread and hurting INP.
  • Missing width/height on images and embeds causing CLS.
  • Web fonts without font-display strategy causing text reflow.

A step-by-step Core Web Vitals remediation process

Pull the CrUX-based Search Console report to identify which URL groups are actually failing in the field, rather than starting from a lab score on a single page.

For LCP: compress and correctly size the hero image, serve it via a CDN with modern formats (AVIF/WebP), add a `fetchpriority="high"` hint, and eliminate render-blocking resources above it in the load order.

For INP: audit third-party scripts and defer or remove non-essential ones, break up long JavaScript tasks, and avoid unnecessary large re-renders on interaction in client-side frameworks.

For CLS: set explicit dimensions on all images and embeds, reserve space for ads and dynamically-loaded content, and use `font-display: optional` or preloaded fonts to prevent layout-shifting text swaps.

Re-measure in the field (CrUX/Search Console) after 28 days, since field data accumulates over a rolling window and won't reflect a fix immediately.

Core Web Vitals for local Austin-area service business sites

Many local service sites run on templated platforms with heavy embedded booking widgets, chat tools, and marketing pixels stacked on top of each other — a common and avoidable cause of INP and CLS failures. Auditing and trimming that third-party script stack is frequently the single highest-leverage Vitals fix available to a small business site, ahead of any custom development work.

How Core Web Vitals relate to crawl budget and rankings

Faster, more stable pages are cheaper for search engines to crawl and render, which modestly improves crawl efficiency on larger sites, while the direct ranking effect remains a comparatively minor factor relative to content relevance. The larger, more reliable payoff is behavioural: passing Vitals correlates strongly with lower bounce rate and higher conversion, which indirectly supports rankings through engagement and business outcomes.

Core Web Vitals thresholds (p75, field data)

LCP — Good≤ 2.5sNeeds improvement 2.5–4.0s; poor above 4.0s.
INP — Good≤ 200msNeeds improvement 200–500ms; poor above 500ms.
CLS — Good≤ 0.1Needs improvement 0.1–0.25; poor above 0.25.
Overall pass requirement75th percentileAt least 75% of real visits must meet the 'good' threshold on each metric.

Frequently asked questions

What are the three Core Web Vitals?
Largest Contentful Paint (LCP, loading speed), Interaction to Next Paint (INP, responsiveness), and Cumulative Layout Shift (CLS, visual stability). Each has a field-measured 'good' threshold assessed at the 75th percentile of real visits.
Is Core Web Vitals a ranking factor?
Yes, confirmed by Google, but a comparatively minor one relative to content relevance and quality. It acts more as a tiebreaker between otherwise similarly relevant pages than as a primary driver of rank.
What replaced FID as a Core Web Vital?
INP (Interaction to Next Paint) replaced First Input Delay in March 2024. FID only measured delay before the first interaction was processed; INP measures full responsiveness across all interactions during a page's lifetime.
Why does my Lighthouse score differ from Search Console?
Lighthouse is lab data from a single simulated page load under controlled conditions; Search Console reports field data (CrUX) aggregated from real users on real devices and networks. A page can pass one and fail the other.
How long does it take for a Vitals fix to show in reports?
Field data (CrUX) is a rolling 28-day window, so a fix typically takes at least that long to fully reflect in Search Console's Core Web Vitals report, even though the improvement is real from the moment it ships.
Example

A home-services site had an INP failure driven by a chat widget that ran a 400ms script on every page interaction. Deferring the widget's initialisation until after first interaction cut p75 INP from 340ms to 140ms within one CrUX reporting cycle.

Need this applied to your site?

We turn concepts like these into shipped work every week.