Core Web Vitals have become a major ranking factor for Google since 2021. These metrics measure user experience quality across three essential dimensions: loading speed (LCP), interactivity (FID/INP), and visual stability (CLS).
Why Core Web Vitals Are Crucial
A slow site loses visitors and revenue. Studies show that a 1-second improvement in load time can increase conversions by 7%. In Morocco, where connection quality can vary, optimizing performance is even more important.
LCPLargest Contentful Paint
Goal: < 2.5 seconds
LCP measures the time it takes to display the largest visible element on screen (hero image, heading, etc.)
How to Optimize LCP
Optimize and Compress Images
- Use modern formats: WebP (30% smaller), AVIF (50% smaller)
- Compress with tools like ImageOptim, Squoosh, or TinyPNG
- Implement responsive images with srcset
- Use lazy loading for below-the-fold images
Use a CDN
Bring content closer to users with a Content Delivery Network (Cloudflare, AWS CloudFront, Fastly)
Implement Efficient Browser Caching
Set appropriate Cache-Control headers for static resources (images, CSS, JS)
Preload Critical Resources
Use <link rel="preload"> for above-the-fold resources:
<link rel="preload" href="/hero.webp" as="image">
FID/INPFirst Input Delay & Interaction to Next Paint
Goal: < 100ms (INP) / < 200ms (FID)
These metrics evaluate your site's responsiveness. INP is replacing FID as the primary interactivity metric in 2024.
How to Optimize FID/INP
Reduce Blocking JavaScript
- Code splitting: Load only what's needed for each page
- Dynamic imports: Lazy load components with React.lazy() or Next.js dynamic()
- Tree shaking: Remove unused code with modern bundlers
Defer Non-Essential Scripts
Load analytics, chat widgets, and third-party scripts after page load:
<script defer src="/analytics.js"></script>
Minimize Main Thread Work
- Break up long tasks into smaller chunks
- Use
requestIdleCallbackfor non-critical work - Optimize JavaScript execution time
Use Web Workers for Heavy Computations
Offload CPU-intensive tasks to Web Workers to keep the main thread responsive
CLSCumulative Layout Shift
Goal: < 0.1
CLS measures visual stability. Avoid unexpected layout shifts that frustrate users.
How to Optimize CLS
Define Explicit Dimensions for Images and Iframes
Always specify width and height attributes:
<img src="/hero.webp" width="1200" height="630" alt="Hero">
Reserve Space for Dynamic Content
- Use skeleton screens while loading
- Set min-height for containers with dynamic content
- Avoid inserting content above existing viewport content
Use font-display: swap for Custom Fonts
Prevent invisible text while fonts load:
@font-face {
font-family: 'CustomFont';
src: url('/fonts/custom.woff2') format('woff2');
font-display: swap;
}Avoid Inserting Content Above Existing Viewport
Don't inject banners, notifications or ads that push content down after page load
Measurement and Audit Tools
Google PageSpeed Insights
Detailed audits with field and lab data, specific recommendations for improvements
Chrome DevTools & Lighthouse
Built-in browser tools for development testing and performance profiling
Google Search Console
Real field data from actual users visiting your site
Web Vitals Extension
Chrome extension for real-time monitoring while browsing
Conclusion
Core Web Vitals optimization is a continuous process. Test regularly, measure the impact of your changes, and prioritize optimizations that bring the most value.
Need Help Optimizing Your Core Web Vitals?
VOID's performance experts audit and optimize your site for maximum speed