A website's speed isn't just a matter of comfort: it affects how many people stay, how much it sells and how it ranks on Google. Core Web Vitals are the metrics Google uses to measure that experience. This guide explains what they are, how to measure them and, above all, what to do to actually improve them.
What Core Web Vitals are
They're three metrics Google uses to evaluate a page's loading and interaction experience. They're part of its ranking signal, so they matter both for the user and for SEO:
- LCP (Largest Contentful Paint): how long the largest visible element takes to appear (usually an image or a text block). It measures perceived load speed. Target: under 2.5 seconds.
- INP (Interaction to Next Paint): how long the page takes to respond to an interaction (a click, a tap). It measures responsiveness. It replaced the old FID metric. Target: under 200 ms.
- CLS (Cumulative Layout Shift): how much content "moves" while loading (those annoying jumps when you go to tap something and it shifts). It measures visual stability. Target: under 0.1.
How to measure them
- PageSpeed Insights (from Google): gives you your URL's Core Web Vitals with lab and real-user data.
- Lighthouse (built into Chrome DevTools): a local audit in your browser.
- Search Console: shows your whole site's Core Web Vitals with field data.
Always measure on both mobile and desktop; mobile is usually where it hurts most.
Optimizing LCP (load speed)
LCP is usually a large image, so this is where the biggest improvement margin is:
- Compress images. It's the highest-impact, lowest-effort fix. A well-compressed image can weigh 70% less with no visible loss. Use modern formats like WebP or AVIF.
- Size images correctly. Don't serve a 4000px image in a 400px slot; resize it to the actual size.
- Use
loading="lazy"on images not in the first screen, so they don't block the initial load. - Preload the LCP resource with
<link rel="preload">if it's critical. - Serve from a CDN to reduce the distance to the user.
For the first two points you can use the image compressor and the resizer on this site, which process in batch and in your browser.
Optimizing INP (responsiveness)
INP worsens when JavaScript blocks the main thread. To improve it:
- Reduce and split JavaScript: ship less code and load it in chunks (code splitting).
- Avoid long tasks: break up heavy work or move it to a Web Worker so it doesn't block the UI.
- Minimize work per interaction: don't let a click trigger huge calculations on the spot.
- Minify your JS and CSS so they weigh less.
Optimizing CLS (visual stability)
Content shifts almost always come from elements loading without reserved space:
- Reserve image and video sizes with
width/heightattributes oraspect-ratioin CSS, so the slot is already there before loading. - Reserve space for ads and embeds that arrive late.
- Watch web fonts: use
font-display: swapand preload fonts to avoid text reflow. - Don't insert content on top of what the user is already viewing.
The realistic priority order
If you can only do a few things, this is the highest-return order:
- Compress and size images (fixes LCP, almost always the biggest problem).
- Reserve space for images/embeds (fixes CLS, it's cheap).
- Reduce and defer JavaScript (fixes INP and also LCP).
- Fonts and CDN as finishing touches.
Why this goes beyond SEO
Yes, Core Web Vitals are a ranking signal, but the real benefit is business: fast pages retain more visits, convert more and generate less abandonment. Every extra second of load costs users, especially on mobile and slow connections. Optimizing speed is one of the few improvements that help SEO and conversion at the same time.
Conclusion
Improving Core Web Vitals doesn't require rewriting your site: start with images (80% of the problem is usually there), reserve space so nothing jumps, and lighten the JavaScript. Measure before and after with PageSpeed Insights, and prioritize by impact. A fast website is better for your users, your ranking and your business.
Start with what weighs most: compress your images in batch with the free image compressor, 100% in your browser.