How the Lighthouse performance score is calculated

The 0 to 100 Lighthouse score is a weighted average of five metrics. The weights, the scoring curves, worked examples and why 90 is not 100.

IntermediateExplainer7 min readUpdated October 29, 2026

In this guide
  1. What the score is
  2. The five metrics and their weights
  3. How a metric becomes a score
  4. Worked examples
  5. Using the weights to decide what to fix
  6. Why the score changes from run to run
  7. What the score cannot tell you
  8. Check your own page
  9. Sources

What the score is

Lighthouse loads your page once in a lab, measures a handful of timings, and combines them into a single number from 0 to 100. In the report, 90 to 100 is shown in green, 50 to 89 in orange and 0 to 49 in red. It is the big circle at the top of the performance section in Lighthouse and in the lab part of PageSpeed Insights.

It is useful as a quick summary and as a way to compare two tests of the same page. It is not a measurement of how real visitors experience the page. The Core Web Vitals are judged on data from real visits, which is a different thing, and lab and field numbers often disagree.

The five metrics and their weights

In Lighthouse 13.5, the score is built from these metrics:

MetricWeightWhat it describes
Total Blocking Time30%How long scripts kept the page unresponsive while it loaded
Largest Contentful Paint25%When the main content appeared
Cumulative Layout Shift25%How much the page jumped around
First Contentful Paint10%When the first content appeared
Speed Index10%How quickly the visible page filled in

Two things are missing from the table on purpose. Interaction to Next Paint (INP) is a Core Web Vital, but it needs a person tapping, so it has weight 0 in a standard load test. Time to Interactive is still calculated inside Lighthouse but no longer counts: in older versions it carried 10%. The weights have changed over time as the Lighthouse team learned what matters most to visitors. In Lighthouse 8, for example, Cumulative Layout Shift counted for 15%.

The long list of recommendations below the score, the insights and diagnostics, does not feed into it. Lighthouse's documentation puts it plainly: only the metrics contribute. Fixing a recommendation raises the score only if it improves one of the five metrics.

How a metric becomes a score

Each metric has two control points: the value that earns a score of 90, and the value that earns 50. Lighthouse draws a smooth curve through them, so a faster result always earns more, but with diminishing returns. Here are the control points for the test settings Lighthouse uses by default:

MetricMobile: 90 atMobile: 50 atDesktop: 90 atDesktop: 50 at
First Contentful Paint1.8 s3.0 s0.93 s1.6 s
Speed Index3.4 s5.8 s1.3 s2.3 s
Largest Contentful Paint2.5 s4.0 s1.2 s2.4 s
Total Blocking Time200 ms600 ms150 ms350 ms
Cumulative Layout Shift0.10.250.10.25

The control points were set from how real websites in the HTTP Archive performed, so the scale reflects the web as it was when they were chosen. The mobile marks for LCP, FCP and CLS are the same as Google's "good" and "poor" marks for real visits. The desktop control points are tighter, since a desktop test assumes a faster computer and connection: a First Contentful Paint of 1.8 seconds, a 90 on mobile, scores about 38 on desktop.

Here is what the curve does for some mobile values. These numbers were calculated with Lighthouse's own scoring function.

LCPMetric scoreTBTMetric scoreCLSMetric score
1.5 s1000 ms1000100
2.0 s97100 ms980.0599
2.5 s90200 ms900.190
3.0 s78300 ms790.1576
4.0 s50600 ms500.2550
6.0 s131,000 ms270.425
8.0 s22,500 ms41.02

Three things stand out. First, 90 is where "good" lands, so a page that only just meets Google's marks on every metric scores about 90 overall, not 100. Second, the top of the scale is flat: going from an LCP of 1.5 seconds to 1.0 seconds earns nothing. Third, the middle of the scale is steep, so moving a slow metric to a mediocre one gains much more than moving a good one to an excellent one.

Worked examples

The overall score is the weighted average of the five metric scores. Two made-up pages show how one weak metric pulls the whole number down.

Page A has slow scripts. Everything is at the "good" mark except Total Blocking Time, which is 1,000 milliseconds, scoring 27. TBT carries 30% of the weight, so it takes away about 22 points. The overall score is 73.

Page B has a heavy main image. Everything is good except LCP, at 5 seconds, scoring 27. With a weight of 25%, it takes away about 18 points. The overall score is 76.

A page at the "good" mark on all five metrics scores 90. A page at the 50 mark on all five scores 50. A page with an FCP of 1.0 seconds, an LCP of 1.5 seconds, a TBT of 100 milliseconds, no layout shift and a Speed Index of 2.0 seconds scores 99.

Using the weights to decide what to fix

Each metric's contribution is its weight times its score. The points you are losing on a metric are its weight times the gap to 100. For Page A above, that is 30 × 0.73 = about 22 points on TBT and nothing noticeable on the others. Look at your own report the same way: find the metric with the lowest score, multiply the gap by its weight, and fix that one first. Because Total Blocking Time has the largest weight, JavaScript is the biggest single lever on the lab score.

You can try your own numbers in the official Lighthouse scoring calculator.

Why the score changes from run to run

Lighthouse's own documentation says that most of the variation is not caused by Lighthouse but by what is being measured and where. The guide on why scores change goes through all seven sources. The common ones are:

How to cope with it:

  1. Run the test several times and use the median. Three is a minimum; the Lighthouse team says the median of five runs is twice as stable as one run.
  2. Keep the conditions the same. The same page address, the same device setting (mobile or desktop), the same tool, ideally the same time of day.
  3. Test in a clean browser. A private window with extensions turned off removes a common source of noise.
  4. Do not chase small differences. A change of a few points between two single runs is noise. A change of 10 or more that holds up across runs is a real result.

What the score cannot tell you

Chasing the last few points rarely pays. Once the field data is good and the lab score is in the green, time is better spent on content and on the pages that matter most to your business.

Check your own page

Run the free audit and look at the performance score next to the five metric values underneath it. Find the metric with the lowest score and the highest weight, and read the guide for it. Then run the test three times before you decide that a change worked.

Sources

Start here

Free website audit

Live Google data for any public page: mobile and desktop.

Mobile + desktop · Lighthouse lab test · Real-user Chrome data when Google has it

Rather have this done for you? Core Web Vitals · Book a call

Related guides

All guides →