Lab component 02

Publishing my own performance numbers, live

Most consultants will audit your Core Web Vitals and never show you theirs. This board measures the session you are in right now, in your browser, on your network, on your device. Nothing is cached, sampled, or flattering.

Your session, right now PerformanceObserver No analytics beacon

LCP waiting

0s2.5s4s6s

Largest Contentful Paint. When the main thing you came for actually appeared.

INP waiting

0200ms500ms1s

Interaction to Next Paint. Click something below and watch it populate.

CLS waiting

00.10.25>

Cumulative Layout Shift. Unitless. Trigger one deliberately below.

TTFB waiting

0800ms1.8s>

Time to First Byte. Edge cache behaviour, before any rendering starts.

FCP waiting

01.8s3s>

First Contentful Paint. The first pixel of real content, not a spinner.

Long tasks waiting

0369+

Main thread blocks over 50ms. The reason a page can feel slow while scoring fast.

Make the numbers move

INP only reports once you interact, and CLS only accumulates when something moves. Both buttons below cause a real, measurable event. Nothing is faked and nothing is sent anywhere.

This box moves when you press the shift button, which is exactly what CLS penalises.
initobservers attached

Everything above is measured client side with PerformanceObserver and PerformanceNavigationTiming. There is no vendor script, no cookie, and no network call. Field data from a real RUM pipeline would aggregate this same signal at p75 across a 28 day window, which is the number Google actually uses for ranking eligibility.

Lab data is not field data

A Lighthouse run is a single synthetic load on a simulated device. Chrome User Experience Report is the seventy fifth percentile of real sessions over twenty eight days. They disagree constantly, and only one of them is what search actually scores.

01

p75, not average

An average hides the tail. The p75 rule means one in four of your users can be having a bad time before the number moves at all.

02

Per origin and per URL

Low traffic URLs fall back to the origin level score, so a slow template can quietly drag a fast page down with it.

03

INP replaced FID for a reason

FID measured only the first input delay. INP measures the worst full interaction latency, which is far closer to how a page actually feels.