Dispatch
Core Web Vitals: Google’s User Experience Metrics Explained
Executive Summary Core Web Vitals are Google's standardized set of user experience metrics, measuring loading performance (Largest Contentful Paint), interactivity (Interaction to Next Paint), and visual stability (Cumulative Layout Shift)....
On this page
- Executive Summary
- Understanding the Core Web Vitals Framework
- Largest Contentful Paint (LCP) Deep Dive
- Interaction to Next Paint (INP) Deep Dive
- Cumulative Layout Shift (CLS) Deep Dive
- Measuring Core Web Vitals Correctly
- Page Experience and Ranking Impact
- Systematic Optimization Approach
- Common Optimization Patterns
- A Note on Threshold Rumors
- Frequently Asked Questions
- Related posts:
Executive Summary
Core Web Vitals are Google’s standardized set of user experience metrics, measuring loading performance (Largest Contentful Paint), interactivity (Interaction to Next Paint), and visual stability (Cumulative Layout Shift). Meeting the “good” threshold on all three affects search ranking eligibility through Google’s page experience system and, more directly, affects how usable a page actually feels to visitors.
Working principles:
- Measure with field data (Chrome UX Report) for anything related to ranking impact; lab tests are for diagnosis, not for claiming pass/fail status.
- Optimize for the 75th percentile of user experiences, not the average. A page can have a great average and still fail Core Web Vitals if its worst quarter of visits are poor enough.
- Address LCP first in most triage situations, since loading speed tends to have the most immediate effect on perceived performance.
- Prevent CLS by giving every dynamic element (images, ads, embeds, web fonts) explicit, reserved space before it loads.
- Reduce INP by minimizing how long JavaScript blocks the main thread during user interactions.
A maintenance note before the metric details: Core Web Vitals thresholds and definitions have changed before (INP replaced FID in March 2024) and could change again. The thresholds below were verified directly against Google’s and web.dev’s current published documentation; treat any source, including this one, with caution if it isn’t dated or doesn’t link back to Google’s own properties.
Understanding the Core Web Vitals Framework
Core Web Vitals are part of Google’s broader effort to provide unified, measurable guidance on what makes a page feel good to use. They cover three dimensions:
Loading, measured by Largest Contentful Paint (LCP): how quickly the main content of a page becomes visible.
Interactivity, measured by Interaction to Next Paint (INP): how responsive the page is to user input across the entire visit, not just the first click.
Visual stability, measured by Cumulative Layout Shift (CLS): whether content shifts unexpectedly while a page loads or as a user interacts with it.
Each metric is evaluated at the 75th percentile across real visits, meaning a page must perform within the “good” range for at least three-quarters of its measured user experiences to be considered passing. Google primarily uses field data from the Chrome User Experience Report (CrUX) for this evaluation, not lab tool scores. Lab tools like Lighthouse are useful for diagnosing why a page scores the way it does, but they don’t themselves determine ranking-relevant Core Web Vitals status.
Largest Contentful Paint (LCP) Deep Dive
LCP marks the point when the largest visible content element (commonly a hero image, a large block of text, or a poster image for video) has finished rendering. The current published thresholds, confirmed against web.dev’s LCP documentation and Google’s Search Central page experience documentation, are:
| Rating | LCP |
|---|---|
| Good | Under 2.5 seconds |
| Needs Improvement | 2.5 to 4 seconds |
| Poor | Over 4 seconds |
Several factors compound to determine LCP:
- Server response time (TTFB) sets the floor; nothing can render before the first byte of HTML arrives.
- Render-blocking resources (synchronous CSS or JavaScript in the document head) delay when the browser can start painting at all.
- Resource load time for the LCP element itself, especially when it’s an image, is often the single biggest lever; preloading it can help:
<link rel="preload" href="hero-image.webp" as="image">
- Client-side rendering dependency delays LCP whenever the content needing to render depends on JavaScript execution rather than being present in the initial HTML; server-side rendering or static generation avoids this dependency entirely.
Identifying the actual LCP element on a given template, using Lighthouse or the Chrome DevTools Performance panel, is the necessary first diagnostic step; optimization only helps if it targets the element actually responsible for the metric.
Interaction to Next Paint (INP) Deep Dive
INP measures responsiveness across the full page session by recording the latency of user interactions (clicks, taps, key presses) and reporting a value representing the worst typical interaction, with statistical outliers excluded. It formally replaced First Input Delay (FID) as the third Core Web Vital on March 12, 2024, a change confirmed in Google’s web.dev blog post announcing the transition.
| Rating | INP |
|---|---|
| Good | Under 200 milliseconds |
| Needs Improvement | 200 to 500 milliseconds |
| Poor | Over 500 milliseconds |
The most common cause of poor INP is main-thread blocking: while JavaScript is executing a long task, the browser cannot process or visually respond to user input. The Long Tasks API defines a long task as any task running over 50 milliseconds, and tasks well beyond that threshold are where INP problems typically concentrate. The newer Long Animation Frames (LoAF) API, shipped in Chrome 123, is now the more precise diagnostic for INP specifically, since it reports cumulative rendering delay across a full frame, with script attribution, rather than just isolated tasks over the 50ms cutoff.
Practical fixes include breaking long tasks into smaller chunks (using requestIdleCallback, setTimeout, or the newer scheduler.yield()), moving heavy computation off the main thread into Web Workers, and auditing third-party scripts, since analytics tags, ad scripts, chat widgets, and social embeds are frequent, often-overlooked sources of main-thread blocking.
Cumulative Layout Shift (CLS) Deep Dive
CLS quantifies unexpected visual movement by multiplying the impact fraction (how much of the viewport was affected) by the distance fraction (how far the affected elements moved).
| Rating | CLS |
|---|---|
| Good | Under 0.1 |
| Needs Improvement | 0.1 to 0.25 |
| Poor | Over 0.25 |
Common causes and fixes:
- Images without reserved dimensions push surrounding content as they load. Always specify
widthandheightattributes, or use CSSaspect-ratio:
<img src="photo.jpg" width="800" height="600" alt="Description">
- Dynamically injected content (ads, embeds, cookie-consent banners) that doesn’t reserve space before it loads is one of the more frustrating CLS sources from a user’s perspective, since it often shifts content right as someone is about to tap something.
- Web fonts can cause shift when the custom font renders with different metrics than the fallback font it briefly replaces.
font-display: swappaired with a fallback font with closely matched metrics minimizes this. - Animations should use
transformandopacity, which don’t trigger layout recalculation, rather than animating properties likewidth,height, ortop/leftthat do.
Shifts that happen above the fold, in content visible without scrolling, weigh more heavily on user-perceived stability than shifts further down a page the visitor hasn’t scrolled to yet.
Measuring Core Web Vitals Correctly
- Chrome UX Report (CrUX) is the field data source behind ranking-relevant Core Web Vitals evaluation, reflecting a rolling 28-day window of real Chrome user data. It’s accessible through PageSpeed Insights, the Search Console Core Web Vitals report, and BigQuery for larger-scale analysis.
- Search Console’s Core Web Vitals report groups URLs by similar issues and shows their Good/Needs Improvement/Poor status based on field data, which is the most direct way to see ranking-relevant status across a whole site.
- PageSpeed Insights displays both field data (when a URL has sufficient CrUX traffic) and lab data side by side, making it useful for connecting a diagnostic lab finding to its real-world field impact. When a URL doesn’t have enough individual traffic for its own CrUX data, PageSpeed Insights automatically falls back to origin-level data (aggregated across the whole domain) before showing no data at all, a distinction worth knowing when a low-traffic page’s report looks unexpectedly site-wide.
- The
web-vitalsJavaScript library lets a site collect its own real-user measurements directly, useful for sites that want more granular or more frequent data than CrUX’s aggregate reporting provides:
import {onLCP, onINP, onCLS} from 'web-vitals';
onLCP(console.log);
onINP(console.log);
onCLS(console.log);
Field and lab data diverge because lab testing runs under fixed, controlled conditions, while field data captures the full variability of real devices, networks, and user behavior. This divergence is common enough that it deserves a specific mental model: lab data answers “how does this page perform under a known, fixed scenario,” while field data answers “how is this page actually performing for the people who visit it.” Both questions are useful, but only the second one is what Google evaluates for ranking-relevant Core Web Vitals status. A site with a largely desktop, high-end-device audience may show excellent field data despite mediocre lab scores; a site whose traffic skews toward older phones on slower mobile networks may see the opposite pattern even with a clean Lighthouse report.
Page Experience and Ranking Impact
Core Web Vitals sit within Google’s broader page experience guidance, alongside mobile-friendliness, HTTPS, and the absence of intrusive interstitials. Google’s own documentation draws a distinction worth knowing here: Core Web Vitals are the part its ranking systems actually use, while it states plainly that the other page experience aspects “don’t directly help your website rank higher in search results,” even though they still affect how satisfying a page is to use.
Ranking impact is real but contextual: Core Web Vitals function primarily as a tiebreaker among pages of otherwise comparable relevance and quality. Strong content with weak Core Web Vitals can still outrank weaker content with excellent Core Web Vitals, but in a genuinely close competitive race, Core Web Vitals can be the deciding factor.
That competitive framing matters in practice: if every site ranking for a given query already passes Core Web Vitals, failing them puts a site at a real disadvantage relative to that specific competitive set. If few competitors pass, the relative impact of passing is smaller.
Desktop and mobile are evaluated as separate experiences. Given mobile-first indexing, mobile Core Web Vitals carry more practical weight for most sites, though desktop performance still matters for desktop search results specifically.
Systematic Optimization Approach
- Audit current status using the Search Console Core Web Vitals report for a site-wide view, and PageSpeed Insights for page-level detail.
- Prioritize by traffic and severity. Fix high-traffic pages and the metrics failing by the largest margin first, rather than working alphabetically through every flagged URL.
- Diagnose root causes with Lighthouse’s specific recommendations and the Chrome DevTools Performance panel for detailed timing breakdowns.
- Implement fixes in batches where similar templates share the same underlying issue, testing each change before production deployment.
- Monitor field data after deployment, expecting a lag of days to weeks before the 28-day rolling CrUX window fully reflects a fix.
- Repeat. New content, features, and third-party script additions can reintroduce regressions, so periodic re-auditing is part of ongoing maintenance, not a one-time project.
Common Optimization Patterns
| Metric | Common fixes |
|---|---|
| LCP | Convert images to WebP/AVIF, preload the LCP element, use a CDN, enable caching, upgrade hosting if server response is the bottleneck |
| INP | Audit and remove unused JavaScript, defer non-critical scripts, break up long tasks, move heavy work to Web Workers |
| CLS | Add explicit dimensions to images and video, reserve space for ads and embeds, avoid inserting content above existing content, use transform-based animation |
| Third-party scripts | Audit everything currently loaded, remove what isn't earning its keep, defer or async what remains, self-host critical resources where feasible |
A Note on Threshold Rumors
Core Web Vitals thresholds get reported on heavily across the SEO industry, and not every report is reliable. Claims about Google tightening specific numeric thresholds (for example, a stricter LCP cutoff tied to a particular algorithm update) circulate periodically and sometimes get repeated across many sites that all cite each other rather than an actual Google source. Before acting on a claimed threshold change, check it against Google’s own properties directly: web.dev’s Core Web Vitals documentation, Search Central’s page experience documentation, and the Search Central blog for any formal announcement. If a numeric threshold change isn’t documented on one of those, treat it as unverified regardless of how many other sites are repeating it.
Frequently Asked Questions
Do Core Web Vitals affect every page, or only some?
Only pages with sufficient Chrome field data (CrUX) get evaluated against Core Web Vitals thresholds in a ranking-relevant way. High-traffic pages reliably have this data; low-traffic pages may not, in which case other page experience and relevance signals carry relatively more weight.
How long after fixing an issue do rankings reflect the improvement?
Field data accumulates over a rolling 28-day window, so meaningful change requires that much real user traffic to fully register. Combined with normal ranking-update timelines, expect weeks rather than days before improvements are fully reflected.
Can I pass on mobile but fail on desktop, or vice versa?
Yes, they’re evaluated independently. Mobile-first indexing means mobile experience is the primary basis for most sites’ evaluation, but desktop rankings still consider desktop-specific page experience, so both are worth optimizing.
My CMS limits what I can change. What then?
Work within real platform constraints: optimize images, reduce unnecessary plugins, and trim third-party scripts even if deeper architectural changes aren’t available. If Core Web Vitals are a genuine competitive liability, that’s a legitimate input into a future platform decision, but most CMS platforms allow meaningful improvement without a full migration.
Should Core Web Vitals take priority over content quality?
No. Content relevance and quality remain the dominant ranking factors. Core Web Vitals matter most as a differentiator among pages that are already comparable in content quality; they’re not a substitute for that quality.
How do I handle Core Web Vitals problems caused by ads or embeds I don’t fully control?
Reserve explicit space for third-party content to limit CLS impact, lazy-load embeds that aren’t immediately visible to help LCP and INP, evaluate faster alternatives where they exist, and accept that some third-party functionality carries an unavoidable performance cost that has to be weighed against its value.
Is there a direct penalty for failing Core Web Vitals?
There’s no separate penalty distinct from the page experience signal itself. Passing is treated as a positive signal relative to competing pages; failing means missing that positive signal, which functions similarly to a competitive disadvantage rather than a punitive deduction.
Do Core Web Vitals matter for a low-traffic site?
Without sufficient CrUX field data, a site’s pages may not be evaluated against Core Web Vitals for ranking purposes in any meaningful way. The underlying user-experience benefits of good performance still apply regardless of search impact, which is reason enough to address obvious issues.