INP replaced FID. LCP got stricter. Here are the ten fixes that lift Core Web Vitals on real production sites in days, not months.
Most “improve your Web Vitals” posts are checklists you already know. This one is the order we actually execute on real client sites, in the order that returns the most score per hour.
If your hero image is over 200 kB, swap it for a properly sized AVIF/WebP variant. This single fix lifts LCP on 7 of 10 sites we audit.
<link rel="preload" as="image"> in the head, with the same imagesrcset the browser will use. Skip this and you waste 200-400ms on the discovery hop.
Google Tag Manager, chat widgets, A/B test snippets, all of them want to load synchronously. Wrap them in defer or load them after the load event.
Audit with next-bundle-analyzer or source-map-explorer. The usual culprits: full Lodash imports, the entire moment.js, an unused heavy date picker.
CLS is mostly missing dimensions on images and ads. Always set width and height attributes; use aspect-ratio in CSS for embeds.
Inline critical CSS, switch to system fonts or self-hosted variable fonts with font-display: swap, eliminate render-blocking CSS, lazy-load below-the-fold images, and finally compress server responses with Brotli.
Need help on a specific site? Send us a brief, we audit Core Web Vitals as part of every mobile optimisation engagement.