SEO 2 min read
A practical Core Web Vitals checklist
Core Web Vitals are the rare case where SEO and user experience point in the same direction. This is the checklist I actually use before every launch.
LCP — Largest Contentful Paint (target: < 2.5s)
- Identify the LCP element (usually the hero image or heading).
- If it's an image: serve it in AVIF/WebP, size it correctly, and add
fetchpriority="high". Never lazy-load it. - Preload the hero font with
font-display: swapso text paints early. - Put static assets behind a CDN — Cloudflare's free tier is enough.
CLS — Cumulative Layout Shift (target: < 0.1)
- Every image and iframe gets explicit
widthandheight. - Reserve space for ads, embeds and cookie banners before they load.
- Never inject content above existing content after page load.
- Use
transformanimations, not properties that trigger layout.
INP — Interaction to Next Paint (target: < 200ms)
- Break up long tasks; nothing should block the main thread > 50ms.
- Defer third-party scripts (
defer, or better: load on interaction). - On WordPress: audit plugins ruthlessly — one bloated plugin can double your JavaScript execution time.
The meta-rule
Measure on a real mid-range phone over 4G, not on your dev machine. Field data (CrUX) is what Google ranks you on — lab scores are just a proxy.
Green vitals won't rank a bad page, but slow vitals will quietly tax every page you have. Fix them once, keep them fixed with a Lighthouse CI budget.