SS
All Guides
core web vitals

Core Web Vitals Guide: Optimize LCP, INP, and CLS for Better Rankings

Everything you need to know about Core Web Vitals and how to pass Google's page experience assessment.

SEO Scout Editorial TeamPublished April 1, 2026Reviewed June 1, 2026 · Editorial standards

Core Web Vitals are Google's standardized metrics for loading speed (LCP), interactivity (INP), and visual stability (CLS). They entered the SEO conversation in 2021 and replaced First Input Delay with INP in March 2024. They matter because Google includes them in page experience assessment — and because slow, janky pages lose conversions regardless of what algorithms do.

I've fixed Core Web Vitals on WordPress blogs, Shopify stores, and React SPAs. The fixes are usually boring: smaller images, fewer third-party scripts, reserved space for ads. The hard part is prioritization — not every failing URL deserves engineering time, and lab scores don't always match field data.

The Three Metrics, Plain Language

Largest Contentful Paint (LCP): How long until the largest visible content element (hero image, H1 block, video poster) renders. Good: 2.5 seconds or less at the 75th percentile of real users. Bad: over 4 seconds.

Interaction to Next Paint (INP): Responsiveness across all page interactions — clicks, taps, keyboard input — not just the first one. Good: 200ms or less at p75. Bad: over 500ms. INP replaced FID because single first-interaction measurement missed pages that felt sluggish after load.

Cumulative Layout Shift (CLS): How much unexpected layout movement happens during load. Good: 0.1 or less at p75. Bad: over 0.25. Classic causes: images without dimensions, web fonts swapping in, ads injecting late.

Google evaluates at the 75th percentile of page loads — your slowest quarter of real users in CrUX field data, not your developer on fiber. That distinction changes which fixes matter.

Lab Data vs. Field Data

Lab data (Lighthouse, PageSpeed Insights simulated throttling) is reproducible and debuggable. Use it during development.

Field data (Chrome User Experience Report, Search Console Core Web Vitals report) reflects real users on real devices and networks. Google uses field data for ranking assessment when enough data exists.

A page can pass Lighthouse and fail CrUX — common on sites with traffic from older Android devices on 3G in markets you forgot to test. Check Search Console first for URLs with "Poor" or "Needs improvement" status and sufficient impressions. Fix those before optimizing pages Lighthouse already scores green.

Estimate impact of changes with the Core Web Vitals simulator before shipping to production.

Fixing LCP

Identify the LCP element with PageSpeed Insights or Chrome DevTools Performance panel. Usually it's a hero image, a large text block waiting on web fonts, or a slider's first slide.

High-impact LCP fixes ranked by how often they work:

  • Serve images in WebP/AVIF with responsive srcset — don't ship 4000px images to mobile
  • Preload the LCP image: <link rel="preload" as="image" href="..." fetchpriority="high">
  • Eliminate render-blocking CSS/JS above the fold — inline critical CSS or defer non-critical stylesheets
  • Use a CDN with HTTP/2 or HTTP/3 and cache static assets aggressively
  • Reduce server response time (TTFB) — slow WordPress queries and uncached SSR pages blow LCP before the browser paints anything

Client-side rendered SPAs often fail LCP because the hero content waits on JavaScript bundles. Server-side render the above-fold content or statically generate marketing pages. See our technical SEO guide for JavaScript rendering implications.

Fixing INP

INP failures come from main-thread blocking: long JavaScript tasks, heavy event handlers, large DOM sizes, and third-party scripts (chat widgets, analytics, A/B testing platforms) firing on every interaction.

Practical INP improvements:

  • Break long tasks with requestIdleCallback or code splitting — don't parse 800KB of JS before the page responds to clicks
  • Defer non-critical third-party scripts until after user engagement or scroll
  • Audit event listeners on interactive elements — delegation beats 500 individual handlers on list items
  • Reduce DOM depth and node count on long infinite-scroll pages
  • Test on mid-range Android devices, not just your M-series MacBook

INP is harder to fix than LCP on mature codebases because it requires JavaScript architecture changes, not just image compression. Prioritize templates with the most traffic and the worst p75 INP.

Fixing CLS

CLS is the most fixable metric when you commit to layout discipline:

  • Always set width and height on images and videos, or use aspect-ratio CSS so space is reserved before load
  • Reserve ad slot dimensions — never let ad iframes inject at unknown sizes
  • Use font-display: optional or preload fonts to reduce FOIT/FOUT shifts
  • Don't inject banners (cookie consent, promo bars) above existing content after paint — animate from reserved space or use overlays
  • Avoid inserting DOM nodes above the current viewport scroll position after load

CLS fixes are often CSS-only and ship without backend changes — good quick wins for marketing sites with ad slots and embed-heavy layouts.

Third-Party Scripts: The Usual Suspect

Tag managers loading fifteen analytics, heatmap, chat, and personalization scripts are the single most common Core Web Vitals killer I encounter on otherwise well-built sites. Each script is "just 30KB" until they stack into multi-second main-thread blocks.

Audit third parties quarterly. Remove scripts nobody looks at. Load chat widgets on interaction. Move analytics to server-side where possible. Your marketing team will resist — bring CrUX data showing mobile p75 LCP and conversion correlation, not Lighthouse scores they don't understand.

