Core Web Vitals are three questions in disguise: does the page paint quickly, does it respond quickly, and does it stop moving. Almost every failing marketing site we audit fails for the same handful of reasons.
Largest Contentful Paint: fix the hero first
On a marketing page the LCP element is nearly always the hero image or the headline. Serve the hero as a modern format, size it for the breakpoint it renders at, and preload it rather than lazy-loading it.
Fonts are the second offender. Self-host or preconnect, set font-display to swap, and subset to the characters you actually use so the headline is not invisible for 800ms.
Interaction to Next Paint: ship less JavaScript
Sliders, chat widgets, analytics stacks, and cookie banners all compete for the main thread on first load. Defer everything that is not needed for the first interaction and load third-party embeds only when they enter the viewport.
Measure with field data, not just a lab score. A 100 in a lab run on fibre says very little about a phone on a busy network.
Cumulative Layout Shift: reserve the space
Give every image and iframe explicit width and height attributes or an aspect ratio, and reserve height for banners and ad slots before they load.
Never inject content above existing content after paint. If a promo bar must appear, render it in the initial HTML.
The handover check
Before handover we run the page on a throttled mobile profile, check field data where it exists, and confirm the three fixes above are in place. If any metric sits outside the good threshold, it goes back to the board.

