Core Web Vitals Optimization Guide: How to Improve LCP, INP, and CLS
Google uses three Core Web Vitals metrics — LCP, INP, and CLS — to evaluate how fast and smooth your website feels to real users. These metrics directly influence search rankings, and poor scores can push your pages below competitors with similar content but better performance. This guide explains each metric, what causes poor scores, and the specific optimizations that yield the biggest improvements.
The Three Core Web Vitals
| Metric | Measures | Good | Needs Improvement | Poor |
|---|---|---|---|---|
| LCP | Loading speed | ≤ 2.5s | 2.5s – 4.0s | > 4.0s |
| INP | Interactivity | ≤ 200ms | 200ms – 500ms | > 500ms |
| CLS | Visual stability | ≤ 0.1 | 0.1 – 0.25 | > 0.25 |
Optimizing LCP (Largest Contentful Paint)
LCP measures how long it takes for the largest visible element to render — usually a hero image, heading, or video poster.
Top LCP Improvements
- Optimize the LCP image: Use WebP/AVIF formats, proper sizing, and
fetchpriority="high" - Preload critical resources: Add
<link rel="preload">for LCP image and fonts - Eliminate render-blocking CSS/JS: Inline critical CSS, defer non-essential scripts
- Use CDN: Serve content from edge servers close to users
- Server response time: Target TTFB under 600ms with caching and server optimization
- Avoid lazy-loading above-the-fold: The LCP element should never be lazy-loaded
Optimizing INP (Interaction to Next Paint)
INP measures responsiveness — how quickly the page responds to user clicks, taps, and key presses throughout the session.
Top INP Improvements
- Break up long tasks: Split JavaScript tasks longer than 50ms using
requestIdleCallbackorscheduler.yield() - Reduce JavaScript payload: Remove unused code, tree-shake dependencies
- Defer non-critical scripts: Use
deferandasyncattributes - Avoid layout thrashing: Batch DOM reads and writes
- Use web workers: Move heavy computations off the main thread
- Optimize event handlers: Debounce scroll/resize handlers, use passive event listeners
Optimizing CLS (Cumulative Layout Shift)
CLS measures visual stability — unexpected layout shifts that happen when content loads or changes position.
Top CLS Improvements
- Set image dimensions: Always include
widthandheightattributes or use CSSaspect-ratio - Reserve ad space: Use
min-heightto prevent content jumps when ads load - Preload fonts: Use
font-display: swapwith preloaded web fonts - Avoid inserting content above existing content: New elements should appear below the fold
- Use CSS
contain: Isolate dynamic content areas to prevent layout recalculations - Animation with transform: Use
transforminstead oftop/left/widthfor animations
Performance Testing Tools
Free Performance Tools:
- Page Speed Checker — Full performance audit
- Core Web Vitals Checker — LCP, INP, CLS scores
- SEO Analyzer — SEO and performance audit
- Image Compressor — Reduce image file sizes
- JavaScript Minifier — Minify JS bundles
- HTML Minifier — Minify HTML
- CSS Minifier — Minify stylesheets
Frequently Asked Questions
Performance
- Page Speed Checker
- Web Vitals Checker
- SEO Analyzer
- Image Compressor
Related Guides
- Domain Authority
- Image Compression
- Build Backlinks