Case Study: How We Improved Core Web Vitals by 60% in Two Weeks

The Before
A Next.js ecommerce site, 12K SKUs, $2M monthly revenue. Their organic traffic had been declining for six months. Google Search Console showed the problem: 68% of URLs in the "poor" LCP bucket.
After: 92% "good" across all three metrics. Here's exactly what we changed.
LCP: 4.2s → 1.1s
The hero image on every product page was loading at full resolution — 4000x4000px, 2.3MB. The tagline said "optimized" but they were using a generic CDN without WebP conversion. For a complete breakdown of diagnosing and fixing LCP, see our LCP deep dive guide.
What we did:
- Converted all hero images to WebP with 85% quality
- Added
fetchpriority="high"to the LCP image - Implemented responsive image sizes via Next.js Image component with
sizesattribute - Moved the third-party review widget below the fold (it was loading 180KB of JS before the hero)
The biggest win was the review widget. Removing one tag from the critical path cut LCP by 1.8 seconds alone.
INP: 320ms → 95ms
The site had five analytics scripts all loading eagerly. Session replay, heatmaps, two different analytics providers, and a chatbot.
What we did:
- Consolidated to one analytics provider
- Deferred chatbot to idle callback
- Moved heatmaps to a cookie-consent-gated lazy load
- Audited event handlers on product page — one accordion component was re-attaching listeners on every render
The latency measurement tool showed 75% of INP came from third-party scripts. Cutting three of them was the entire fix.
CLS: 0.25 → 0.03
The layout was shifting because of three things: no width/height on product images, a dynamically injected banner ad, and a web font swapping after paint.
What we did:
- Added explicit
widthandheightto all product images - Reserved a 60px space for the banner ad container (even when empty)
- Preloaded the primary font and used
font-display: optional
The Timeline
Days 1-3: Audit with Lighthouse, WebPageTest, and CrUX data. Days 4-8: Image optimization and script consolidation. Days 9-12: Layout fixes and font optimization. Day 14: Measured 92% good across all three metrics in Search Console.
The result? Organic traffic recovered to previous levels within three weeks, and conversion rate improved 12% — faster pages convert better. For a complete guide to fixing all Core Web Vitals metrics, see our Core Web Vitals fix guide.
Related Articles

Eduard Tymchenko
SEO Expert & Founder of AuditMe
Seasoned SEO & SMM expert with 10+ years of experience. Built AuditMe to help businesses improve their search rankings through data-driven, results-oriented SEO strategies. Specializes in technical SEO, Core Web Vitals, and WordPress optimization.
Run Your Free SEO Audit
Get a complete SEO analysis of any URL in 60 seconds. No signup required.
Analyze Your Site FreeFree SEO Tools
Related Articles
Continue learning with these related SEO guides and tutorials:
How to Fix Core Web Vitals Issues: LCP, INP, CLS Explained
A practical guide to fixing Core Web Vitals. Learn how to optimize LCP under 2.5s, INP under 200ms, and CLS under 0.1 with proven techniques.
10 min read
How to Improve Your Google PageSpeed Score in 2026
Actionable techniques to boost PageSpeed scores from 50 to 90+. Covers image optimization, JavaScript reduction, CDN setup, and Core Web Vitals alignment.
9 min read
Image SEO: Complete Guide to Optimizing Images for Search
Optimize images for Google Image Search and page speed. Covers alt text, file naming, responsive images, lazy loading, WebP/AVIF, and sitemap best practices.
9 min read
Core Web Vitals for WordPress: Plugin-by-Plugin Optimization Guide
How each major WordPress plugin affects LCP, CLS, and INP — plus exactly which settings to change. Covers Elementor, WooCommerce, Yoast, Jetpack, WP Rocket, and Akismet.
10 min read