Skip to main content
Scanora AI
Back to Blog
Performance

Core Web Vitals Explained: A Practical Guide for SMBs

Scanora AI Team January 10, 2025 9 min read

What Are Core Web Vitals?

Core Web Vitals are a set of specific metrics that Google uses to measure real-world user experience on web pages. They quantify three critical aspects of user experience: loading performance, interactivity, and visual stability.

The three Core Web Vitals metrics are:

  • LCP (Largest Contentful Paint): Measures loading performance. How quickly does the main content become visible?
  • INP (Interaction to Next Paint): Measures interactivity. How quickly does the page respond when a user clicks or taps?
  • CLS (Cumulative Layout Shift): Measures visual stability. Do elements on the page jump around unexpectedly as it loads?

These metrics are measured using real user data from the Chrome User Experience Report (CrUX), meaning they reflect what actual visitors to your site experience, not just lab conditions. Google uses this real-world data as a ranking signal in search results.

Why Google Cares About Page Experience

Google's business model depends on sending users to pages that satisfy their needs. Slow, janky, unresponsive pages frustrate users and reflect poorly on Google's recommendations. By incorporating page experience into rankings, Google incentivizes the entire web to provide better user experiences.

The page experience signal is not the dominant ranking factor. Content relevance and quality still matter most. However, when multiple pages have similar content quality, page experience becomes the tiebreaker. For competitive keywords, passing Core Web Vitals can be the difference between page one and page two.

Beyond SEO, better Core Web Vitals directly correlate with better business outcomes. Studies consistently show that faster sites have higher conversion rates, lower bounce rates, and more pages viewed per session. A one-second improvement in load time can increase conversions by 7% or more. Performance optimization pays for itself through improved business metrics.

LCP (Largest Contentful Paint) Explained

LCP measures how long it takes for the largest content element in the viewport to become visible. This is typically a hero image, a large text block, or a video poster. It answers the user's implicit question: "Is this page actually loading?"

Target scores:

  • Good: 2.5 seconds or less
  • Needs Improvement: 2.5 to 4.0 seconds
  • Poor: More than 4.0 seconds

Common causes of poor LCP:

  • Slow server response times (time to first byte)
  • Render-blocking JavaScript and CSS in the document head
  • Large, unoptimized hero images without proper sizing
  • Client-side rendering that delays content visibility
  • Web fonts that block text rendering until loaded

INP (Interaction to Next Paint) Explained

INP replaced FID (First Input Delay) in March 2024 as the interactivity metric. While FID only measured the first interaction, INP measures the responsiveness of all interactions throughout the page lifecycle, reporting the worst-case scenario (with outliers excluded).

Target scores:

  • Good: 200 milliseconds or less
  • Needs Improvement: 200 to 500 milliseconds
  • Poor: More than 500 milliseconds

Common causes of poor INP:

  • Long-running JavaScript tasks that block the main thread
  • Excessive DOM size (thousands of elements on the page)
  • Too many event listeners or complex event handlers
  • Third-party scripts (analytics, ads, chat widgets) consuming resources
  • Lack of input debouncing or throttling for frequent interactions

CLS (Cumulative Layout Shift) Explained

CLS measures unexpected layout shifts that occur during the page lifecycle. A layout shift happens when a visible element changes position between two rendered frames without user interaction. This is the metric behind the frustrating experience of clicking a button just as the page jumps and accidentally hitting something else.

Target scores:

  • Good: 0.1 or less
  • Needs Improvement: 0.1 to 0.25
  • Poor: More than 0.25

Common causes of poor CLS:

  • Images without explicit width and height attributes
  • Ads, embeds, or iframes without reserved space
  • Dynamically injected content above existing content
  • Web fonts causing flash of unstyled text (FOUT) with different metrics
  • Late-loading components that push content down the page

How to Measure Your Core Web Vitals

Several free tools help you measure and monitor Core Web Vitals. Use a combination of field data (real users) and lab data (synthetic tests) for a complete picture:

Google PageSpeed Insights: The primary tool for checking Core Web Vitals. It shows both field data (from real Chrome users) and lab data (simulated conditions). The field data section is what Google uses for ranking decisions.

Google Search Console: The Core Web Vitals report shows how your entire site performs, grouping pages by similar URL patterns. It highlights pages that need attention and tracks improvements over time.

Chrome DevTools: The Performance panel lets you profile page loads and interactions in detail. The Lighthouse tab provides lab-based audits with specific recommendations for improvement.

web-vitals JavaScript library: Add real-user monitoring to your site by reporting Core Web Vitals to your analytics platform. This gives you continuous field data specific to your actual traffic patterns.

