What Are Core Web Vitals?
Core Web Vitals are a set of three specific metrics Google uses to measure real-world user experience on your website. They quantify how fast your page loads, how quickly it responds to interaction, and how visually stable it feels while loading. Google confirmed these metrics as ranking signals in 2021, and they have only grown in importance since.
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 user experience. Together, they give Google a standardized way to compare how well any two websites serve their visitors.
This is not an abstract concept. We have seen sites move from page two to page one within weeks of fixing Core Web Vitals issues -- particularly when their competitors had not addressed theirs. If your site is on the edge of ranking for competitive terms, these metrics can be the tiebreaker.
Largest Contentful Paint (LCP)
LCP measures how long it takes for the largest visible element in the viewport to finish rendering. In practice, this is usually a hero image, a large headline block, or a featured video thumbnail. It answers the question: "How long before the user sees the main content of this page?"
Thresholds:
- Good: Under 2.5 seconds
- Needs Improvement: 2.5 to 4.0 seconds
- Poor: Over 4.0 seconds
LCP is the metric most directly tied to perceived load speed. When users say a site "feels slow," they are almost always describing a poor LCP experience.
What Causes Poor LCP
The most common culprits we see on client sites:
- Unoptimized images. A 3 MB hero image served at full resolution to a mobile device will obliterate your LCP score. Convert to WebP, serve responsive sizes via srcset, and compress aggressively. Most hero images render identically at 80% quality.
- Slow server response time (TTFB). If your server takes 1.5 seconds just to begin sending HTML, you have already burned 60% of your LCP budget before the browser even starts rendering. Upgrade hosting, implement server-side caching, or use a CDN.
- Render-blocking resources. CSS and JavaScript files in the document head that must be downloaded and parsed before the browser can render anything. Inline critical CSS directly in the HTML and defer everything else.
- Client-side rendering. Single-page applications that rely on JavaScript to build the page after load consistently produce worse LCP scores than server-rendered HTML. If LCP is a priority, render the initial view on the server.
Interaction to Next Paint (INP)
INP replaced First Input Delay (FID) as a Core Web Vital in March 2024. Where FID only measured the delay of the first interaction, INP tracks responsiveness across the entire page session. Every click, tap, and keyboard input is measured. The metric reports the worst interaction (with some statistical smoothing to ignore extreme outliers).
Thresholds:
- Good: Under 200 milliseconds
- Needs Improvement: 200 to 500 milliseconds
- Poor: Over 500 milliseconds
INP matters because users interact with your site many times per visit. A form that freezes for 400ms after every keystroke, a navigation menu that takes half a second to respond to a tap -- these experiences drive people away even if the initial load was fast.
What Causes Poor INP
- Long JavaScript tasks. Any JavaScript task that runs for more than 50ms blocks the main thread and delays the browser from responding to user input. Break large functions into smaller chunks and yield to the browser between them.
- Heavy third-party scripts. Analytics platforms, chat widgets, ad scripts, and social media embeds frequently execute heavy JavaScript on every interaction. Audit your third-party scripts ruthlessly. Each one has a cost.
- Excessive DOM size. Pages with more than 1,500 DOM nodes force the browser to do more work on every layout recalculation. Simplify your HTML structure. Remove unnecessary wrapper divs. Lazy-load content that is not immediately visible.
Cumulative Layout Shift (CLS)
CLS measures visual stability. Every time a visible element shifts position unexpectedly during a page session, a layout shift score is recorded. CLS aggregates the worst window of layout shifts into a single number.
Thresholds:
- Good: Under 0.1
- Needs Improvement: 0.1 to 0.25
- Poor: Over 0.25
Layout shift is the metric users notice most viscerally. You are reading an article, the page jumps, and suddenly you have lost your place. You go to tap a button and an ad loads above it, pushing the button down so you tap the ad instead. These experiences erode trust.
What Causes Poor CLS
- Images and iframes without dimensions. If the browser does not know an image's aspect ratio before it loads, it reserves zero space, then shifts everything down when the image arrives. Always set explicit width and height attributes on images and iframes.
- Dynamically injected content. Banners, cookie consent bars, and promotional elements that insert themselves above existing content cause shifts. Reserve space for dynamic elements or inject them in ways that do not push visible content.
- Web fonts loading late. When a custom font finishes loading and replaces the fallback font, the text often reflows because the two fonts have different metrics. Use
font-display: swappaired with a size-adjusted fallback font, or preload your fonts.
Why Core Web Vitals Matter for Rankings
Google has been explicit: Core Web Vitals are a ranking factor. But the nuance matters. Content relevance still dominates. A page with perfect vitals and thin content will not outrank a comprehensive resource with mediocre vitals.
Where vitals become decisive is in competitive queries where multiple pages have comparable content quality. If you and three competitors all have strong, relevant content targeting "Edmonton web design," and your site loads in 1.2 seconds while theirs load in 4+ seconds, you have an edge.
We see this pattern repeatedly in our web design practice. After rebuilding a client's site with performance as a core constraint -- server-rendered HTML, optimized images, minimal JavaScript -- rankings improve even without changing the content. The content was already good. The delivery was the bottleneck.
How to Measure Your Core Web Vitals
Field Data vs. Lab Data
There are two types of Core Web Vitals data, and the distinction matters.
Field data comes from real users visiting your site. Google collects this through the Chrome User Experience Report (CrUX). This is the data Google actually uses for ranking decisions. You can see it in Google Search Console under the Core Web Vitals report, or query it through PageSpeed Insights.
Lab data comes from simulated page loads using tools like Lighthouse, Chrome DevTools, or WebPageTest. Lab data is consistent and reproducible, which makes it invaluable for debugging. But it does not directly influence rankings because it does not reflect real user conditions.
Use field data to identify which pages have problems. Use lab data to diagnose and fix the specific causes.
Tools We Use
- Google Search Console -- Core Web Vitals report shows which pages pass and fail based on field data. Start here for the big picture.
- PageSpeed Insights -- Combines CrUX field data with Lighthouse lab data for a single URL. Shows both your scores and specific optimization opportunities.
- Chrome DevTools Performance panel -- For deep debugging. Record a page load or interaction and inspect exactly what happens at the millisecond level.
- WebPageTest -- Advanced lab testing with control over connection speed, device type, and test location. Useful for testing before/after optimization changes.
How to Improve Each Metric
We wrote a detailed breakdown of how page speed directly affects your conversion rates. But here is the tactical summary for each vital:
Improving LCP
- Audit your largest above-the-fold element on key pages
- Optimize that element specifically -- compress images, preload resources, reduce server response time
- Eliminate render-blocking CSS and JS using async/defer loading
- Implement a CDN if your audience is geographically distributed
- Consider server-side rendering if you currently use a JavaScript-heavy framework
Improving INP
- Profile interactions with Chrome DevTools to identify which events are slow
- Break long JavaScript tasks into smaller, yielding chunks
- Remove or defer non-essential third-party scripts
- Reduce DOM complexity -- fewer nodes means faster layout calculations
- Use web workers for computationally heavy operations that do not need DOM access
Improving CLS
- Add explicit width and height attributes to every image and iframe
- Preload fonts and use font-display: swap with size-adjusted fallbacks
- Reserve space for ads, embeds, and dynamically loaded content
- Avoid inserting content above the viewport after initial render
- Test on slow connections where late-loading elements are more likely to cause shifts
Core Web Vitals and Your Technical SEO
Core Web Vitals do not exist in isolation. They are one layer of a broader technical SEO foundation. If your site has crawlability issues, broken canonical tags, or missing structured data, fixing vitals alone will not rescue your rankings. Our technical SEO checklist covers the full stack of technical optimizations that work together with vitals to improve organic performance.
The sites that rank consistently well in competitive markets are the ones that treat performance as a design constraint, not an afterthought. Build fast from the start and you avoid the painful, expensive retrofit later.
What to Do Next
Check your Core Web Vitals in Google Search Console right now. If you see pages flagged as "Poor" or "Needs Improvement," those are costing you visitors and potentially rankings. The fixes are usually straightforward -- image optimization, script cleanup, layout stability adjustments -- but they require someone who knows what to look for.
If your site needs a performance overhaul or a ground-up rebuild with Core Web Vitals baked in from the start, our web design team builds every site against these thresholds. We do not launch until every page passes.