← CodeClarityLab Home
Browse by Category
+ added · updated 7d
← Back to glossary

Core Web Vitals

performance Intermediate

Also Known As

CWV web vitals page experience LCP INP CLS Google page experience core vitals

TL;DR

Google's three field-measured performance metrics — LCP (loading), INP (interactivity), CLS (visual stability) — used as direct search ranking signals since 2021.

Explanation

Core Web Vitals are a subset of Web Vitals chosen by Google because they best correlate with real user perception of page quality. LCP (Largest Contentful Paint) measures how fast the main content loads — target under 2.5s. INP (Interaction to Next Paint, replaced FID in March 2024) measures responsiveness to all user interactions — target under 200ms. CLS (Cumulative Layout Shift) measures visual stability — target under 0.1 (unexpected layout shifts that frustrate users). The critical distinction: Lighthouse measures lab performance (simulated conditions); Chrome User Experience Report (CrUX) measures field performance (real users). Google's ranking signal uses field data, not lab scores — a page can score 95 in Lighthouse and still fail Core Web Vitals in the field due to real user device and network conditions.

Common Misconception

A high Lighthouse score means passing Core Web Vitals — Lighthouse measures simulated lab conditions; Google's ranking signal uses real-user field data from CrUX, which reflects actual devices and network speeds; lab and field scores regularly diverge significantly.

Why It Matters

Google confirmed Core Web Vitals as a ranking signal in 2021 — pages failing CWV thresholds are disadvantaged in search rankings compared to equivalent content on pages that pass, directly affecting organic traffic.

Common Mistakes

  • Optimising only for Lighthouse scores while ignoring CrUX field data — real users on mid-range Android devices on 4G often have dramatically worse scores.
  • Lazy-loading the LCP image — the largest above-fold image must load immediately; lazy loading it is the single most common LCP regression.
  • Late-loading content above existing content — ads, cookie banners, and embeds injected after load cause CLS if they push down visible content.
  • Heavy JavaScript event handlers — long-running JS on click or touch delays INP even if the page loads quickly.
  • No explicit image width and height — browser cannot reserve space, images load and shift content (CLS).

Avoid When

  • Do not use Lighthouse as the sole measure of Core Web Vitals compliance — lab data does not reflect real user conditions.
  • Do not lazy-load above-fold images in the name of performance — it directly harms LCP.

When To Use

  • Use Core Web Vitals as the primary performance benchmark for any public-facing web page.
  • Measure field data in CrUX or PageSpeed Insights as the authoritative source — not Lighthouse lab scores.
  • Prioritise LCP fixes first (loading), then CLS (layout stability), then INP (interactivity).

Code Examples

✗ Vulnerable
<!-- LCP regression: lazy loading the hero image -->
<img src="hero.jpg" alt="Hero" loading="lazy">

<!-- CLS regression: no image dimensions -->
<img src="product.jpg" alt="Product">

<!-- CLS regression: content injected above existing content -->
<script>
  // After load, inject banner at top of page
  document.body.insertBefore(banner, document.body.firstChild);
</script>
✓ Fixed
<!-- LCP fix: eager + high priority -->
<img src="hero.jpg" alt="Hero" fetchpriority="high" loading="eager"
     width="1200" height="600">

<!-- CLS fix: explicit dimensions + lazy for below-fold -->
<img src="product.jpg" alt="Product" loading="lazy"
     width="400" height="400">

<!-- CLS fix: reserve space for injected content -->
<div style="min-height: 60px">
  <!-- Banner loads here without shifting content -->
</div>

Added 6 Apr 2026
Views 20
Rate this term
No ratings yet
🤖 AI Guestbook educational data only
| |
Last 30 days
0 pings W 0 pings T 0 pings F 0 pings S 1 ping S 0 pings M 2 pings T 0 pings W 0 pings T 0 pings F 0 pings S 1 ping S 0 pings M 0 pings T 0 pings W 0 pings T 0 pings F 0 pings S 0 pings S 0 pings M 3 pings T 0 pings W 2 pings T 0 pings F 0 pings S 1 ping S 1 ping M 0 pings T 1 ping W 0 pings T
No pings yet today
Google 6 SEMrush 4 ChatGPT 2 Perplexity 1 Ahrefs 1 Qwen 1
crawler 14 crawler_json 1
DEV INTEL Tools & Severity
🟠 High ⚙ Fix effort: Medium
⚡ Quick Fix
Check CrUX field data in PageSpeed Insights (not just Lighthouse); fix LCP by preloading hero image; fix CLS by adding width/height to images; fix INP by reducing main-thread JavaScript
📦 Applies To
html web
🔍 Detection Hints
No fetchpriority='high' on largest above-fold image; images without width/height; content injected after load
Auto-detectable: ✓ Yes lighthouse pagespeed-insights crux-dashboard chrome-devtools
⚠ Related Problems
🤖 AI Agent
Confidence: Medium False Positives: Medium ✗ Manual fix Fix: High Context: File

✓ schema.org compliant