<!-- Example: Reporting Web Vitals to analytics -->
<script type="module">
import {onLCP, onINP, onCLS} from 'https://unpkg.com/web-vitals@4?module';

function sendToAnalytics(metric) {
console.log(metric.name, metric.value);
// Send to your analytics endpoint
}

onLCP(sendToAnalytics);
onINP(sendToAnalytics);
onCLS(sendToAnalytics);
</script>

Quick Wins: Easy Optimizations for Any Site

These optimizations require minimal effort but can produce significant improvements in your Core Web Vitals scores:

Add width and height to all images: This single change can dramatically improve CLS by allowing the browser to reserve space before images load. Use the intrinsic dimensions of the image:

<img src="hero.jpg" width="1200" height="600" alt="Description">

Preload critical resources: Tell the browser about important resources (hero images, fonts, critical CSS) early so it starts fetching them immediately:

<link rel="preload" href="/hero-image.webp" as="image">
<link rel="preload" href="/fonts/inter.woff2" as="font" crossorigin>

Defer non-critical JavaScript: Move non-essential scripts below the fold or add the defer attribute. This prevents render-blocking and improves both LCP and INP:

<script src="analytics.js" defer></script>
<script src="chat-widget.js" defer></script>

Enable text compression: Ensure your server sends gzip or brotli-compressed HTML, CSS, and JavaScript. This typically reduces transfer sizes by 60-80% and directly improves loading times.

Image Optimization Techniques

Images are typically the largest resources on a page and the most common cause of poor LCP scores. Optimizing images is often the highest-impact change you can make.

Use modern formats: WebP offers 25-35% better compression than JPEG at the same quality. AVIF offers even better compression. Serve modern formats to browsers that support them with fallbacks for older browsers:

<picture>
<source srcset="image.avif" type="image/avif">
<source srcset="image.webp" type="image/webp">
<img src="image.jpg" alt="Description" width="800" height="400">
</picture>

Responsive images: Serve appropriately sized images based on the viewport. A 2400px-wide image displayed at 400px wastes bandwidth and slows loading:

<img srcset="image-400.webp 400w, image-800.webp 800w, image-1200.webp 1200w"
sizes="(max-width: 600px) 400px, (max-width: 1000px) 800px, 1200px"
src="image-800.webp" alt="Description">

Lazy loading: Defer loading of images below the fold until the user scrolls near them. This reduces initial page weight and speeds up LCP. Never lazy-load the LCP image itself:

<!-- Hero image: NO lazy loading (it's the LCP element) -->
<img src="hero.webp" alt="Hero" fetchpriority="high">

<!-- Below-fold images: lazy load -->
<img src="feature.webp" alt="Feature" loading="lazy">

Caching and CDN Strategies

Caching reduces the work your server does and the distance data travels, directly improving LCP and overall page speed for returning visitors.

Browser caching: Set appropriate Cache-Control headers for your static assets. CSS, JavaScript, and images that rarely change should have long cache lifetimes (1 year) with filename-based cache busting for updates:

# .htaccess example
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/webp "access plus 1 year"
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType text/html "access plus 5 minutes"
</IfModule>

CDN (Content Delivery Network): A CDN serves your content from edge servers geographically close to your visitors. This dramatically reduces latency for users far from your origin server. For a global audience, a CDN can cut load times by 50% or more for distant visitors.

Server-side caching: For dynamic sites (WordPress, etc.), implement page caching to serve pre-rendered HTML instead of processing PHP and database queries for every request. This can reduce server response time from seconds to milliseconds.

When to Invest in Professional Optimization

Quick wins can get you significant improvements, but some performance problems require deeper expertise to solve effectively:

When your scores plateau: If you have applied all the obvious fixes and your metrics are still not in the green zone, a performance specialist can identify the less obvious bottlenecks that require architectural changes or advanced techniques.

When the business impact justifies the cost: For e-commerce sites where a 100ms improvement translates to measurable revenue increase, professional optimization delivers direct ROI. Calculate your potential gain: if a 1-second improvement lifts conversions by 7%, what is that worth monthly?

When dealing with complex architectures: Sites with heavy JavaScript frameworks, complex third-party integrations, or custom backend logic often need specialized knowledge to optimize without breaking functionality.

When competitors are outperforming you: If competing sites rank above you and have better Core Web Vitals scores, performance may be the differentiator. A professional audit identifies exactly what needs to change and in what priority order to close the gap efficiently.

Need Professional Performance Optimization?

Our performance optimization service covers Core Web Vitals improvement, image optimization, caching strategy, CDN setup, and ongoing monitoring. Get faster load times and better search rankings.

View Performance Optimization Service