The challenge
Heavy ad scripts and large lead images had dragged all three Core Web Vitals into the red, which was costing search visibility on a site whose entire business depends on organic reach. The obvious fix — remove the ad scripts — was also the one fix unavailable, because those scripts fund the newsroom. The worst symptom was layout shift: ads loaded asynchronously into unreserved space and shoved the article down mid-sentence, which readers hated and which alone was enough to fail CLS. There was also a measurement problem: the team had been optimising against Lighthouse lab scores, which behave very differently from the field data Google actually ranks on for an ad-heavy page.
Field data before the work, 75th percentile mobile: LCP 4.2s, CLS 0.31, INP 290ms — all three failing. Standard article template weighed 4.8MB on first load, of which 2.9MB was advertising and third-party embeds. Eleven ad networks active, lead images served as unoptimised JPEG at full desktop resolution to mobile devices.
The approach
Ad-funded publishing is a different problem from eCommerce: you can't just delete the scripts paying for the site. The work is about controlling when things load and reserving the space they'll occupy — so the ads still arrive, they just stop hurting the reader and the ranking on the way in.
The results
All three Core Web Vitals moved into passing range on field data, with the layout-shift improvement coming almost entirely from reserving ad dimensions — the cheapest fix on the list and the one with zero revenue impact. Page weight fell by roughly two-thirds on the standard article template. The ad stack stayed in place apart from the two networks the client chose to drop after seeing the blocking-time breakdown.
What this didn't cover
Ad revenue optimization was explicitly not in scope. I provided blocking-time measurements per network and flagged which were poor value, but the decision and any revenue trade-off were the client's to make — I'm not in a position to advise on their ad economics. No editorial CMS work, no paywall or subscription changes, and no infrastructure migration. Third-party embeds are deferred but remain heavy once opened; replacing them with click-to-load facades was proposed, costed and deferred by the client to a later phase. INP improved but sits closer to the threshold than the other two metrics, and would need dedicated JavaScript work to build in real headroom.
Services used on this project
Want the same for your site? Start here:
