/ BLOG / HOW-TO
5 Core Web Vitals Fixes That Actually Move the Needle
August 9, 2026
Most Core Web Vitals checklists list a dozen items and treat them as equally important. In practice, a handful of fixes account for most of the improvement on a typical site. Here's what we reach for first.
1. Stop shipping render-blocking CSS
A single unminified or unnecessarily large stylesheet loaded in <head> can delay First Contentful Paint by hundreds of milliseconds on a throttled connection. Split critical, above-the-fold styles from the rest, and defer what isn't needed for the initial paint. On frameworks like Next.js, this is often close to automatic — but it's worth verifying with a real trace, not assuming the framework handled it.
2. Set explicit dimensions on every image and embed
Cumulative Layout Shift is almost always caused by content that has no reserved space until it loads — an image, an ad slot, a web font swapping in. Explicit width/height (or aspect-ratio in CSS) on every image fixes the majority of CLS issues in an afternoon.
3. Preload the Largest Contentful Paint element
If your LCP element is a hero image or a headline behind a custom font, make sure the browser knows about it immediately — not after it discovers it deep in the render tree. A <link rel="preload"> for the hero asset, or font-display: swap for text, routinely shaves several hundred milliseconds off LCP.
4. Audit your JavaScript bundle for what's actually used
"Reduce unused JavaScript" shows up as a warning on almost every Lighthouse report, and most of it is unavoidable framework overhead. But it's worth checking for the exceptions: a chart library imported for one page, a date-formatting utility that could be three lines of native code, an analytics script nobody's read the dashboard for in months.
5. Don't cache your HTML too aggressively
This one gets overlooked because it doesn't show up as a Lighthouse score at all — it shows up as a broken page days later. If your HTML document is cached for too long while your build's hashed JS/CSS filenames change on every deploy, users can end up with a stale HTML page requesting assets that no longer exist. Keep the HTML document itself on a short cache lifetime; let the hashed static assets carry the long, immutable cache instead.
None of these are exotic. They're just the fixes that show up in the data more often than the rest — which is why we check them first on every SEO & Performance engagement.
Have a similar system in mind? Tell us what you're building.
Start a Project