grEEff.dev
ServicesWorkProcessPricingInsights
Start Your Project
Performance

September 22, 2025

12 min read

Core Web Vitals in 2025: The Complete Guide to Performance That Ranks

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

Pio Greeff

Founder & Lead Developer

Deep dive article

Performance Is No Longer Optional

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.

The Three Pillars of Core Web Vitals

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

1. Largest Contentful Paint (LCP)

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:

  • Unoptimized hero images (massive PNGs or uncompressed JPEGs)
  • Slow server response times (TTFB issues)
  • Render-blocking JavaScript and CSS
  • Third-party scripts loading before critical content

Optimization strategies:

  1. Optimize your hero image: Use modern formats (WebP, AVIF), appropriate sizing, and lazy loading for below-the-fold content only.
  2. Prioritize critical resources: Use <link rel="preload"> for your LCP image. Ensure your CSS is inlined or loaded with high priority.
  3. Reduce server response time: Upgrade your hosting, implement CDN caching, and optimize your backend queries. Learn more about our approach to performance.
  4. Minimize render-blocking resources: Defer non-critical JavaScript. Inline critical CSS or use media attributes to prevent blocking.

2. Interaction to Next Paint (INP)

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:

  • Heavy JavaScript execution blocking the main thread
  • Long hydration times in JavaScript frameworks
  • Poorly optimized event handlers
  • Layout thrashing (reading and writing DOM in loops)

Optimization strategies:

  1. Break up long tasks: Use requestIdleCallback or setTimeout to split JavaScript into chunks under 50ms.
  2. Optimize hydration: If you're using React, Next.js, or similar, explore partial hydration or islands architecture. Read about our approach to React.
  3. Remove unnecessary JavaScript: Audit your bundle. Remove unused dependencies. Question every third-party script.
  4. Use web workers: Offload heavy computation to background threads that don't block the main thread.
  5. Debounce and throttle: For scroll and input handlers, limit execution frequency.

3. Cumulative Layout Shift (CLS)

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:

  • Images without explicit dimensions
  • Ads, embeds, or iframes without reserved space
  • Web fonts causing text to reflow (FOIT/FOUT)
  • Dynamic content injected above existing content

Optimization strategies:

  1. Always set image dimensions: Use width and height attributes or CSS aspect-ratio to reserve space.
  2. Reserve space for ads and embeds: Use placeholder containers with fixed dimensions.
  3. Optimize font loading: Use font-display: swap with matched fallback fonts, or preload critical fonts.
  4. Avoid inserting content above the fold: If you must add banners or notices, use fixed positioning or animate them in without shifting content.

How Google Measures Core Web Vitals

Google collects Core Web Vitals data from two sources:

Field Data (Real User Monitoring)

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.

Lab Data (Synthetic Testing)

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.

The 75th Percentile Rule

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.

The Framework Factor

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:

  1. Server-Side Rendering (SSR): Render HTML on the server so LCP fires immediately. Next.js and Nuxt make this relatively painless.
  2. Static Site Generation (SSG): Pre-render pages at build time for maximum speed.
  3. Streaming SSR: Send HTML in chunks as it renders, improving Time to First Byte.
  4. React Server Components: In Next.js 13+, server components never ship JavaScript to the client, dramatically reducing bundle size.
  5. Islands Architecture: Frameworks like Astro only hydrate interactive components, leaving the rest as static HTML.

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.

Practical Optimization Checklist

Here is a condensed checklist for improving Core Web Vitals:

For LCP:

  • Hero image under 200KB, served in WebP/AVIF
  • <link rel="preload"> for LCP image
  • Critical CSS inlined or loaded with high priority
  • Server response time (TTFB) under 800ms
  • CDN enabled with edge caching

For INP:

  • JavaScript bundle under 200KB (gzipped)
  • No long tasks (>50ms) blocking main thread
  • Third-party scripts deferred or loaded asynchronously
  • Event handlers optimized (debounced, throttled)

For CLS:

  • All images have width/height or aspect-ratio
  • Web fonts preloaded with fallback sizing
  • Ad slots have reserved dimensions
  • No content injected above the fold after load

Monitoring and Continuous Improvement

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:

  • Google Search Console: The definitive source for how Google sees your CWV.
  • PageSpeed Insights: Quick checks with both lab and field data.
  • WebPageTest: Deep diagnostics and waterfall analysis.
  • Lighthouse CI: Automated performance testing in your CI/CD pipeline.
  • Real User Monitoring (RUM): Tools like Vercel Analytics, Cloudflare Web Analytics, or custom solutions using the Web Vitals library.

Set performance budgets. Alert when they're exceeded. Make performance part of your definition of done.

The Business Case

Let me leave you with the business case for Core Web Vitals optimization.

  1. SEO: Google has confirmed CWV is a ranking factor. All else equal, faster sites rank higher.
  2. Conversion: Faster pages convert better. The data is overwhelming and industry-agnostic.
  3. User Experience: Speed is a feature. Users notice and appreciate it.
  4. Cost Efficiency: Optimized sites use less bandwidth and server resources.

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