←  Writing

2026-04-15  ·  Performance / Case Study  ·  5 min read

From 47 to 98 — fixing a mobile site that everyone said felt “fine”

A small case study in not trusting the number, then trusting the number

A while back I took a small-business site from a mobile performance score of 47 to 98. I’m rewriting the original case study because the metrics moved (INP is the headline now) and because, with a few years of distance, the method is the part worth keeping — not the specific fixes.

“It feels fine”

The owner’s case against doing anything was that the site felt fine on his phone. It did — on a flagship device, on office wifi, with everything cached. The field data, gathered from real visitors on real phones and real networks, told a different story: a 47, and a measurable chunk of people leaving before the page was usable.

This is the whole job in miniature. The anecdote on the good phone is the metric that’s lying. The field data is the truth. Start there.

What actually moved it

I didn’t do everything at once. I did the things with the biggest payback first, measured, then moved on. Roughly in order:

  • Images. The single biggest win, almost always. Right-sized, modern formats (WebP/AVIF), lazy-loaded below the fold. A hero image that was shipping at desktop resolution to phones was most of the 47.
  • Render-blocking junk. Deferred the scripts that didn’t need to run before paint. Killed two “we’ll use it someday” libraries that were loading on every page and used by none of them.
  • Layout shift. Reserved space for images and embeds so the page stopped jumping as it loaded. That’s the difference between a site that feels cheap and one that feels solid — and it’s a direct ranking signal (CLS).
  • Responsiveness, not just load. The modern metric, INP, cares how fast the page reacts to taps and scrolls across the whole visit, not just the first load. Trimming the main-thread work fixed the “I tapped and nothing happened” feeling.
  • Fonts. A font-display swap so text shows immediately instead of waiting on a web font. Small change, real perceived-speed win.

The point

None of that is clever. It’s a checklist run with discipline and measured at each step. The 98 wasn’t a heroic rewrite — it was the same delete-then-simplify-then-accelerate order I use on any system: get rid of what shouldn’t load at all, make what’s left small, then make it fast.

And the lasting lesson is the cheap one: don’t grade your site on your own phone. Measure what your actual visitors experience, fix the worst real thing, and repeat until the number you can’t argue with is good.


← All writing Start a conversation