Core Web Vitals Explained: What Google Really Wants from Your Site
In 2021, Google made Core Web Vitals official ranking factors. Since then, site performance has directly impacted search rankings—not just user experience.
Yet many website owners still don't understand what Core Web Vitals are, how they're measured, or what they need to do to pass. This guide explains everything you need to know about Core Web Vitals in 2025.
What Are Core Web Vitals?
Core Web Vitals are Google's standardized metrics for measuring user experience quality on web pages. They represent what Google considers the most important aspects of page experience:
- Loading performance: How fast does content appear?
- Interactivity: How quickly does the page respond to user input?
- Visual stability: Does content shift around as the page loads?
Google introduced Core Web Vitals as part of a broader "page experience" update that also includes mobile-friendliness, HTTPS security, and the absence of intrusive interstitials.
The Three Core Web Vitals
1. Largest Contentful Paint (LCP)
What it measures: How long it takes for the largest content element to become visible.
Why it matters: LCP represents when the page's main content has loaded. Until this happens, users are staring at a loading screen or partial content.
The target: Under 2.5 seconds
Thresholds:
- Good: ≤ 2.5 seconds
- Needs improvement: 2.5 - 4.0 seconds
- Poor: > 4.0 seconds
What counts as LCP:
- Image elements
- Video poster images
- Background images loaded via CSS
- Block-level text elements
Typically, LCP is your hero image, product photo, or main heading text.
Common causes of poor LCP:
- Slow server response times
- Render-blocking JavaScript and CSS
- Large, unoptimized images
- Client-side rendering delays
2. First Input Delay (FID) / Interaction to Next Paint (INP)
Note: Google replaced FID with INP (Interaction to Next Paint) as of March 2024. INP is the current official metric.
What INP measures: The time from when a user interacts with the page (click, tap, keypress) to when the browser responds visually.
Why it matters: INP represents page responsiveness. Slow INP makes sites feel laggy and unresponsive.
The target: Under 200 milliseconds
Thresholds:
- Good: ≤ 200ms
- Needs improvement: 200 - 500ms
- Poor: > 500ms
Common causes of poor INP:
- Long JavaScript tasks blocking the main thread
- Heavy framework initialization
- Third-party scripts competing for resources
- Large DOM sizes requiring expensive updates
3. Cumulative Layout Shift (CLS)
What it measures: The total of all unexpected layout shifts that occur during the page's lifecycle.
Why it matters: Layout shifts are frustrating—you're about to click a button, and suddenly it moves because an image loaded above it.
The target: Under 0.1
Thresholds:
- Good: ≤ 0.1
- Needs improvement: 0.1 - 0.25
- Poor: > 0.25
How CLS is calculated: CLS = Impact fraction × Distance fraction
- Impact fraction: How much of the viewport is affected
- Distance fraction: How far elements moved
Common causes of poor CLS:
- Images without width/height dimensions
- Ads and embeds without reserved space
- Dynamically injected content
- Web fonts causing text reflow
How Core Web Vitals Affect Rankings
The Ranking Impact
Google has confirmed that Core Web Vitals are ranking factors, but with nuances:
They're not the most important factors: Content relevance and quality still matter most. A page with great content but poor Core Web Vitals can still rank well.
They're tie-breakers: When multiple pages have similar content quality, page experience (including Core Web Vitals) can determine which ranks higher.
They affect competitive queries: In competitive niches where many pages have similar content, Core Web Vitals become more important.
The Practical Impact
In practice, Core Web Vitals matter most for:
Commercial queries: Where many sites compete and user experience affects conversions.
Local searches: Where Google prioritizes user experience for nearby searches.
Mobile searches: Where performance issues are more pronounced.
Beyond Rankings
Even if rankings weren't affected, Core Web Vitals matter because:
User experience improves: Sites passing Core Web Vitals provide better experiences.
Conversions increase: Faster, more stable sites convert better.
Bounce rates decrease: Users stay longer on performant sites.
Brand perception improves: Speed signals professionalism.
Measuring Core Web Vitals
Lab Data vs. Field Data
Lab data: Measurements taken in controlled conditions (synthetic testing)
- Tools: Lighthouse, PageSpeed Insights, Chrome DevTools
- Useful for: Debugging, development testing
- Limitations: Doesn't reflect real user experience
Field data: Measurements from actual users (Real User Monitoring)
- Sources: Chrome User Experience Report (CrUX), Search Console
- Useful for: Understanding actual user experience
- Limitations: Requires traffic, takes time to accumulate
Important: Google uses field data (from CrUX) for ranking decisions, not lab data.
Tools for Measurement
PageSpeed Insights:
- Shows both lab and field data
- Provides specific recommendations
- Free and easy to use
- URL: pagespeed.web.dev
Google Search Console:
- Core Web Vitals report for your entire site
- Groups URLs by issue
- Tracks changes over time
- Shows mobile and desktop separately
Chrome User Experience Report (CrUX):
- Origin-level data (whole site)
- URL-level data (specific pages)
- 28-day rolling average
- Accessible via BigQuery or API
Web Vitals Extension:
- Chrome extension for real-time measurement
- Shows current Core Web Vitals as you browse
- Useful for quick checks
Understanding Your Data
The 75th percentile: Google evaluates Core Web Vitals at the 75th percentile. This means 75% of your users must have a "good" experience for you to pass.
Why 75th percentile?
- Accounts for variance in user conditions
- Ensures most users have good experience
- Filters out extreme outliers
Implication: A few slow experiences can fail your site. You need consistent performance across devices, connections, and geographies.
Improving Largest Contentful Paint (LCP)
Server Response Time
The issue: Slow server response delays everything.
Solutions:
- Use a Content Delivery Network (CDN)
- Optimize database queries
- Use server-side caching
- Consider static site generation
Target: Server response under 200ms
Resource Load Optimization
The issue: CSS and JavaScript blocking the render.
Solutions:
- Inline critical CSS
- Defer non-critical JavaScript
- Remove unused code
- Minimize file sizes
Image Optimization
The issue: Large hero images delaying LCP.
Solutions:
- Compress images appropriately
- Use modern formats (WebP, AVIF)
- Implement responsive images (srcset)
- Preload LCP images
Code example:
<link rel="preload" as="image" href="hero-image.webp">
Font Optimization
The issue: Web fonts delaying text rendering.
Solutions:
- Use
font-display: swap - Preload critical fonts
- Consider system fonts
- Subset fonts to needed characters
Improving INP (Interactivity)
Break Up Long Tasks
The issue: JavaScript tasks over 50ms block the main thread.
Solutions:
- Split long tasks into smaller chunks
- Use
requestIdleCallbackfor non-urgent work - Move heavy processing to Web Workers
- Use
setTimeoutto yield to the main thread
Reduce JavaScript
The issue: Too much JavaScript to download, parse, and execute.
Solutions:
- Remove unused JavaScript
- Code-split by route
- Lazy load non-critical scripts
- Use lighter libraries
Optimize Third-Party Scripts
The issue: Analytics, ads, and widgets competing for resources.
Solutions:
- Audit third-party impact
- Delay loading non-critical scripts
- Use server-side tracking where possible
- Set performance budgets
Reduce DOM Size
The issue: Large DOM requires more processing for interactions.
Solutions:
- Simplify page structure
- Virtualize long lists
- Remove hidden elements
- Use efficient frameworks
Improving Cumulative Layout Shift (CLS)
Reserve Space for Images
The issue: Images loading without dimensions cause shifts.
Solutions:
- Always include width and height attributes
- Use CSS aspect-ratio
- Use placeholder/skeleton loaders
Code example:
<img src="photo.jpg" width="800" height="600" alt="Photo">
<!-- Or with CSS -->
<style>
.image-container {
aspect-ratio: 4/3;
}
</style>
Reserve Space for Embeds
The issue: Videos, maps, and ads load without reserved space.
Solutions:
- Set fixed dimensions for embed containers
- Use placeholder elements
- Lazy load below the fold
Handle Fonts Properly
The issue: Font swapping causes text reflow.
Solutions:
- Use font-display: swap (prevents invisible text)
- Match fallback font metrics
- Preload critical fonts
- Use font loading API for control
Avoid Injecting Content Above Existing Content
The issue: Banners, notifications, or ads push content down.
Solutions:
- Reserve space for dynamic content
- Use transforms instead of layout changes
- Insert below the fold when possible
- Use sticky positioning for new elements
Common Core Web Vitals Issues by Platform
WordPress
Typical issues:
- Plugin bloat (affects all metrics)
- Unoptimized themes (affects LCP, CLS)
- Database-driven architecture (affects LCP)
- Shared hosting (affects LCP)
Solutions:
- Minimize plugins
- Use lightweight themes
- Implement caching
- Upgrade hosting or go static
Shopify
Typical issues:
- App script accumulation (affects INP)
- Theme code bloat (affects LCP)
- Third-party integrations (affects all)
Solutions:
- Audit and remove unused apps
- Optimize theme code
- Lazy load third-party features
React/Angular/Vue (SPAs)
Typical issues:
- Large JavaScript bundles (affects LCP, INP)
- Client-side rendering delays (affects LCP)
- Heavy framework overhead (affects INP)
Solutions:
- Implement server-side rendering (SSR)
- Code split aggressively
- Use static generation where possible
The Modern Alternative
Modern static site architectures pass Core Web Vitals by default because they:
Eliminate server processing: Pre-built HTML serves instantly from CDN.
Minimize JavaScript: No framework overhead unless needed.
Optimize automatically: Build tools handle image optimization, code splitting.
Deploy globally: Edge deployment ensures fast response worldwide.
Typical Core Web Vitals for static sites:
- LCP: 1.0 - 1.5 seconds
- INP: Under 50ms
- CLS: Under 0.05
Compared to typical WordPress:
- LCP: 3.5 - 6.0 seconds
- INP: 200 - 500ms
- CLS: 0.1 - 0.3
The Bottom Line
Core Web Vitals represent Google's codification of user experience expectations. They're now ranking factors, but more importantly, they're measures of how well your site serves users.
The key points:
- LCP, INP, and CLS measure loading, interactivity, and stability
- Google uses real-world data (field data) for rankings
- 75th percentile of users must pass for your site to pass
- Improvements help rankings AND conversions
The path forward:
- Measure your current performance
- Identify specific issues
- Implement targeted fixes
- Monitor improvement over time
Or consider a platform where Core Web Vitals passing is the default, not the exception.
Want a website that passes Core Web Vitals by default? Get a free preview of your site rebuilt for modern performance standards.
