Back to Blog

Core Web Vitals Explained: A Non-Technical Guide to Website Performance

9 min read Nick Ashkar

53% of mobile visits get abandoned if a page takes more than 3 seconds to load. That's not a gut feeling — it's Google's own research from their mobile speed study. Half your potential customers are leaving before they've seen a single word you've written.

Core Web Vitals are Google's attempt to turn that problem into measurable, actionable numbers. Since 2021 they've been an official ranking factor, which means your page speed isn't just a user experience problem anymore — it's an SEO problem too.

This guide explains what each metric actually measures, why it matters, how to check your scores, and what to fix first.


What Core Web Vitals Are (and Aren't)

Core Web Vitals are three specific performance metrics that Google decided represent real-world user experience better than older measurements like page load time. They're part of a broader set called "Page Experience signals," but these three carry the most weight.

They're not about your server's technical specs or how clever your code is. They're measured from the perspective of an actual user sitting with a real device on a real network. That distinction matters.

The three metrics are LCP (Largest Contentful Paint), INP (Interaction to Next Paint), and CLS (Cumulative Layout Shift). Each one captures a different dimension of the experience of using a page.


LCP — Largest Contentful Paint

What it measures

LCP measures how long it takes for the biggest visible element on your screen to fully load. That element is usually a hero image, a large heading, or a video thumbnail. The idea is that once the biggest thing is loaded, the user perceives the page as usable.

The thresholds

  • Good: Under 2.5 seconds
  • Needs improvement: 2.5–4 seconds
  • Poor: Over 4 seconds

Why pages fail LCP

The most common culprit is an unoptimized hero image. A 2MB JPEG that hasn't been converted to WebP, isn't properly sized for mobile, and wasn't marked for priority loading can add 2-3 seconds on its own. Slow server response times are the second biggest factor — if your hosting takes 1.5 seconds just to send the first byte of HTML, you're already behind before anything else loads.

How to fix it

  • Convert hero images to WebP or AVIF format (typically 40-60% smaller than JPEG)
  • Add loading="eager" and fetchpriority="high" to your LCP image element
  • Use a CDN so assets are served from servers close to your users
  • Enable server-side caching to reduce time-to-first-byte
  • Remove render-blocking CSS and JavaScript that delays the browser from painting anything

INP — Interaction to Next Paint

What it measures

INP replaced FID (First Input Delay) in March 2024. Where FID only measured the first click on a page, INP tracks the responsiveness of every interaction across the entire visit — clicks, taps, keyboard input. It records the slowest interaction and uses that as your score.

In plain terms: if clicking your navigation menu ever makes the page freeze for 400ms, that shows up in your INP even if everything else is snappy.

The thresholds

  • Good: Under 200 milliseconds
  • Needs improvement: 200–500 milliseconds
  • Poor: Over 500 milliseconds

Why pages fail INP

Heavy JavaScript is almost always responsible. The browser's main thread — the one that handles both rendering and code execution — gets blocked when large scripts are running. A click happens, but the browser can't respond because it's busy parsing a 500KB analytics bundle.

Third-party scripts are a common trap here. A chat widget, an ad network, a marketing automation tag — each one competes for main thread time. Four or five of them running simultaneously can make an otherwise fast page feel sluggish.

How to fix it

  • Audit third-party scripts and remove anything that isn't earning its keep
  • Defer non-critical JavaScript with defer or async attributes
  • Break up long tasks — any JavaScript function that runs for more than 50ms should be split into smaller pieces
  • Use a web worker for computationally heavy operations so they don't block the main thread

CLS — Cumulative Layout Shift

What it measures

CLS measures visual stability. Every time an element on your page moves unexpectedly after the page has loaded — an ad pops in and pushes text down, a font swap changes paragraph height, an image loads and shifts the button below it — that counts as a layout shift. CLS is the cumulative score of all those shifts.

If you've ever gone to click a button and then a banner appeared above it at the last second, sending your click somewhere unintended — that's the experience CLS is measuring.

The thresholds

  • Good: Under 0.1
  • Needs improvement: 0.1–0.25
  • Poor: Over 0.25

Why pages fail CLS

Images and embeds without explicit width and height attributes are the biggest cause. When the browser doesn't know how big an image is before it loads, it can't reserve space for it. So it renders the text first, then moves everything when the image arrives. Banner ads injected by ad networks are another frequent offender — they appear after the page loads and shove content around.

How to fix it

  • Always set explicit width and height attributes on images and video elements
  • Use CSS aspect-ratio to reserve space for dynamic content
  • Preload custom fonts and use font-display: optional to prevent font-swap shifts
  • Avoid inserting content above existing content after page load
  • Reserve space for ad slots with fixed-height containers even before ads load

How to Measure Your Scores

PageSpeed Insights

The fastest way to check any URL. Go to pagespeed.web.dev and paste your URL. You get two sets of data: Lab data (a simulated test run right now) and Field data (real user measurements collected over the last 28 days). Field data is what Google actually uses for ranking — lab data is useful for diagnosing issues.

Test your most important pages individually. Your homepage, your main product page, and your highest-traffic blog post. They can have very different scores.

Chrome UX Report (CrUX)

CrUX is the dataset Google uses for Field data. It aggregates real user measurements from Chrome browsers (when users have opted into sharing usage statistics). You can query it directly through Google Search Console under "Core Web Vitals" or via the CrUX dashboard in Google Looker Studio.

One important limitation: CrUX only has data for URLs with enough traffic to provide statistically meaningful results. If your page is new or low-traffic, you might see "insufficient data" — in that case, rely on Lab data.

Google Search Console

If you have Search Console set up, check the "Core Web Vitals" report under "Experience." It groups your pages into Good, Needs Improvement, and Poor buckets and tells you which specific metric is failing on which page groups. This is the most actionable view for prioritizing fixes.

Lighthouse in Chrome DevTools

Open Chrome DevTools (F12), go to the Lighthouse tab, and run an audit. It gives you detailed diagnostics and specific recommendations for every issue it finds. This is best for development — you can test changes before deploying them.


What "Good" Actually Means

Passing all three metrics at "Good" thresholds puts your page in roughly the top 30% of pages on the web. The bar is low because most websites are slow — which means there's real competitive advantage available if you do the work.

Sites passing all three Core Web Vitals thresholds are 24% less likely to have users abandon the page. That's not a small number. If your site converts at 2% and you're losing 24% fewer visitors to abandonment, you're looking at a meaningful lift in actual revenue from the same traffic.

"The sites winning in search aren't necessarily the ones with the most content. They're the ones delivering the best experience to users who arrive."

Prioritization: Where to Start

Don't try to fix everything at once. Here's the order that typically gives the best return:

  1. LCP first. A slow-loading page is the most damaging problem — users leave before they see anything. Image optimization and server caching usually give the biggest LCP gains for the least effort.
  2. CLS second. Layout shifts are often caused by missing image dimensions, which is a 5-minute fix with significant impact.
  3. INP third. JavaScript optimization is the most technical of the three and often requires a developer. Do this after the wins from LCP and CLS are locked in.

Run PageSpeed Insights today on your three most important pages. You'll see immediately which metric is dragging your score and what Google recommends fixing. Most sites have one or two dominant problems — solve those and you'll move from red to green faster than you'd expect.

If you want a fuller picture of your site's SEO health beyond page speed, the Cirvgreen Schema Audit Tool checks your structured data implementation alongside technical SEO signals. Performance monitoring integration is coming — subscribe below to hear when it launches.