
Picture this: you've done everything right. Your content is solid, your backlinks are clean, and your site has been indexed for years. But somewhere in the audit, a developer casually drops the phrase "your Core Web Vitals are failing" — and suddenly you're staring at a wall of green, orange, and red circles in PageSpeed Insights wondering what any of it actually means for your rankings. This guide cuts through the noise. Core Web Vitals are a real ranking signal, but they're also one of the most misunderstood parts of technical SEO. Let's fix that.
What Are Core Web Vitals, Really?
Core Web Vitals are three specific performance metrics Google uses to measure real-world user experience on your pages. Not lab scores. Not synthetic benchmarks. Real user data pulled from Chrome users visiting your actual site — what Google calls field data from the Chrome User Experience Report (CrUX).
The three metrics are Largest Contentful Paint (LCP), Interaction to Next Paint (INP), and Cumulative Layout Shift (CLS). Each one measures a different dimension of how your page feels to use. Load speed. Responsiveness. Visual stability. Together, they tell Google whether real people are having a good time on your site — or getting frustrated and bouncing.
One important caveat before we go further: Core Web Vitals are a tiebreaker signal, not a trump card. If two pages are roughly equal in relevance and authority, the one with better vitals wins. But a weak page with fast load times won't outrank a strong page that's a half-second slower. Keep that in perspective.
LCP: Largest Contentful Paint
What it measures
LCP tracks how long it takes for the largest visible element on the page to load. That's usually a hero image, a large heading, or a video thumbnail — whatever dominates the viewport when someone first lands. Google's threshold is clear: under 2.5 seconds is "Good", 2.5 to 4 seconds needs improvement, and anything over 4 seconds is "Poor".
Why it fails
In my experience, slow LCP almost always comes down to one of four culprits. Unoptimized hero images (huge JPEGs or PNGs with no compression). Render-blocking JavaScript or CSS that delays the browser from painting anything. Slow server response times, especially on shared hosting. And lazy-loading applied incorrectly to above-the-fold images — which ironically delays the very thing Google is measuring.
That last one trips up more sites than you'd think. Lazy loading exists to defer off-screen images. Apply it to your hero image and you've just told the browser to wait before loading the most important element on the page. Classic own goal.
How to fix it
- Convert hero images to WebP or AVIF format and compress them aggressively.
- Add `fetchpriority="high"` to your LCP image element so the browser prioritizes it.
- Remove `loading="lazy"` from any above-the-fold images.
- Upgrade to a host with fast Time to First Byte (TTFB) — aim for under 600ms.
- Preload your LCP image using a `<link rel='preload'>` tag in the `<head>`.
- Audit render-blocking resources with a full technical SEO audit and defer or inline critical CSS.
INP: Interaction to Next Paint
What it measures
INP replaced First Input Delay (FID) as an official Core Web Vital in March 2024. It's a bigger deal than most sites have caught up to. Where FID only measured the delay before the browser started responding to your first tap or click, INP measures the full visual response time across all interactions during a visit — clicks, taps, keyboard inputs. The worst one wins. Good is under 200 milliseconds. Over 500ms is Poor.
Why it fails
INP problems are almost always JavaScript problems. Heavy third-party scripts — ad networks, chat widgets, tag managers firing a dozen tags at once — clog the browser's main thread. When the main thread is busy, it can't respond to your click. The user taps a button and nothing happens for a beat. That's a bad INP score.
Long tasks (JavaScript tasks running longer than 50ms) are the core enemy here. And yes, this is a more complex fix than compressing an image. But it's also where a lot of sites have the most room to improve in 2025, especially those running bloated tag manager setups or heavy page builders.
How to fix it
- Open Chrome DevTools, go to Performance, and record a page interaction. Look for long tasks (red bars) blocking the main thread.
- Audit your third-party scripts. Every script you load is a liability. Defer what you can, kill what you don't need.
- Use Google Tag Manager's built-in tag firing priorities to stagger script loads.
- Break up long JavaScript tasks using `scheduler.yield()` or `setTimeout` chunking.
- Consider whether your page builder (Elementor, Divi, WPBakery) is generating excessive inline JS — sometimes a theme switch fixes what no optimization can.
- Use the Web Vitals Chrome Extension to get real-time INP readings as you click through your own pages.
CLS: Cumulative Layout Shift
What it measures
CLS measures visual stability — how much the page layout jumps around as it loads. You know the experience. You're about to tap a button and an image loads above it, the whole page shifts down, and you accidentally tap the wrong thing. That's a layout shift. Google scores it from 0 to any positive number. Good is under 0.1. Poor is over 0.25.
Why it fails
The most common causes are images and embeds without defined dimensions, web fonts that swap late (causing a flash of unstyled text that changes line heights), and dynamically injected content like ad banners or cookie consent bars that push page content down after load. Late-loading iframes — think YouTube embeds or social widgets — are another classic culprit.
How to fix it
- Always define `width` and `height` attributes on every `<img>` and `<iframe>` element. This lets the browser reserve space before the content loads.
- Use `font-display: optional` or `font-display: swap` carefully — `optional` prevents FOUT entirely by not swapping if the web font is late.
- Preload critical web fonts in the `<head>` so they're ready before paint.
- Reserve space for ad slots and banners with CSS min-height, even when the ad hasn't loaded yet.
- Move cookie consent banners to a non-shifting UI pattern — a fixed bottom bar instead of a top banner that pushes content down.
How Google Actually Uses Core Web Vitals in Rankings
Here's the honest version. Google's Page Experience signal bundles Core Web Vitals alongside HTTPS, mobile-friendliness, and the absence of intrusive interstitials. According to Google's Search Central documentation on page experience, it acts as a tiebreaker among pages that are otherwise competitive on relevance. It's real, but it's not your entire SEO strategy.
What's changed in 2025 is the weight of INP. Sites that haven't audited for INP since the March 2024 transition are potentially sitting on fixable losses. FID was easy to pass — the bar was low. INP is harder, especially for JavaScript-heavy sites. I've seen sites that scored "Good" on every other vital struggling with Poor INP scores because no one updated their audit checklist after the changeover.
Google also uses the 75th percentile of your field data, not the median. That means 25% of your real visitors can be having a bad experience before it shows up in your score. Passing the threshold doesn't mean your site feels fast to everyone.
Where to Measure Your Core Web Vitals
The most important data source is field data — what real users experience. Lab data (like a Lighthouse run on your laptop) is useful for debugging, but Google does not use it for ranking. Know the difference.
The tools you should actually be using
- Google Search Console — Core Web Vitals report shows field data by URL group, segmented by mobile and desktop. Start here.
- PageSpeed Insights — Combines field data (CrUX) at the top with a Lighthouse lab audit below. The field data section is what matters for rankings.
- CrUX Dashboard (via Looker Studio) — Lets you track your Core Web Vitals field data over time at the origin level.
- Chrome DevTools Performance panel — For diagnosing long tasks and INP specifically. Not ranking data, but essential for fixing things.
- Web Vitals Chrome Extension — Real-time LCP, INP, and CLS readings as you browse. Great for spot-checking specific pages.
- WebPageTest — More diagnostic depth than PageSpeed Insights, including waterfall charts that show exactly what's blocking your LCP.
One thing worth calling out: if your site doesn't have enough traffic to generate CrUX field data, Google Search Console will show no data for that URL. In that case, you're flying on lab data alone. Lighthouse scores aren't meaningless — they point you toward real issues — but don't treat a 90+ Lighthouse score as a pass if you can't verify it with field data.
Mobile vs. Desktop: Which Score Matters More?
Both matter, but Google's primary index is mobile-first. If your mobile Core Web Vitals are failing and your desktop scores are passing, your rankings are still at risk. Mobile is almost always harder to pass — slower devices, variable network conditions, and touch-based interactions add friction that desktop users never see.
Always segment your Search Console Core Web Vitals report by device. A site can look fine in aggregate while its mobile pages are silently bleeding. Fix mobile first, then verify desktop holds.
Common Mistakes Agencies and Developers Make
The most expensive mistake I see is chasing Lighthouse scores instead of field data. A developer runs Lighthouse in an incognito Chrome tab, sees a 92, and closes the ticket. Meanwhile the real CrUX data in Search Console is showing Poor LCP on mobile because the CDN isn't caching correctly for users outside the developer's city.
Second most common: fixing Core Web Vitals on the homepage and calling it done. Google measures page-level, not site-level. Your product pages, blog posts, and landing pages each have their own scores. A homepage pass means almost nothing if your high-traffic blog posts are failing.
And yes, this happens more than most agencies want to admit — clients get handed a "Core Web Vitals fixed" deliverable that only ever touched one URL.
The checklist that actually closes tickets
- Pull the Core Web Vitals report in Search Console. Filter by "Poor" URLs on mobile. Sort by impressions. Fix the highest-traffic pages first.
- For each failing page, run PageSpeed Insights and read the field data section first, then use the lab diagnostics to find root causes.
- Address LCP: image format, preload, fetchpriority, server response time.
- Address INP: audit third-party scripts, identify long tasks in DevTools Performance panel, defer non-critical JS.
- Address CLS: add explicit dimensions to all media, audit font loading strategy, reserve space for dynamic content.
- Validate fixes with a second PageSpeed Insights run after deploying changes — but wait 28 days for the Search Console field data to refresh before declaring victory.
- Set a recurring monthly reminder to check the Search Console CWV report. This is not a one-time fix.
Where to Start Today
Open Google Search Console right now. Go to Experience > Core Web Vitals. Look at your mobile report. If you see a significant number of URLs in the "Poor" bucket, sort them by impressions and start at the top. Those are the pages where bad vitals are most likely costing you rankings.
Run each of those URLs through PageSpeed Insights. Read the field data first. Then use the lab diagnostics to understand why. The fix list for most sites isn't as long as it looks — a handful of root causes tend to produce the majority of failures.
Core Web Vitals won't single-handedly make or break your rankings. But in competitive SERPs where the top results are close in quality and authority, they're a lever you control completely. That's rarer in SEO than you'd think. Use it.
Frequently Asked Questions
Related Articles
Glossary terms in this article
Brush up on the definitions.
Google's public dataset of real-world performance metrics collected from opted-in Chrome users, used to power Core Web Vitals assessments in Search Console and PageSpeed Insights.
A Core Web Vital measuring page responsiveness — the time from a user interaction to the browser's next visual update.
CSS and JavaScript files that prevent a browser from rendering page content until they are fully downloaded and parsed — a common cause of slow Largest Contentful Paint.
A Core Web Vital measuring how long it takes for the largest visible content element on a page to render for the user.
A Core Web Vital measuring the visual stability of a page — how much page elements move unexpectedly during loading.
Google's free webmaster tool that provides data on a site's organic search performance, indexing status, crawl errors, and manual actions.

About Matt Weitzman
Senior SEO Strategist & Co-Founder
Matt has over 15 years of experience in technical SEO and digital marketing. He specializes in algorithmic recovery, enterprise architecture, and leveraging AI for content scaling. He is a frequent speaker at search marketing conferences.
More articles by Matt Weitzman
