Core Web Vitals Explained: What They Are and How to Improve Them

LCP, INP, CLS: what they measure, why Google cares, and the practical fixes that'll take your scores from red to green.

Core Web Vitals dashboard showing LCP, INP, and CLS metrics on a modern monitor in a clean developer workspace

If your website takes forever to load, feels sluggish when people try to click stuff, or has elements jumping around like they’ve had too much coffee, you’ve got a Core Web Vitals problem. And yeah, Google is watching.

Core Web Vitals are Google’s way of measuring how your website actually feels to real people. Not how it looks in a design mockup, not how clever the code is under the hood, but how it performs in the wild when someone pulls it up on their phone during a lunch break. And since 2021, these metrics have been a confirmed Google ranking factor. So ignoring them? Not really an option anymore.

Whether you’re a business owner wondering why your site isn’t ranking, a developer trying to squeeze out every last millisecond, or just someone who’s curious about what those weird scores in PageSpeed Insights actually mean, this guide breaks down Core Web Vitals in plain English. We’ll cover what each metric measures, why it matters, and most importantly, how to actually fix the stuff that’s dragging your scores down.

Let’s get into it.

What Are Core Web Vitals

Core Web Vitals are a set of three specific metrics that Google uses to evaluate the user experience of a web page. They zero in on three things that matter most: loading performance, interactivity, and visual stability.

Here’s the lineup:

  • LCP (Largest Contentful Paint) measures how fast the main content of your page loads
  • INP (Interaction to Next Paint) measures how quickly your page responds when someone interacts with it
  • CLS (Cumulative Layout Shift) measures how much stuff unexpectedly moves around on the screen

Google introduced these metrics as part of their broader page experience signals, and they’ve been refining them ever since. The biggest recent change? In March 2024, INP officially replaced FID (First Input Delay) as the responsiveness metric. If you’re still optimizing for FID, you’re a bit behind, just saying.

These metrics are collected from real users through the Chrome User Experience Report (CrUX), which means Google isn’t just running lab tests on your site. They’re measuring how it actually performs for people visiting it out in the real world. That’s both exciting and slightly terrifying.

The thresholds Google considers “good”:

  • LCP: 2.5 seconds or less
  • INP: 200 milliseconds or less
  • CLS: 0.1 or less

If you’re hitting those numbers for at least 75% of your page visits, Google considers your Core Web Vitals as passing. Anything worse and you’re leaving both rankings and user satisfaction on the table.

Visual breakdown of the three Core Web Vitals metrics, LCP for loading, INP for interactivity, and CLS for visual stability

LCP: Largest Contentful Paint

LCP measures how long it takes for the largest piece of visible content to show up on the screen. This is usually a hero image, a big heading, a large text block, or a video thumbnail, basically whatever takes up the most visual real estate above the fold.

Why does this one matter so much? Because LCP is the closest thing we have to measuring what a real person perceives as “the page is loaded.” Nobody cares about your DOM content loaded event or your time to first byte in isolation. They care about seeing actual content. LCP captures that moment.

Google’s own LCP documentation goes deep into the technical details, but here’s the practical breakdown.

What usually causes bad LCP:

  • Slow server response times (your TTFB is dragging everything down)
  • Render-blocking JavaScript and CSS files
  • Unoptimized images, massive file sizes, no modern formats
  • Client-side rendering that delays actual content from appearing
  • Lazy loading your hero image (seriously, don’t do this)

How to improve it:

  • Optimize your server response time. If your TTFB is over 600ms, start there. Use a CDN, enable caching, and consider upgrading your hosting.
  • Preload critical assets. Use <link rel="preload"> for your hero image and critical fonts so the browser grabs them immediately.
  • Use modern image formats. AVIF and WebP are significantly smaller than JPEG and PNG at the same visual quality. Your LCP image should absolutely be in one of these formats.
  • Don’t lazy load above-the-fold images. Your hero image should load right away, not wait for a scroll event that hasn’t happened yet. This is one of the most common mistakes out there.
  • Minimize render-blocking resources. Inline critical CSS, defer non-essential JavaScript, and keep the critical rendering path as lean as possible.

A good LCP is 2.5 seconds or under. Between 2.5 and 4 seconds needs improvement. Over 4 seconds? That’s a red flag, and Google treats it like one.

INP: Interaction to Next Paint

INP is the newest metric in the Core Web Vitals lineup, and it’s kind of a big deal. It replaced First Input Delay (FID) in March 2024 because FID only measured the delay of the first interaction, which honestly didn’t tell the whole story. INP measures the responsiveness of all interactions throughout the entire page visit, then reports the worst one (roughly speaking).

In plain English: when someone taps a button, clicks a link, or types in a field, how long does it take for the page to visually respond? That’s INP.

