September 22, 2025
12 min read
Google has made performance a ranking factor. Here is everything you need to know about LCP, INP, CLS—and how to optimize for metrics that actually matter.

Pio Greeff
Founder & Lead Developer
Deep dive article
There was a time when website performance was a nice-to-have. A fast site was appreciated, but a slow site would still rank, still convert, still function. Those days are over.
Since Google officially incorporated Core Web Vitals into its ranking algorithm in 2021, performance has become a first-class SEO signal. A site that fails Core Web Vitals is actively penalized in search results. In 2025, with competition fiercer than ever, you cannot afford to give Google a reason to rank you lower.
But beyond SEO, performance directly impacts your bottom line. Amazon famously calculated that every 100ms of latency cost them 1% in sales. For smaller businesses, the proportional impact is often even larger—users on mobile connections have less patience and more alternatives.
This guide will break down exactly what Core Web Vitals are, how Google measures them, and practical strategies for optimizing each metric.
Core Web Vitals consist of three metrics, each measuring a different aspect of user experience:
Core Web Vitals
Performance metrics for SEO
Largest Contentful Paint
LCP
4.5
s
Poor
Interaction to Next Paint
INP
450
ms
Needs Work
Cumulative Layout Shift
CLS
0.28
Poor
What it measures: Loading performance—how long until the largest visible content element renders.
Target: 2.5 seconds or less
LCP answers the question: "When did the main content appear?" The "largest content" is typically your hero image, hero video, or the main heading block. Users perceive this moment as "the page has loaded," even if background scripts are still running.
Common LCP killers:
Optimization strategies:
<link rel="preload"> for your LCP image. Ensure your CSS is inlined or loaded with high priority.media attributes to prevent blocking.What it measures: Responsiveness—how long until the browser responds to user input.
Target: 200 milliseconds or less
INP replaced First Input Delay (FID) in March 2024 as the official responsiveness metric. While FID only measured the first interaction, INP measures all interactions throughout the page lifecycle and reports the worst one.
This is a more honest metric. A page might respond quickly to the first click but become sluggish after JavaScript initializes. INP catches that.
Common INP killers:
Optimization strategies:
requestIdleCallback or setTimeout to split JavaScript into chunks under 50ms.What it measures: Visual stability—how much the page layout shifts unexpectedly during loading.
Target: 0.1 or less
CLS quantifies the frustration of clicking a button just as the page shifts and you accidentally click an ad. Or trying to read an article while ads and images push the text down the page.
Common CLS killers:
Optimization strategies:
width and height attributes or CSS aspect-ratio to reserve space.font-display: swap with matched fallback fonts, or preload critical fonts.Google collects Core Web Vitals data from two sources:
The Chrome User Experience Report (CrUX) aggregates anonymized performance data from real Chrome users who have opted into sharing. This is the data Google uses for ranking.
Field data reflects real-world conditions—slow phones, congested networks, diverse geographies. Your lab tests might show green scores, but if real users on budget Android devices in rural areas are having a bad experience, that's what counts.
Tools like Lighthouse, PageSpeed Insights, and WebPageTest run controlled tests in simulated environments. Lab data is useful for debugging and development but does not directly affect rankings.
Pro tip: Always check your CrUX data in Search Console or PageSpeed Insights. The "Origin Summary" shows how Google actually perceives your site's performance.
Google scores Core Web Vitals at the 75th percentile of page loads. This means 75% of your users must have a good experience for the metric to pass.
This is intentional. A site that's fast for users on fiber in San Francisco but slow for users on 5G in Mumbai doesn't pass. You need to optimize for your slowest users, not your fastest.
This is why global CDNs, image optimization, and lightweight JavaScript bundles matter so much. You're optimizing for the long tail of your user base.
Modern JavaScript frameworks have a complicated relationship with Core Web Vitals.
The Problem:
React, Vue, Angular, and similar frameworks ship significant JavaScript bundles. Hydration—the process of making server-rendered HTML interactive—can block the main thread and tank INP scores. Client-side rendering can delay LCP until JavaScript executes.
The Solutions:
At grEEff.dev, we evaluate the right architecture for each project. A marketing site might use Astro for near-zero JavaScript. A complex web application might use Next.js with aggressive code splitting. The answer is never one-size-fits-all.
Here is a condensed checklist for improving Core Web Vitals:
For LCP:
<link rel="preload"> for LCP imageFor INP:
For CLS:
Core Web Vitals are not a one-time fix. Performance degrades over time as new features, scripts, and content are added. You need continuous monitoring.
Recommended tools:
Set performance budgets. Alert when they're exceeded. Make performance part of your definition of done.
Let me leave you with the business case for Core Web Vitals optimization.
Performance is not a technical concern—it is a business concern. Every millisecond counts.
Core Web Vitals
Performance metrics for SEO
PASSED
Largest Contentful Paint
LCP
1.8
s
Good
Interaction to Next Paint
INP
120
ms
Good
Cumulative Layout Shift
CLS
0.03
Good
If your Core Web Vitals are in the red, you're leaving money on the table. If you're not measuring them, you're flying blind.
Start measuring. Start optimizing. Your users—and your search rankings—will thank you.
Found this useful?
Share it with your network