Web performance instrument
A Lighthouse performance score is a weighted average of five sub-scores, and each sub-score comes from a log-normal curve rather than a threshold. That makes it genuinely hard to guess where your points went. Put your five values in and the arithmetic is done exactly as Lighthouse does it.
| Metric | Sub-score | Weight | Points | To gain |
|---|
Each metric is converted to a sub-score between 0 and 1 by a log-normal curve defined by two control points: the value that scores 0.9 (called p10) and the value that scores 0.5 (the median). Those control points differ between the mobile and desktop profiles, which is why the same page scores differently on each.
The five sub-scores are then combined with fixed weights: Total Blocking Time 30 percent, Largest Contentful Paint 25 percent, Cumulative Layout Shift 25 percent, First Contentful Paint 10 percent, Speed Index 10 percent. The weighted sum, rounded, is the performance score.
Because the curve is continuous, there is no cliff at the "good" threshold. Going from 4.0 s to 3.5 s of LCP earns real points even though both are outside the good range, and shaving 100 ms off an already fast metric earns almost nothing. The "to gain" column shows the points still available on each metric if you brought it all the way to its 0.9 control point, which is usually where effort is best spent.
It does not measure your site. It takes values you already have from a Lighthouse report, PageSpeed Insights or a lab run, and reproduces the arithmetic so you can see the shape of your own trade-off. Field data from real users can differ from any lab run, and only field data reflects what your visitors experience.
The scoring curve, control points and weights implemented here are read from the Lighthouse source (shared/statistics.js and core/audits/metrics/). This is an independent tool and is not affiliated with or endorsed by Google.