Last updated · 2026-08-31

04 · In practice

Fast is a feeling.Measure it anyway.

juuna measures Core Web Vitals, LCP, CLS, INP, FCP and TTFB, in your real visitors’ browsers and tracks them as daily p75s with a per-page breakdown, stored and served entirely from your own dedicated instance.

I

The measurement

How are Web Vitals measured?

The browser measures itself. The SDK listens with the platform’s own PerformanceObserver, accumulates layout shift with the standard session-windows rule, estimates INP the way the metric is defined, and sends one compact event per page load, when the page is first hidden. A metric that never happened is omitted rather than zeroed: a visit with no interaction reports no INP at all.

Each visit is rated against Google’s published thresholds, and the dashboard reports the p75, the same statistic Google’s field tooling reports, so your numbers and Search Console argue about the same quantity.

The capture rides in the same 1.9 KB extras file as click and scroll tracking, loaded from your own instance once you switch it on. No third-party performance service sees your traffic, and no measurement library is added to your bundle.

II

The dashboard

What does the vitals view show?

Three layers. Five p75 cards, one per metric, each with the split of good, needs-improvement and poor visits behind it. A daily p75 trend, which is where a regression shows up the day a deploy causes it. And a per-page table, slowest LCP first, with each page’s p75 LCP, INP and CLS set beside how many loads it carries, so the effort goes where the traffic is.

That last column is the point. A slow page with real traffic outranks a slower page nobody visits, and the table keeps both facts in the same line of sight.

III

Field and lab

Do I still need Lighthouse?

Yes, for what it is for. Lighthouse and similar lab tools run one synthetic load on one simulated device, which is exactly what you want while fixing a page and watching a number move. Field data answers the other question: what the fleet of real visitors, on real devices and networks, actually experienced. The two disagree routinely, and both are right.

Field numbers also need traffic to be stable. On a page with a handful of loads a day, the p75 will wander; read the trend rather than a single day, and trust the busy pages first.

IV

The thresholds

The five metrics, rated

LCP · largest contentful paint
Good: 2.5 s or under
Poor: over 4.0 s
INP · interaction to next paint
Good: 200 ms or under
Poor: over 500 ms
CLS · cumulative layout shift
Good: 0.1 or under
Poor: over 0.25
FCP · first contentful paint
Good: 1.8 s or under
Poor: over 3.0 s
TTFB · time to first byte
Good: 0.8 s or under
Poor: over 1.8 s

Google’s published thresholds. Between the two figures is rated needs improvement. juuna rates each visit on these and reports the p75.

§

Asked and answered

What is a good LCP score?
2.5 seconds or under at the 75th percentile is rated good, and over 4 seconds is poor. juuna rates every real visit on those thresholds and tracks the daily p75 per page, which is the number worth improving.
Why do my numbers differ from Lighthouse?
Lighthouse is a lab: one synthetic load, one simulated device, one network profile. juuna reports the field: the p75 of what real visitors experienced. A page can pass in the lab and fail in the field, usually on slower devices than the lab simulates. Both numbers are true; they answer different questions.
Does measuring Web Vitals slow the site down?
The observers are the browser’s own and cost close to nothing. Capture ships in a 1.9 KB extras file served from your instance, and the summary is sent once per page load, when the page is first hidden.
Which pages should I fix first?
The per-page table sorts by slowest LCP and shows each page’s load count beside its p75s. Start where slow meets busy; a poor score on a page nobody visits can wait.

Keep reading

Heatmaps · Replace your analytics stack · juuna vs Google Analytics · juuna vs PostHog · The integration docs · Pricing

Know how fast it actually feels.

Flat plans, everything included; every paid plan is a dedicated instance of your own.