Case Study
ClickBoost: 150MB to 2.5MB page weight, mobile score 36 to 74 in 11 days
Mobile PageSpeed 36 → 74 (+105%); TBT 1,120ms → 10ms; Page weight 150MB → 2.5MB

The challenge
ClickBoost.co.uk is a Glasgow-based paid-media agency running PPC, Meta Ads, and TikTok Ads campaigns for clients across the UK. Their own homepage was running case-study videos for 13+ named brand wins. Each case-study video was a Vimeo or self-hosted MP4 displayed in a hero carousel.
The aggregate page weight on the homepage hit 150 MB. The mobile PageSpeed Insights score sat at 36/100, with Total Blocking Time of 1,120ms — the mobile CPU was locked up for over a full second after the initial paint, before the user could interact with anything.
The brief was specific: lift mobile performance enough to pass Core Web Vitals, without losing the visual impact of the case-study video carousel. An agency selling paid-media credibility cannot have a homepage that fails the basics of digital experience. The credibility cost was higher than the engineering cost.
What I did
11 days, three layers of work, executed in sequence.
Layer 1: Media compression at source. HandBrake 2-pass encoding, H.264 codec, constant 25fps framerate, 200-350 kbps average bitrate, 540p downscale. Ten core video assets compressed:
| Asset | Before | After | Saving |
|---|---|---|---|
| Performance UGC | 15.8 MB | 1.4 MB | -91% |
| High Production | 14.48 MB | 1.5 MB | -90% |
| Video Ads | 11.7 MB | 528 KB | -95% |
| Affordable Golf Portrait | 22.8 MB | 1.8 MB | -92% |
| Watch and Strap | 17.3 MB | 1.2 MB | -93% |
Total video weight: 138.74 MB → 17.2 MB. 121.5 MB saved on the homepage alone.
Layer 2: Custom video injection script. Elementor's native background-video widgets were pre-loading 50 MB payloads on initial page load even when the user never scrolled to them. Built a custom PHP/JS hook in functions.php that uses a Universal IntersectionObserver to load MP4s only when the user scrolls within 500px of the widget.
Layer 3: Script-purge and JS delivery overhaul. Google's recaptcha__en.js was loading 278 KB of unused JavaScript on every single page. Globally dequeued via PHP, executes only on pages with active forms. WP Rocket's Delay JavaScript Execution engine activated for all 3rd-party trackers, with critical UI elements explicitly whitelisted to keep carousels interactive.
Plus image-grid surgery on the Case Studies page: Imagify Smart Compression with WebP delivery via server-side rewrite rules. Image sizes dropped from ~60 KB to ~12 KB. Case Studies page achieved 99/100 mobile.
The outcome
| Metric | Before (3 March) | After (14 March) | Change |
|---|---|---|---|
| Mobile Performance Score | 36/100 | 74/100 | +105% |
| Largest Contentful Paint | 7.5s | 4.7s | -37.3% |
| Total Blocking Time | 1,120ms | 10ms | -99.1% |
| Total Page Weight | 150 MB | ~2.5 MB | -98.3% |
| Meta Ads Page TBT | 1,120ms | 0ms | -100% |
| Render-Blocking Delay | 4,310ms | 358ms | -91.7% |
Site-wide quality scores at the end of Phase 1:
- Core Web Vitals: PASS (all metrics green)
- SEO Score: 100/100 (perfect site-wide)
- Best Practices: 100/100 (perfect site-wide)
- Desktop Baseline: 95-99 across all pages
The mobile site now renders 4.4 seconds faster and becomes instantly interactive (0ms TBT on key paid-media landing pages). For an agency running paid media, that directly lowers Cost Per Acquisition because more of the ad-spend traffic stays on the page long enough to convert.
What this case proves
Page weight is the silent killer of mobile performance. ClickBoost wasn't running a poorly-built website; they were running a normally-built website with normally-uncompressed video. The same is true of most agency and B2B service sites with case-study video reels.
The 11-day engagement fits the Speed Sprint productised scope.