Core Web Vitals and SEO Ranking Impact

Google confirmed page experience signals including Core Web Vitals are used in ranking. They describe the weight as relatively small compared to relevance and content quality — meaning a page that perfectly answers the query can outrank a faster page that doesn't.

Where CWV tips rankings: competitive SERPs where content quality is comparable, YMYL queries where trust signals compound, and sites on the border of page-one versus page-two. Where CWV rarely saves you: thin content, wrong intent match, zero backlinks on a competitive term.

Don't ignore CWV because the ranking boost is "small." Conversion rate impact is not small. A 0.3s LCP improvement on a checkout funnel pays for itself without any ranking change.

Template-Level Optimization Strategy

Don't optimize URLs one by one. Group by template: homepage, category, product, blog post, landing page. Fix the shared layout (header, fonts, global scripts) once. Then fix template-specific LCP elements (category hero, product gallery, featured image).

Search Console's Core Web Vitals report groups by URL groups when patterns are similar. Start with the largest failing group by impression count.

Monitoring After Deploys

CrUX data lags by 28 days. After deploying performance fixes, use lab tools immediately to confirm improvement, then watch Search Console field data over the next month. Don't declare victory from a single Lighthouse run.

Set performance budgets in CI: fail builds when Lighthouse performance drops below threshold on key templates. The SEO Scout extension surfaces Core Web Vitals on any page you browse — handy for spot-checking competitor performance or staging URLs.

Connection to SERP and Technical SEO

Page experience doesn't change how your title appears in search results — that's SERP optimization. Technical SEO ensures Google can crawl and index your fast pages — blocked resources in robots.txt can prevent Google from seeing your optimized experience. Test robots rules with the robots.txt tester.

Structured data and rich results render independently of CWV, but slow pages with FAQ schema still lose users after the click. See structured data guide for markup; fix speed separately.

Image and Font Optimization Deep Dive

Images dominate LCP on content-heavy sites. Beyond format conversion, implement responsive images with srcset and sizes so mobile devices don't download desktop hero assets. Compress aggressively — modern AVIF at quality 50 often beats JPEG at quality 85 visually while halving bytes.

Web fonts block text rendering and cause CLS when swap occurs. Subset fonts to the character sets you actually use. Preload only the weights used above the fold. System font stacks for body copy with a single display font for headings is a legitimate performance strategy on content sites where brand typography matters less than speed.

CDN, Caching, and TTFB

LCP cannot beat slow server response. If TTFB exceeds 600ms, fix backend caching before tweaking image preload tags. Full-page caching for anonymous visitors, object caching for database-heavy CMS platforms, and edge caching for static assets are table stakes. SSR frameworks need incremental static regeneration or edge rendering for marketing pages that don't require real-time personalization.

Verify caching headers with curl or browser DevTools Network tab. Assets without long cache-control max-age force repeat downloads for returning visitors, inflating LCP on subsequent visits in lab tests and hurting repeat-user experience in the field.

Honest Limitations

You cannot guarantee "green" CrUX on every URL without controlling user devices and networks. Single-page apps with heavy interactivity may always struggle with INP on low-end hardware. Accept "needs improvement" on long-tail URLs with 50 monthly visits and focus engineering on templates driving revenue.

Performance plugins that lazy-load everything including LCP images often make LCP worse. Test before and after — "optimization" plugins are not universally good.

Share CrUX URLs from Search Console with your development team so they see the same field data Google uses. Lab Lighthouse scores alone create false confidence when production users on mid-tier Android devices experience a different site than engineers testing on localhost. Treat field data as the scoreboard and lab data as the practice field.

Frequently Asked Questions

What replaced First Input Delay (FID)?

Interaction to Next Paint (INP) replaced FID as a Core Web Vital in March 2024. INP measures responsiveness across all interactions during a page visit, not just the first click. FID is deprecated for CWV assessment.

Do Core Web Vitals affect mobile and desktop separately?

Yes. Google assesses mobile and desktop separately when sufficient CrUX data exists for each. Mobile often fails first due to slower devices and networks. Search Console reports them independently.

Can a perfect Lighthouse score guarantee good rankings?

No. Lighthouse is lab data with simulated throttling — useful for debugging, not the same as CrUX field data Google uses for page experience. You can score 100 in Lighthouse and still show 'Poor' in Search Console if real users on slow devices struggle.

How long after fixes will Search Console update?

CrUX field data updates on a rolling 28-day window. Expect gradual improvement over weeks after deploy, not overnight status changes. Use lab tools for immediate verification; CrUX for ranking-relevant confirmation.

Should I lazy-load above-the-fold images?

Generally no. Lazy-loading the LCP image delays the metric you're trying to improve. Lazy-load below-fold images only. Preload and prioritize the LCP element with fetchpriority='high' when appropriate.

Sources

  1. web.dev — Core Web Vitals overview
  2. web.dev — Largest Contentful Paint (LCP)
  3. web.dev — Interaction to Next Paint (INP)
  4. web.dev — Cumulative Layout Shift (CLS)
  5. Google Search Central — Page experience
  6. Chrome User Experience Report documentation

Related Resources

Core Web Vitals Guide: Optimize LCP, INP, and CLS for Better Rankings | SEO Scout