Writing
Case studies and notes on web performance. Every number in here comes from a measurement you can re-run yourself.
-
Article
How to diagnose and fix a slow LCP
Largest Contentful Paint breaks into four parts: TTFB, load delay, load duration and render delay. Find which part owns your time, then fix that one instead of guessing.
-
Article
Why a perfect Lighthouse score can coexist with slow real users
A 100 in Lighthouse is one scripted load on a simulated device. Here is what that run cannot see, and why your field data in Search Console can still be failing.
-
Article
What Core Web Vitals actually measure — and why your lab score disagrees with your field data
LCP, CLS and INP explained, with Google’s published thresholds, plus why a Lighthouse run on your laptop and the CrUX field data in Search Console rarely agree.
-
Article
INP: what replaced FID, and why long tasks are the thing to hunt
Interaction to Next Paint replaced First Input Delay as a Core Web Vital in March 2024. What it measures, why it is harder to pass, and how to find the long tasks behind it.
-
Case study
protectorguardrail.com: 99 performance, 100 everywhere else
A multilingual industrial-products site I built and tuned end to end, measured with Lighthouse 12 on the mobile preset: 1.7 s LCP, 0.052 CLS, 0 ms TBT.