What Are Core Web Vitals?
Core Web Vitals are a set of specific metrics that Google considers important for a webpage's overall user experience. Introduced as a ranking signal in 2021, these metrics measure real-world user experience for loading performance, interactivity, and visual stability.
Unlike vanity metrics, Core Web Vitals are based on actual user data collected from Chrome users who have opted in to sharing usage statistics. This means Google measures how your real visitors experience your site, not just how fast it loads in lab conditions.
Why Core Web Vitals Matter
- Ranking Factor: CWV is a confirmed Google ranking signal as part of Page Experience
- User Experience: Sites with good CWV have lower bounce rates and higher engagement
- Conversion Rates: Studies show every second of delay reduces conversions by 7%
- Competitive Advantage: Many sites still fail CWV, creating opportunity for those who optimize
The Three Core Web Vitals
As of 2024, the three Core Web Vitals are:
- LCP (Largest Contentful Paint): Measures loading performance
- INP (Interaction to Next Paint): Measures interactivity (replaced FID in March 2024)
- CLS (Cumulative Layout Shift): Measures visual stability
Lab Data vs Field Data
Lab data (like Lighthouse) shows what could happen. Field data (CrUX) shows what actually happens for real users. Google uses field data for ranking, so that's what matters most. If you don't have enough traffic for field data, focus on improving lab scores.
The History of Core Web Vitals
Core Web Vitals were announced by Google in May 2020 and became a ranking signal in June 2021 as part of the "Page Experience" update. The metrics have evolved:
- 2020: Google announces CWV with LCP, FID, and CLS
- 2021: CWV becomes a ranking factor (desktop and mobile)
- 2023: Google announces INP will replace FID
- March 2024: INP officially replaces FID as a Core Web Vital
This shift from FID to INP reflects Google's focus on comprehensive interactivity measurement rather than just first input delay.
How Much Do Core Web Vitals Actually Affect Rankings?
Core Web Vitals are a confirmed ranking factor, but content relevance still matters more. According to Google, CWV acts as a "tiebreaker" when content quality is similar between competing pages. However, studies show:
- Pages passing all CWV have 24% fewer visitors abandoning before interaction (Google data)
- Sites in the top 10% for CWV see 10-15% higher organic traffic than average
- E-commerce sites with good CWV report up to 70% lower cart abandonment
The indirect benefits (lower bounce rates, higher engagement) often have a bigger impact than the direct ranking signal.
What LCP Measures
LCP measures the render time of the largest image, text block, or video visible within the viewport. It's essentially how long users wait to see the main content of your page. The "largest" element is typically a hero image, featured video, or main heading with large text.
LCP Score Thresholds
Common LCP Issues
- Slow server response times (TTFB)
- Render-blocking JavaScript and CSS
- Slow resource load times (large images)
- Client-side rendering delays
How to Fix LCP
-
1Optimize Server Response TimeUse a CDN, upgrade hosting, enable caching, and optimize database queries. Target TTFB under 200ms.
-
2Preload the LCP ElementAdd <link rel="preload"> for your hero image. This tells the browser to fetch it early.
-
3Optimize ImagesUse WebP format, compress images, and serve properly sized images based on viewport. Use srcset for responsive images.
-
4Remove Render-Blocking ResourcesDefer non-critical CSS and JavaScript. Inline critical CSS. Use async or defer attributes on scripts.
-
5Avoid Lazy Loading LCP ElementDon't lazy load your hero image. It should load immediately with the initial HTML.
Advanced LCP Optimization: Resource Hints
Beyond basic optimizations, resource hints can dramatically improve LCP:
- <link rel="preload">: Forces early loading of critical resources like hero images
- <link rel="preconnect">: Establishes early connections to required origins (CDNs, font servers)
- <link rel="dns-prefetch">: Resolves DNS early for third-party domains
- fetchpriority="high": Tells the browser this resource is high priority
Example for hero image: <link rel="preload" as="image" href="/hero.webp" fetchpriority="high">
What INP Measures
INP measures the latency of all click, tap, and keyboard interactions throughout the page's lifecycle, and reports a single value that represents the overall responsiveness. Unlike FID (which it replaced), INP measures the entire interaction, not just the initial delay.
A good INP means when users click a button, tap a link, or type in a field, the page responds quickly with visual feedback.
INP Score Thresholds
Common INP Issues
- Long-running JavaScript tasks blocking the main thread
- Large JavaScript bundles taking time to parse
- Third-party scripts with heavy execution
- Expensive event handlers
- Layout thrashing during interactions
How to Fix INP
-
1Break Up Long TasksSplit JavaScript tasks over 50ms into smaller chunks using setTimeout or requestIdleCallback. This keeps the main thread responsive.
-
2Reduce JavaScript Execution TimeRemove unused JavaScript, defer non-critical scripts, and use code splitting to load only what's needed.
-
3Optimize Event HandlersDebounce scroll and resize events. Avoid expensive operations in click handlers. Use passive event listeners where possible.
-
4Audit Third-Party ScriptsRemove unnecessary third-party scripts. Load them asynchronously. Consider self-hosting critical third-party resources.
-
5Use Web WorkersMove heavy computations to Web Workers so they don't block the main thread.
INP Replaced FID in March 2024
First Input Delay (FID) is no longer a Core Web Vital. INP is a more comprehensive measure of interactivity because it considers all interactions, not just the first one.
What CLS Measures
CLS measures the sum of all unexpected layout shifts that occur during the entire lifespan of the page. A layout shift happens when a visible element changes its position from one rendered frame to the next without user interaction.
Ever tried to click a button and the page shifted, making you click something else? That's what CLS measures and penalizes.
CLS Score Thresholds
Common CLS Issues
- Images without dimensions (width/height attributes)
- Ads, embeds, or iframes without reserved space
- Dynamically injected content (banners, modals)
- Web fonts causing FOUT (Flash of Unstyled Text)
- Actions waiting on network response before updating DOM
How to Fix CLS
-
1Always Include Size Attributes on Images and VideosAdd width and height attributes to all <img> and <video> elements. The browser reserves space before the resource loads.
-
2Reserve Space for Ads and EmbedsUse CSS to define minimum heights for ad containers and embeds. Prevents content from jumping when they load.
-
3Avoid Inserting Content Above Existing ContentDon't add banners or notifications above the viewport after initial load. If you must, reserve space in advance.
-
4Preload Web FontsUse <link rel="preload"> for fonts. Add font-display: swap to show text immediately while fonts load.
-
5Use CSS aspect-ratioModern CSS aspect-ratio property maintains element proportions before content loads. Works great for responsive images.
How to Measure Core Web Vitals
There are two types of Core Web Vitals data:
Lab Data
Lab data is collected in a controlled environment with predefined device and network settings. It's useful for debugging issues during development but doesn't reflect real user experience. Tools that provide lab data:
- Lighthouse (in Chrome DevTools)
- PageSpeed Insights (lab section)
- WebPageTest
Field Data (Real User Monitoring)
Field data is collected from real users as they interact with your page. This is what Google uses for search rankings. Sources of field data:
- Chrome User Experience Report (CrUX) via PageSpeed Insights
- Google Search Console Core Web Vitals report
- SchemaReports Dashboard
The 75th Percentile Rule
Google uses the 75th percentile of page loads when assessing Core Web Vitals. This means 75% of your users need to have a "Good" experience for that metric to pass. Outliers and poor connections still count.
Common Issues & Quick Fixes
Hero Image Slowing LCP
The most common LCP issue. Fix it by:
- Converting to WebP format (30-50% smaller than JPEG)
- Adding fetchpriority="high" attribute
- Preloading with <link rel="preload">
- Removing lazy loading from above-the-fold images
Third-Party Scripts Hurting INP
Analytics, chat widgets, and ads often cause interactivity issues:
- Load non-critical scripts after page interactive
- Use async attribute instead of defer for truly independent scripts
- Consider loading chat widgets on user interaction
- Self-host critical third-party resources when possible
Font Loading Causing CLS
Custom fonts often cause layout shifts when they load:
- Preload your most important font files
- Use font-display: optional or swap
- Match fallback font sizes to your custom font
- Consider using system fonts for body text
Tools for Monitoring Core Web Vitals
Check Your Core Web Vitals Now
Get a comprehensive performance analysis with actionable recommendations to improve your scores.
Test Your WebsiteUnderstanding the 75th Percentile
Google evaluates Core Web Vitals at the 75th percentile of page loads. This means if you have 100 visitors, the 75th worst experience determines your score. Why? Because it ensures most users have a good experience while filtering out extreme outliers (like users on very slow connections).
This is why field data matters more than lab data. Lab tests show ideal conditions; field data shows what real users experience on various devices and connections.
Source: Google Web Vitals Documentation, "How Google Evaluates Core Web Vitals"Frequently Asked Questions About Core Web Vitals
How long does it take for CWV improvements to affect rankings?
Core Web Vitals data is collected over a rolling 28-day period in the Chrome User Experience Report (CrUX). After implementing improvements, it can take 28+ days for the new data to fully replace old data. Google also recrawls and reprocesses pages on its own schedule. Expect 4-8 weeks to see ranking impacts from CWV improvements.
My lab scores are good but field data fails. Why?
Lab tests (Lighthouse, PageSpeed Insights lab mode) use controlled conditions with fast connections. Real users have slower devices, poor connections, and varying conditions. Common causes: third-party scripts that load slowly on mobile, aggressive ad networks, or features that behave differently with real user interactions. Debug by testing on throttled connections and mid-range mobile devices.
Do all pages need to pass Core Web Vitals?
Google evaluates pages individually, not sites as a whole. However, there can be URL groupings in Search Console where pages with similar templates are evaluated together. Focus on your most important pages first: homepage, service pages, and high-traffic landing pages. Low-traffic pages may not even have field data available.
Can I pass Core Web Vitals with a slow server?
Server speed (TTFB - Time to First Byte) directly impacts LCP. If your server takes 2 seconds to respond, it's nearly impossible to achieve a good LCP of 2.5 seconds. Target TTFB under 200-500ms. Solutions include: better hosting, CDN implementation, server-side caching, database optimization, and static page generation where possible.
How do SPAs (Single Page Apps) handle INP?
Single Page Applications built with React, Vue, or Angular often struggle with INP because they rely heavily on JavaScript. Best practices: code split aggressively, use server-side rendering (SSR) or static generation, defer non-critical JavaScript, break up long tasks with yield points, and consider partial hydration techniques. Framework-specific solutions like React Server Components can help significantly.