Core Web Vitals: The Only Guide That Doesn't Waste Your Time

Forget the 47-page whitepapers. Here's what actually matters for your Google rankings in 2026, explained like you're a human with a business to run.

Core Web Vitals illustration showing LCP, CLS and INP metrics with a speedometer

Let's be honest. You've probably Googled "how to fix Core Web Vitals" at least three times this month. Every single result was either a wall of text that made your eyes glaze over, or some agency trying to sell you a $5,000 performance audit. You closed the tab. You went back to Slack. Nothing got fixed.

Here's the thing: fixing your vitals isn't complicated. The problem is that the internet is drowning in technical jargon written by people who've never had to actually explain this to a client who just wants the damn website to work.

So let's skip the preamble. This is what Core Web Vitals actually are, why Google cares, and what you do about it today, not next quarter.

In this guide:
  1. LCP: Why your site loads like it's on dial-up
  2. CLS: The thing that makes people click the wrong button
  3. INP: The metric Google is obsessed with now
  4. How to actually measure your scores
  5. The 80/20 fixes that solve most problems
  6. The PageSpeed 100/100 myth (please read this)
  7. Do Core Web Vitals actually affect rankings?

LCP: Why Your Site Loads Like It's on Dial-Up

LCP — Largest Contentful Paint

The "Show Me the Money" Metric

LCP is just a fancy way of asking: how long until I see the actual content I came here for? Not the nav bar, not the cookie banner, not the footer. The main thing. The hero image, the headline, the product photo.

Google says 2.5 seconds is "good." 4 seconds is "needs improvement." Anything above that and you're in the red zone where people are already leaving and never coming back.

THE FIX

Compress your hero image to WebP, under 150KB. Preload it. Remove render-blocking scripts from your head. This solves the overwhelming majority of bad LCP scores.

The biggest culprit? Almost always the hero image. Someone uploaded a 4MB PNG from Photoshop in 2021, nobody touched it since, and now the site takes 6 seconds to paint anything meaningful. I've seen this on e-commerce sites with real traffic. Six. Whole. Seconds. People leave after 3.

What actually causes bad LCP

In rough order of how often I see them:

  1. Uncompressed hero images. A 3MB JPEG where a 90KB WebP does the same job. Extremely common.
  2. No preloading of the LCP image. The browser doesn't start downloading it until it finishes parsing HTML, which takes a while if scripts are blocking. Add <link rel="preload" as="image" href="hero.webp"> to your <head>.
  3. Slow server response (TTFB). If it takes 800ms just to get the first byte of HTML from your server, you're already behind before a single image has loaded. Upgrade hosting or add a CDN.
  4. Render-blocking CSS and JS. Scripts in <head> load before the page can draw anything. Every synchronous script is a wall the browser must climb before showing users anything at all.

The good news: fixing #1 (hero image compression) alone moves most sites from red to at least yellow. It's genuinely that impactful. We wrote a whole image compression guide with exact tools and step-by-step instructions.

LCP targets

Rating Time What it means
Good Under 2.5s Google is happy. Users are happy. Keep going.
Needs Work 2.5s to 4s You're leaving organic traffic on the table.
Poor Over 4s Fix this before you touch anything else. Seriously.

CLS: The Thing That Makes People Click the Wrong Button

📐

CLS — Cumulative Layout Shift

The Layout Shimmy

You're reading an article, you reach to click "Continue Reading," and suddenly an ad loads above the text and shoves everything down. You click "Buy Now" instead. You didn't want to buy anything. Congratulations, you're now the proud owner of a $49 cryptocurrency ebook from 2017.

That's CLS. It measures how much the page visually jumps around after it starts loading. Under 0.1 is good. Over 0.25 is genuinely bad and annoying.

THE FIX

Set explicit width and height on every image. Reserve space for ads and embeds. Stop letting content pop in above other content.

CLS is the one that makes your site feel scammy even when you're not doing anything wrong. If the page jumps around like it's had three espressos, people don't trust you. It's a gut reaction. No amount of great copy fixes that first impression.

The three most common CLS causes

1. Images without defined dimensions. When an image loads without a width and height, the browser doesn't know how much space to reserve. So it loads the text first, then the image pops in and shoves everything down. The fix is embarrassingly simple:

<!-- Bad: browser has no idea how tall this is -->
<img src="hero.webp" alt="Hero">

<!-- Good: browser reserves exact space before image loads -->
<img src="hero.webp" alt="Hero" width="1200" height="630">

2. Ads and third-party embeds. Third-party ads are the single biggest CLS offenders on the web. They load late, they load at different sizes, they shove everything around. If you can't remove them, at least wrap them in a container with a fixed min-height matching the typical ad size.

3. Web fonts swapping in late. When a custom font finishes downloading, the browser swaps it and text reflows. If the fallback font is radically different in size, this causes visible layout shift. Fix: use font-display: optional or preload your fonts. Check our resource loading guide for how.

CLS under 0.1 is the target. Most sites fix this in an afternoon by just adding width and height attributes to images and reserving ad space. It really is that fast.

INP: The Metric Google Is Obsessed With Now

👆

INP — Interaction to Next Paint

The Snappiness Test

INP replaced First Input Delay (FID) in March 2024. It doesn't just measure the first click on a page. It watches every single interaction throughout your whole visit and measures how long until the page visually responds.