What causes bad INP:

  • Heavy JavaScript execution blocking the main thread
  • Long tasks (anything over 50ms is considered a long task by Chrome)
  • Expensive event handlers that do way too much work when a user interacts
  • Third-party scripts, think analytics, ads, chat widgets, all fighting for CPU time
  • Complex DOM structures that take forever to update after an interaction

How to improve it:

  • Break up long tasks. Use setTimeout, requestAnimationFrame, or the scheduler.yield() API to split heavy work into smaller chunks so the browser can respond to user input between them.
  • Reduce your JavaScript bundle size. Less JavaScript means less to parse and execute. Code splitting and tree shaking are your best friends here.
  • Debounce event handlers. If you have scroll or input handlers firing constantly, debounce them so they’re not running on every single event.
  • Audit third-party scripts ruthlessly. That chat widget or social embed might be adding 200ms to your interaction delay. Is it worth the trade-off?
  • Use web workers for heavy computation. Offload non-UI work to a web worker so it doesn’t block the main thread.

INP is where a lot of sites struggle the most right now, because it exposes performance problems that were always there but that FID never captured. If your site feels sluggish when people interact with it, INP is probably telling you exactly why.

CLS: Cumulative Layout Shift

CLS measures visual stability, specifically, how much content unexpectedly shifts around while the page is loading. You know that infuriating experience where you’re about to tap a link and the page suddenly jumps because an ad or image loaded above it? That’s a layout shift, and CLS quantifies exactly how bad it is.

The most common culprits behind bad CLS:

  • Images and videos without explicit width and height dimensions
  • Ads, embeds, or iframes that load without any reserved space
  • Dynamically injected content that pushes existing content down the page
  • Web fonts causing a flash of invisible text (FOIT) or flash of unstyled text (FOUT)
  • Late-loading banners or cookie consent bars that shove everything downward

How to improve it:

  • Always set width and height on images and videos. Or use the CSS aspect-ratio property. This lets the browser reserve the right amount of space before the asset actually loads.
  • Reserve space for ads and embeds. Use a container with a fixed minimum height so content below doesn’t jump when the ad finally shows up.
  • Use font-display: swap with font preloading. This prevents invisible text and reduces the layout shift when custom fonts kick in.
  • Avoid inserting content above existing content. If you need to add a banner or notification, use a sticky or fixed position, or insert it below the fold.
  • Use the CSS contain property where appropriate. It tells the browser that certain elements won’t affect the layout of their siblings, which helps prevent unexpected shifts.

CLS is sneaky because it’s often perfectly fine during development but terrible in the real world where connections are slower and resources load at unpredictable times. Always test on real devices with throttled connections, not just your MacBook on fiber internet.

Before and after comparison showing a webpage with layout shift problems versus a stable layout with proper image dimensions

How Core Web Vitals Affect Your SEO

Alright, let’s get to the part everyone’s really curious about: how much do Core Web Vitals actually matter for SEO?

Google has been pretty upfront about this. Core Web Vitals are a confirmed ranking signal as part of their page experience update. But here’s the nuance that a lot of people miss: they’re not the most important ranking factor. Relevant, high-quality content still wins. If your article is the best answer to someone’s search query, it can rank well even with mediocre Core Web Vitals.

But here’s the thing, all else being equal, the site with better Core Web Vitals gets the edge. Think of it like a tiebreaker. If two pages have equally great content, Google is going to prefer the one that loads faster, responds quicker, and doesn’t have stuff jumping around.

And beyond direct rankings, Core Web Vitals have a massive indirect impact through user behavior signals:

  • Faster pages have lower bounce rates
  • Better interactivity keeps people engaged longer
  • Stable layouts reduce frustration and increase conversions

Google Search Console has a dedicated Core Web Vitals report that tells you exactly which pages are passing and which ones need work. If you’re serious about SEO, you should be checking this regularly.

One more thing worth knowing: Google evaluates Core Web Vitals at the page level and groups similar pages together. So if your blog posts all share the same template and one of them has bad CWV, the others probably do too. Fix the template, fix them all. This is also why modern web design trends are increasingly built around performance from the ground up.

How to Measure Your Core Web Vitals

You can’t improve what you don’t measure. Luckily, Google gives you a bunch of free tools to check your Core Web Vitals. Here are the ones you should actually know about:

PageSpeed Insights

PageSpeed Insights is the go-to tool for most people. Plug in any URL and get both lab data (simulated tests) and field data (real users) for all three Core Web Vitals. It also gives you specific recommendations for what to fix, prioritized by impact. Start here.

The Core Web Vitals report in Search Console shows you which pages on your entire site are good, need improvement, or poor. This is the bird’s-eye view you need for monitoring trends over time and catching regressions before they tank your rankings.

Chrome DevTools (Lighthouse)

