Skip to main content

Core Web Vitals Explained: Speed Metrics That Actually Matter

7 min read

7 min read

Core Web Vitals Explained: Speed Metrics That Actually Matter

Reading time: 7 minutes

TLDR

Core Web Vitals measure user experience through three metrics: LCP shows how fast your main content loads, CLS tracks layout stability while loading, and INP measures button response time. Poor scores hurt both rankings and conversions. a 4-second LCP causes 50% bounce rate while 2.4 seconds drops it to 35%. That difference can save tens of thousands monthly in lost revenue. Scan shows your scores and provides prioritized fixes to improve all three metrics.


If your Surmado Scan report shows “LCP 4.13s (Poor)” or “CLS 0.25 (Needs Work)”, you’re losing customers and rankings. Here’s what those metrics mean in plain English. And how to fix them.

What Are Core Web Vitals?

Core Web Vitals are Google’s official measurements of user experience. They directly affect your search rankings and conversion rates.

The three metrics:

  1. LCP (Largest Contentful Paint) - How fast does your main content load?
  2. CLS (Cumulative Layout Shift) - Does your page jump around while loading?
  3. INP (Interaction to Next Paint) - How quickly do buttons/links respond?

Why they matter: Google uses Core Web Vitals as a ranking signal. Slow sites rank lower, even with better content. More importantly, slow sites lose customers. 25% of users bounce if a page takes over 4 seconds to load.

Understanding Your Scan Report Scores

When you get your Surmado Scan report, you’ll see scores like this:

LCP (loading speed): 4.13s - Poor
CLS (visual stability): 0.000 - Good
Speed Index: 4.48s - Needs Work

How to read this:

  • Good = You’re competitive, no urgent action needed
  • Needs Work = Competitors are faster, opportunity for improvement
  • Poor = You’re losing customers and rankings, fix immediately

Benchmark Targets

LCP (Largest Contentful Paint)

  • Good: Under 2.5 seconds
  • Needs Work: 2.5 to 4.0 seconds
  • Poor: Over 4.0 seconds

CLS (Cumulative Layout Shift)

  • Good: Under 0.1
  • Needs Work: 0.1 to 0.25
  • Poor: Over 0.25

INP (Interaction to Next Paint)

  • Good: Under 200ms
  • Needs Work: 200 to 500ms
  • Poor: Over 500ms

The Business Impact

Real Numbers

Page Load Time vs Bounce Rate:

  • 1-3 seconds: 32% bounce rate
  • 4 seconds: 50% bounce rate (half your visitors leave!)
  • 5 seconds: 60% bounce rate
  • 6+ seconds: 75%+ bounce rate

Example: If you have 10,000 monthly visitors and your LCP is 4.1 seconds:

  • 5,000 people bounce before seeing your services
  • At 2% conversion rate, that’s 100 lost leads per month
  • If your average customer value is $500, that’s $50,000/month lost revenue

Fix your LCP to 2.4 seconds:

  • Bounce rate drops to about 35%
  • Now 6,500 people see your site
  • That’s 130 leads instead of 100
  • $15,000/month recovered revenue

LCP: Your Page Load Speed

What it measures: Time until the largest image or text block appears on screen.

Why it’s poor: Usually caused by:

  1. Unoptimized images (huge file sizes)
  2. Slow server response time
  3. Render-blocking JavaScript/CSS
  4. No Content Delivery Network (CDN)

How to Fix LCP

Quick Win #1: Compress Images (1-2 hours)

Large image files are the #1 cause of slow LCP.

  1. Find your largest images (usually hero images, product photos)
  2. Use TinyPNG.com or ImageOptim to compress them
  3. Target: Under 200KB for large images, under 50KB for smaller ones
  4. Re-upload to your website

Expected improvement: 0.5-1.5 seconds faster LCP

Quick Win #2: Implement Lazy Loading (30 min - 2 hours)

Don’t load images that aren’t visible yet.

WordPress: Install “Lazy Load by WP Rocket” plugin (free) Shopify: Built-in lazy loading (Settings → Preferences → enable) Custom site: Add loading="lazy" to image tags below the fold

Expected improvement: 0.3-0.8 seconds faster LCP

Advanced Fix: Use a CDN (Budget: $10-20/month)

Content Delivery Networks serve your images/files from servers closer to your visitors.

Popular options:

  • Cloudflare (free tier available)
  • BunnyCDN ($0.01/GB - cheapest)
  • Amazon CloudFront (enterprise)

Expected improvement: 0.5-1.2 seconds faster LCP

Developer Fix: Optimize Critical CSS

If LCP is still slow after image optimization, you likely have render-blocking CSS.

Hire a developer ($500-1,500) to:

  • Inline critical CSS
  • Defer non-critical CSS
  • Remove unused CSS

CLS: Page Jump Prevention

What it measures: How much your page layout “shifts” unexpectedly while loading.

Example of bad CLS: You’re about to click “Add to Cart” and an ad loads above it, pushing the button down. You accidentally click the wrong thing.

Why CLS Happens

  1. Images without width/height attributes
  2. Ads or embeds that load late
  3. Web fonts that load slowly (font swapping)
  4. Dynamic content inserted above existing content

How to Fix CLS

