Skip to content
Techivo
Web Development

Core Web Vitals Explained: A Practical Guide to a Faster Website

LCP, INP and CLS decide how fast your site feels — and influence Google rankings. Learn what each metric means and the fixes that actually move the needle.

techivvo3 min read0

A slow website costs you visitors, sales and search rankings. Google measures how fast and stable a page feels to real people using three metrics called Core Web Vitals. The good news: most problems come from a handful of common causes.

The three metrics

MetricWhat it measuresGood score
LCP — Largest Contentful PaintHow quickly the main content (usually a hero image or headline) appears2.5 s or less
INP — Interaction to Next PaintHow quickly the page responds when you tap, click or type200 ms or less
CLS — Cumulative Layout ShiftHow much the layout jumps around while loading0.1 or less

Google looks at the 75th percentile of real visits, so your site needs to be fast for most users — including those on mid-range phones and slow mobile data.

How to measure

  • PageSpeed Insights (pagespeed.web.dev) — shows real-user data plus a lab test
  • Chrome DevTools → Lighthouse and Performance panels — for debugging locally
  • Google Search Console → Core Web Vitals report — shows which groups of pages fail

Lab scores (Lighthouse) are useful for debugging, but the real-user “field data” is what Google actually uses. Don’t panic over a single bad lab run.

Fixing LCP (slow main content)

The LCP element is usually a big image. Common fixes:

  1. Serve modern formats — WebP or AVIF are typically much smaller than JPEG/PNG
  2. Size images correctly — don’t send a 4000px photo to a 400px phone screen; use srcset
  3. Don’t lazy-load the hero image — lazy-loading is great below the fold, but it delays the main image
  4. Tell the browser it’s important:
<img src="hero.webp" alt="..." width="1200" height="630"
     fetchpriority="high" decoding="async">
  1. Speed up the server — use page caching, a CDN and good hosting. A slow Time to First Byte delays everything else.

Fixing INP (sluggish interactions)

INP suffers when the browser’s main thread is busy running JavaScript.

  • Ship less JavaScript — audit plugins, sliders, chat widgets and trackers. Each one adds up.
  • Defer non-critical scripts with defer or load them after user interaction
  • Break up long tasks — split heavy work into smaller chunks so the browser can respond in between
// Let the browser breathe between chunks of work
async function processItems(items) {
  for (const item of items) {
    doWork(item);
    await new Promise(r => setTimeout(r, 0));
  }
}

Fixing CLS (jumping layout)

Nothing is more annoying than tapping a button just as an ad pushes it down. To prevent shifts:

  • Always set width and height (or aspect-ratio) on images, videos and iframes
  • Reserve space for ads, embeds and cookie banners
  • Use font-display: swap with similar fallback fonts so text doesn’t reflow dramatically
  • Never insert content above existing content unless the user asked for it
.video-embed { aspect-ratio: 16 / 9; width: 100%; }

Quick wins for WordPress sites

  • Install a reputable caching plugin and enable page caching
  • Use an image optimisation plugin that converts to WebP/AVIF
  • Remove plugins you don’t use — every active plugin can add CSS and JS
  • Choose a lightweight theme (like this one!) instead of a heavy multipurpose builder
  • Put the site behind a CDN such as Cloudflare

Don’t stack multiple caching or optimisation plugins on top of each other. They often conflict and can make things slower or break your layout.

Conclusion

Core Web Vitals boil down to three questions: Does the main content appear quickly? Does the page respond instantly? Does the layout stay still? Fix images first, trim JavaScript second, and reserve space for everything that loads late. Your visitors — and your search rankings — will thank you.

Written by

techivvo

Writer and builder covering software, AI and the tools that make developers faster. Add your bio under Users → Profile.

Join the discussion

Your email address will not be published. Required fields are marked *