Under 200ms is good. Over 500ms is poor. And bad INP is almost always JavaScript's fault.

THE FIX

Audit your plugins ruthlessly. Defer everything that can wait. Delete everything you're not actively using. Every unnecessary script is stealing milliseconds from user interactions.

Think of INP like pressing a button in an elevator and measuring how long until the floor light actually turns on. FID only measured the very first button press. INP watches every press, every floor, the whole ride. Stricter, and it catches problems FID completely missed.

The most common causes of bad INP:

The full fix is in our defer JavaScript guide. Short version: defer everything you don't need immediately, delete everything you haven't used in 90 days.

How to Actually Measure Your Scores

Before you fix anything, get a baseline. Here are the tools worth using, in order of usefulness:

VitalsFixer (free) — Run your URL, get a prioritized punch-list of what's broken. No waterfall charts, no academic jargon. Just "this image is 3MB, make it 90KB." Try it now.

Google PageSpeed Insights (free) — The source of truth since it's what Google uses. Shows both lab data (simulated) and field data (real users). Field data is more important. Lab data is for diagnosing specific issues.

Google Search Console (free) — Under "Core Web Vitals" in the sidebar, you'll see your actual field data grouped by URL. This is real-user data from Chrome browsers. This is what actually affects rankings. Check it monthly.

WebPageTest (free) — Better for deep debugging. Excellent filmstrip view shows exactly when each element loads. Use this when you need to understand the "why" behind a specific bad score.

One critical distinction: lab scores and field scores can differ significantly. Lab scores use a simulated slow device with throttled connection. Field scores reflect what your actual visitors experience. Google ranks you based on field data. So if your lab score is 45 but field data is "Good," you're actually fine from a ranking standpoint, even if that 45 looks scary.

Read our full tool comparison for a detailed breakdown of each option and when to use which.

The 80/20 Fixes That Solve Most Problems

After auditing a lot of sites, the same problems come up again and again. Here's where to start:

🎯

Do These First

These five things fix the majority of Core Web Vitals problems on most websites.

WordPress-specific quick wins

If you're on WordPress, here's the fastest path:

Not on WordPress? Same principles apply. Replace "plugin" with "npm package" or "third-party script." The concept is identical.

The PageSpeed 100/100 Myth (Please Read This)

Every so often someone posts a screenshot in a dev forum: "Got 100/100 on PageSpeed! My site is perfect!" Everybody claps. I quietly go back to my coffee because... that's not how this works.

PageSpeed Insights lab scores are not what Google uses for ranking. What matters is your Core Web Vitals field data. Specifically, what percentage of your real users experience "Good" scores for LCP, CLS, and INP.

You can have a PageSpeed score of 65 and rank absolutely fine, if your actual visitors see fast load times. You can have a score of 92 and still fail Core Web Vitals if real-world mobile users see slow LCP. I've seen both happen.

The lab score is a useful diagnostic tool. It is not the finish line. Stop chasing 100 and start checking your Google Search Console Core Web Vitals report instead. That's the data that actually moves your ranking.

Also worth mentioning: a score of 100 on a page with no real content is trivially easy to achieve. A blank HTML file will score 100. That's useless. The goal is a fast, functional website for real users, not a number on a simulated test.

Do Core Web Vitals Actually Affect Rankings?

Short answer: yes, but not the way most people think.

Google confirmed in 2021 that Core Web Vitals are a ranking signal through the "Page Experience" update. But they've been equally clear that content quality is still the primary factor. A well-researched article on a slightly slower site will often outrank thin content on a blazing-fast one.

Here's the more nuanced real-world picture: Core Web Vitals act as a tiebreaker. When two pages are roughly equal in content quality and relevance, the faster one tends to rank higher. And in competitive query spaces, that tiebreaker matters a lot.

There's also a very real indirect effect. Slow sites have higher bounce rates. Higher bounce rates mean fewer pages crawled, less dwell time, worse engagement signals. All of those affect rankings independently of the Page Experience signal itself.

So: fix your vitals not just because Google told you to, but because fast sites convert better, keep people on the page longer, and make ranking easier. The explicit ranking signal is almost a bonus at this point.

Google doesn't rank you on a score. They rank you on whether or not you're annoying their users. If your vitals are red, you're invisible. If they're green, you've got a seat at the table.

The Bottom Line

Core Web Vitals are not rocket science. They're not some dark mystery requiring a $10,000 agency retainer. They're mostly:

  1. Images that are too big. Compress them.
  2. Scripts that are blocking the page. Defer them.
  3. Elements without dimensions. Add width and height.
  4. Too much JavaScript running at once. Delete some of it.

Fix those four things and you'll solve the vast majority of Core Web Vitals problems on the vast majority of websites. The complex edge cases exist, but they're not where you start.

Start with your hero image. It's almost always the biggest win.

Ready to See What's Actually Broken?

Put your URL into VitalsFixer and get a punch-list of exactly what needs fixing. No nonsense, no waterfall charts.

Analyze My Site Free
VF

VitalsFixer Lab

We're a small team obsessed with web performance. We built VitalsFixer because we got tired of explaining waterfall charts to clients who just want to know what's slow and how to fix it. Now we send them a punch-list instead.

Keep Reading