Quick Win: Add Image Dimensions (1-2 hours)

Reserve space for images before they load.

WordPress: Gutenberg automatically adds dimensions HTML: <img src="photo.jpg" width="800" height="600"> CSS: Use aspect-ratio property

Expected improvement: CLS 0.25 → 0.05 or better

Advanced Fix: Reserve Space for Ads

If you use Google AdSense or other ad networks:

.ad-container {
  min-height: 250px; /* Match your ad size */
}

This prevents the page from “jumping” when ads load.

Font Loading Fix:

Use font-display: swap in your CSS to prevent invisible text:

@font-face {
  font-family: 'YourFont';
  src: url('font.woff2');
  font-display: swap;
}

INP: Button Response Time

What it measures: How quickly buttons, links, and forms respond when clicked/tapped.

Why it’s slow: Usually caused by:

  • Heavy JavaScript blocking the main thread
  • Poorly optimized event handlers
  • Too many third-party scripts (analytics, chat widgets, ads)

How to Fix INP

Quick Win: Remove Unused Plugins/Scripts

Every plugin or tracking script adds delay.

Audit your site:

  1. WordPress: Deactivate unused plugins
  2. Shopify: Remove unused apps
  3. All sites: Check how many tracking scripts you have (Google Tag Manager, Facebook Pixel, etc.)

Target: Under 10 third-party scripts total

Advanced Fix: Defer Third-Party Scripts

Let your page load first, then load analytics/chat widgets.

Use Google Tag Manager to control script loading priority.

Using Chrome UX Report (CrUX) Data

Your Scan report may show “Real User Performance” data if your site has enough traffic (1,000+ monthly visitors).

CrUX shows real-world performance from actual users:

Real User Performance (Chrome UX Report):
LCP: 3.2s (75th percentile)
CLS: 0.08
INP: 180ms

What this means:

  • 75% of your real visitors experience LCP under 3.2s
  • 25% experience it slower (4+ seconds)
  • Your lab scores may differ from field scores

Why CrUX differs from lab tests:

  • Real users have slow phones
  • Real users have slow internet (3G, rural broadband)
  • Real users have browser extensions (ad blockers)
  • Real users visit during peak traffic

How to improve CrUX:

  1. Fix lab scores first (they predict field improvement)
  2. Test on slow 3G connections (Chrome DevTools → Network → Slow 3G)
  3. Wait 28 days for CrUX to update
  4. Monitor Google Search Console for changes

Monitoring Your Progress

Week 1: Baseline Measurement

  1. Run your initial Scan report (done!)
  2. Note your current LCP, CLS, and INP scores
  3. Screenshot Google Search Console → Core Web Vitals

Week 2-4: Implement Quick Wins

  1. Compress images
  2. Enable lazy loading
  3. Add image dimensions
  4. Remove unused scripts

Month 2: Measure Improvement

  1. Run a new Scan report
  2. Compare before/after scores
  3. Check Google Search Console for Core Web Vitals improvements

Expected timeline:

  • Lab scores improve immediately (test with PageSpeed Insights)
  • CrUX scores update every 28 days
  • Search ranking improvements: 2-3 months

When to Hire Help

You can DIY if:

  • Your Scan report shows 1-2 specific issues
  • Fixes are image compression or plugin removal
  • You’re comfortable with basic website editing

Hire a developer if:

  • Multiple complex issues (JavaScript, CSS optimization)
  • CLS problems from custom code
  • Server response time slow (needs hosting upgrade)
  • Budget: $500-2,000 for comprehensive optimization

Common Questions

Q: My desktop score is 90 but mobile is 45. Why?

A: Mobile networks are slower and phones have less processing power. Optimize for mobile first. It’s 70%+ of your traffic.

Q: I fixed everything but CrUX hasn’t improved. What’s wrong?

A: CrUX updates monthly with a 28-day rolling window. Wait 4 weeks after fixes for data to refresh.

Q: Does Core Web Vitals improvement guarantee higher rankings?

A: Not directly. But faster sites get higher click-through rates, lower bounce rates, and better user signals. All of which improve rankings indirectly. Plus speed is a confirmed ranking factor.

Q: My competitor’s site is slower but ranks higher. How?

A: Content relevance and backlinks matter more than speed. But if all else is equal, the faster site wins. Speed is a tiebreaker, not the only factor.

Next Steps

This Week:

  1. Review your Scan report’s Core Web Vitals section
  2. Identify your worst metric (LCP, CLS, or INP)
  3. Implement one quick win (compress images or enable lazy loading)

This Month:

  1. Fix all “Poor” scores to at least “Needs Work”
  2. Set up Google Search Console monitoring
  3. Re-run Scan to measure improvement

Monitor:

  • Google Search Console → Experience → Core Web Vitals (weekly)
  • PageSpeed Insights (monthly)
  • Surmado Scan (quarterly for comprehensive review)

→ Related: Mobile Performance Guide | Image Optimization

Help Us Improve This Article

Know a better way to explain this? Have a real-world example or tip to share?

Contribute and earn credits:

  • Submit: Get $25 credit (Signal, Scan, or Solutions)
  • If accepted: Get an additional $25 credit ($50 total)
  • Plus: Byline credit on this article
Contribute to This Article