Built right into Chrome, Lighthouse runs a lab audit on your page and gives you performance scores along with actionable suggestions. Super helpful for debugging specific issues during development when you need to test changes in real time.

Chrome User Experience Report (CrUX)

CrUX is the dataset of real-user metrics that Google actually uses for ranking purposes. You can access it through PageSpeed Insights, the CrUX Dashboard, or the CrUX API. This is the ground truth, what Google is literally looking at when it evaluates your site.

Web Vitals JavaScript Library

If you want to track Core Web Vitals in your own analytics, Google’s open-source web-vitals library makes it super easy. A few lines of code and you’re measuring all three metrics from your actual visitors.

Pro tip: don’t just test on your shiny MacBook with a fiber connection. The real test is on a mid-range Android phone on a 4G connection. That’s where most of the world actually browses, and that’s what Google cares about.

Collage of Core Web Vitals measurement tools including PageSpeed Insights, Google Search Console, and Chrome DevTools Lighthouse

Quick Wins to Improve Your Scores

If your Core Web Vitals scores are looking rough and you need to make progress fast, here are some quick wins that tend to have the biggest bang for your buck:

  1. Compress and convert your images. Switch to WebP or AVIF, resize to the actual display size, and compress aggressively. This alone can shave seconds off your LCP.
  2. Add explicit dimensions to all images and videos. Width and height attributes or CSS aspect-ratio. This is hands down the fastest single fix for CLS issues.
  3. Defer non-critical JavaScript. Add defer or async to script tags that don’t need to run immediately. Move third-party scripts below the fold.
  4. Preload your LCP image. One line in your <head>: <link rel="preload" as="image" href="your-hero.webp">. That’s it.
  5. Use a CDN. Serving static assets from edge servers close to your users dramatically reduces TTFB and improves LCP across the board.
  6. Audit your third-party scripts. Remove anything you’re not actively using. That old analytics tag, that social widget nobody clicks, that A/B testing script from two years ago, just get rid of them.
  7. Enable browser caching. Set proper Cache-Control headers so returning visitors don’t have to re-download everything from scratch.
  8. Minimize font loading impact. Preload critical fonts, use font-display: swap, and consider cutting the number of font weights you’re loading.

The beautiful thing about Core Web Vitals is that small changes add up fast. You don’t always need a massive overhaul. Sometimes it’s just a handful of targeted fixes that take your scores from red to green.

If performance optimization feels overwhelming, or you just want someone to handle it properly, that’s literally what we do. We build websites with Core Web Vitals baked in from day one so you’re not scrambling to fix things after launch.

Developer optimizing website performance with code editor and performance metrics dashboard showing improving scores

Frequently Asked Questions

What are Core Web Vitals?

Core Web Vitals are three specific metrics Google uses to measure user experience: LCP (loading speed), INP (interactivity), and CLS (visual stability). They’re part of Google’s page experience ranking signals and directly influence how your site performs in search results.

Do Core Web Vitals affect SEO rankings?

Yes. Core Web Vitals are a confirmed Google ranking factor. While content quality is still the primary signal, better Core Web Vitals can give you an edge over competitors with similar content. Think of it as the tiebreaker.

What replaced First Input Delay (FID)?

Interaction to Next Paint (INP) replaced FID in March 2024. Unlike FID, which only measured the delay of the first interaction, INP measures responsiveness across all interactions during a page visit, giving a much more complete picture of how your site actually feels to use.

What’s a good LCP score?

Google considers an LCP of 2.5 seconds or less as “good.” Between 2.5 and 4 seconds needs improvement, and over 4 seconds is classified as poor. For most sites, optimizing images and server response time are the fastest ways to improve LCP.

How often should I check my Core Web Vitals?

At minimum, once a month. If you’re actively making performance changes, check weekly. Google Search Console’s Core Web Vitals report is the best tool for ongoing monitoring since it tracks real user data over time and flags regressions automatically.

Key Takeaways

Core Web Vitals aren't just a bunch of nerdy metrics. They directly impact how people experience your site and how Google ranks it. The good news? Most sites can make meaningful improvements without a complete rebuild.

  • LCP measures loading. Aim for under 2.5 seconds by optimizing images, server response time, and render-blocking resources.
  • INP measures responsiveness. Keep it under 200ms by reducing JavaScript work and breaking up long tasks.
  • CLS measures stability. Stay below 0.1 by setting image dimensions and reserving space for dynamic content.
  • They're a confirmed ranking factor. Treat Core Web Vitals as a core part of your SEO strategy, not an afterthought.
  • Start with quick wins. Image compression, preloading, and cleaning up third-party scripts will get you surprisingly far.
  • Need help getting your scores up? We build fast, optimized websites with Core Web Vitals baked in from the start.

Let's make your
website fly

We build websites that score green across all Core Web Vitals: fast, responsive, and rock-solid stable. Tell us about your project.