The math behind your Nightingale score
Every page load recorded by Nightingale is assigned a score from 0 to 100. The overall score gives you a single number to track over time. But it is a weighted summary, not a black box. Here is exactly how it works.
The five metrics
Nightingale measures all five Core Web Vitals and diagnostic metrics: LCP, INP, CLS, FCP, and TTFB. Each one is scored individually on a 0–100 curve based on Google's published thresholds for good, needs improvement, and poor.
The curve is the same log-normal one Lighthouse and PageSpeed Insights use, anchored at the same points: a metric sitting exactly on its "good" threshold scores 90, and one sitting on its "poor" threshold scores 50. So a 90 here means the same thing it means there.
Values past the poor threshold decay gradually rather than cliff-edging to zero, because a site at 4.1s LCP is meaningfully better than one at 12s even though both are "poor."
Your score comes from your p75, not from single page loads
Nightingale aggregates each metric across the page loads in your selected date range first — by default the 75th percentile, the same convention Google and Chrome's own field data use — and then scores those five numbers. Your overall score is always a summary of the five figures shown next to it on the dashboard.
This matters because a single page load rarely measures everything. INP only exists if the visitor actually interacted with the page, and CLS and LCP are finalised when they leave it. A metric with no data is left out of the calculation and the remaining weights are rescaled — it is never assumed to be perfect, which would quietly inflate your score every time a visitor bounced.
The weightings
The five individual scores are combined into an overall score using weightings based on Google's Lighthouse method, adjusted for real-user data:
| Metric | Weight |
|---|---|
| LCP Largest Contentful Paint | 25% |
| INP Interaction to Next Paint | 30% |
| CLS Cumulative Layout Shift | 25% |
| FCP First Contentful Paint | 10% |
| TTFB Time to First Byte | 10% |
LCP and INP carry the most weight because they most directly affect how fast and responsive a page feels to a real user. CLS follows closely. Unexpected layout shifts disrupt the experience. FCP and TTFB are included as diagnostic signals rather than primary measures of user experience, so they carry less weight.
How Nightingale differs from Lighthouse
Lighthouse uses Total Blocking Time and Speed Index in its scoring. Both are lab metrics that can't be measured from real users. Nightingale replaces these with INP and TTFB respectively, which measure the same problems from actual page loads rather than simulated ones.
The other difference is the input. Lighthouse scores one simulated load on one device; Nightingale scores the aggregate of every real visit in your date range. Expect the two numbers to differ — a Lighthouse run is a controlled lab measurement, while your Nightingale score includes the slow phones and bad connections your actual visitors are on.
Frequently Asked Questions
Why does a good score on every metric not always equal 100?
Because the curve rewards being well inside "good" rather than just scraping past the threshold. Metrics sitting exactly on their "good" thresholds score 90 — the bottom of the green band, not the top. A perfect score requires consistently excellent performance across all five metrics, not just clearing the bar.
Why is my Nightingale score lower than my PageSpeed score?
PageSpeed and Lighthouse score a single simulated page load, usually on a fast connection. Nightingale scores the 75th percentile of your real visitors, which includes the slower quarter of their devices and networks. The scoring curve is identical — the difference is that one is a lab test and the other is what your visitors actually experienced.
What happens if a metric has no data?
It is excluded, and the remaining weights are rescaled so the score reflects only what was measured. INP in particular needs the visitor to interact with the page, so it is often missing. Treating a missing metric as a perfect one would inflate your score every time somebody bounced.
Start monitoring your real users
See exactly how your site performs with Core Web Vitals, GitHub sync, and straightforward pricing.