Zum Inhalt springen
Core Web Vitals specialists
Analyse

Reading a Lighthouse Report and Prioritizing Fixes

How to read a Lighthouse report correctly: which five metrics weight the score, why opportunities act indirectly and how to prioritize by estimated savings.

14 min read LighthousePageSpeed InsightsAuditMetrikenPriorisierung

A click on Analyze, a few seconds of waiting, and the Lighthouse report appears: a big number in a ring, and below it a long, colorful list of red and orange entries. The first reflex is understandable but wrong - you work through the red items top to bottom and hope the score climbs. This is exactly where a lot of effort evaporates, because the score is not built from that list. Only five (Chrome for Developers) metrics weight the performance score, and the colorful opportunities beneath them do not count into it directly. Anyone who reads a Lighthouse or PageSpeed Insights report correctly can see within minutes which measure has the greatest leverage - and which red entry can safely wait. This article shows how the five metrics weight the score, why opportunities and diagnostics act only indirectly, how to prioritize by estimated savings instead of by red color, why scores fluctuate between two runs, and how to keep the lab audit cleanly separate from the field data. Anyone who wants to turn that reading into a robust priority list will find the right framework in a structured Lighthouse audit.

Reading and Prioritizing a Lighthouse ReportOnly five metrics weight the score - opportunities act indirectlyPerformance score68out of 1006805090100These five metrics weight the scoreTotal Blocking Time30 %Largest Contentful Paint25 %Cumulative Layout Shift25 %First Contentful Paint10 %Speed Index10 %TBT, LCP and CLS together make up 80 percent of the scorePrioritize by estimated savings, not by red colorAn opportunity does not count directly - it lifts the metric that counts.OPPORTUNITYUnused JS: 0.9 sLIFTS WEIGHTED METRICTBT - 30% weightRESULTScore rises

What the Report Really Shows

PageSpeed Insights shows two reports in one, and this separation is the starting point for every correct reading. At the very top - where available - are the field data from the Chrome User Experience Report (CrUX): real user experiences of the past 28 days, reported at the 75th percentile (web.dev). Below that follows the actual lab audit from Lighthouse: the performance score, the five metrics and the list of opportunities and diagnostics. Both parts answer different questions. The field data say whether real users experience a problem and whether Google sees it; the lab audit says why a page is slow and where to start. This article covers the lab audit - reading and acting on the synthetic report. The field side with budgets and the 75th percentile is explored in our article on RUM versus CrUX field data.

The performance score itself is a number from 0 to 100 and falls into three color bands: 0 to 49 red, 50 to 89 orange and 90 to 100 green (Chrome for Developers). This coloring tempts you to treat every red bar as equally urgent. In fact the score is a weighted average of a few metrics whose curves are derived from real website data in the HTTP Archive (Chrome for Developers). Anyone who understands this reads the report not as a task list but as a diagnosis - and derives the most effective steps from it, often within a performance analysis.

Two Reports, Two Purposes

Do not confuse the lab score with the field evaluation. The colorful Lighthouse score is a simulated snapshot for diagnosis. The evaluation that feeds into Google Search comes from the CrUX field data at the top of the report. Read the two separately - and draw no ranking conclusions from the lab audit.

The Five Metrics That Weight the Score

The entire performance score is formed from exactly five metrics, each with a fixed weight (Chrome for Developers). The list of opportunities and diagnostics below does not belong to it. Anyone who wants to move the score must first know which metric counts how much - because an improvement to a heavily weighted metric works many times more strongly than the same effort on a lightly weighted one.

MetricWhat it measuresWeight
Total Blocking Time (TBT)sum of main-thread blocking after first content30 %
Largest Contentful Paint (LCP)time to the largest visible element25 %
Cumulative Layout Shift (CLS)sum of unexpected layout shifts25 %
First Contentful Paint (FCP)time to the first visible content10 %
Speed Index (SI)how quickly the visible area is filled10 %

Almost everything else follows from this distribution. Total Blocking Time and Largest Contentful Paint together make up almost half of the score (DebugBear), and with Cumulative Layout Shift the three together stand for 80 percent (Chrome for Developers). First Contentful Paint and Speed Index share the remaining 20 percent. Each metric is also translated into a sub-score via a log-normal curve: the first improvements bring the biggest jump, after which the gain flattens off (Chrome for Developers). Bringing a page from a very slow to a middling TBT therefore raises the score noticeably more than the final polish of an already good metric.

In practice this means: Total Blocking Time is the most important lever in the lab, and it usually hangs on too much or poorly split JavaScript that blocks the main thread. How to keep this in check with a budget is shown in our article on JavaScript performance budgets. Total Blocking Time is at the same time the lab proxy for the interaction latency measured in the field, which we cover in our article on Interaction to Next Paint. Cumulative Layout Shift, in turn, arises from jumping layouts - what helps against it is described in our article on avoiding layout shifts.

Weight Beats Color

The score is a weighted average. A metric with 30 percent weight moves it three times as much as one with 10 percent. Before you touch any red entry, therefore clarify: which of the five metrics is furthest from the green range and at the same time carries a lot of weight? That is where the greatest leverage lies - regardless of how long the red list below is.

Why Opportunities and Diagnostics Act Only Indirectly

Below the score, Lighthouse lists two blocks: opportunities with an estimated time saving in seconds, and diagnostics with supplementary context. Both are extremely useful - but only these five metrics count for the performance score; the results of the opportunities and diagnostics do not feed in directly (DebugBear). There is only an indirect relationship: whoever implements an opportunity usually improves one of the metrics, and via that metric the score then rises (Chrome for Developers).

Not Every Red Entry Is Urgent

An opportunity with a large estimated saving sounds tempting, but it only helps the score if it moves a weighted metric that is not yet good. A recommendation that concerns only an already green metric barely lifts the score - however impressive the number of seconds next to it looks. Treat the list as a symptom display, not as a to-do list sorted by importance.

The value of the opportunities lies in pointing the way from the metric to the concrete cause. An entry like remove unused JavaScript targets Total Blocking Time; preload or correctly size the largest image element targets Largest Contentful Paint; explicit size attributes for images and embedded content target Cumulative Layout Shift. The diagnostics add context - such as the breakdown of main-thread work or the number of network requests. Together they explain the why behind a weak metric that the bare number ring does not show. Which of the five metrics are in focus in 2026 is placed in context by our article on the Core Web Vitals of 2026.

Prioritize by Estimated Savings, Not by Red Color

The real art of reading the report is prioritization. Instead of working through the red list from the top, you combine three pieces of information: which metric is weak and heavily weighted, which opportunity pays into that metric, and how large its estimated saving is. Only this triangle of weight, mapping and savings potential yields an honest order.

  1. Weak, heavy metric first: Start with the metric that is furthest from the green range and at the same time carries a lot of weight - usually Total Blocking Time or Largest Contentful Paint.
  2. Map opportunities to that metric: Filter the list by which recommendation improves exactly this metric. Only these entries pay into the score right now.
  3. Sort by estimated saving: Within the mapped opportunities, take the ones with the largest time saving first, because that is where the likely largest metric gain lies.
  4. Set aside already green metrics: Recommendations that only concern an already good metric move to the end - regardless of the color next to them.
  5. Re-measure after every change: A fix can shift another metric. Measure again and re-order the list before taking the next step.

An example makes the difference clear. Suppose Total Blocking Time is red and an opportunity promises 0.9 seconds by removing unused JavaScript - then that is the first move, because TBT carries the highest weight at 30 percent. If another recommendation nearby tempts with a 1.2-second saving but only concerns the already good Largest Contentful Paint, it moves to the back despite the bigger number. Not the largest number of seconds wins, but the largest effect on the weighted score. Many of these causes are platform-typical: how they show up in a shop is described in our article on Shopware performance and loading times; the most common brakes in a CMS are covered in the article on WordPress performance and its bottlenecks.

The red list is a symptom display, not a to-do list sorted by importance. Priority comes from the weight of the metric times its distance to the green range - not from the color of the bar.

Principle from report analysis

Why the Score Fluctuates

A common frustration: two runs in quick succession, without any code change, and the score jumps from 68 to 74 and back. This is not a bug but the consequence of a synthetic measurement depending on many fluctuating factors. Anyone who knows this does not confuse normal noise with real progress or regression.

Nondeterminism

A/B tests, changing ads and differently served scripts load differently on each run and change the result (Chrome for Developers).

Network and server

Packet loss, changed routing and fluctuating server load lead to different response times - especially on shared hosting.

Test environment

The simulated CPU throttling to a Moto G4-class device - about fourfold - plus browser extensions and antivirus software influence the value (web.dev).

The consequence is simple: a single run is not a reliable value. Google recommends testing a page several times and taking the median, rather than relying on a single measurement (web.dev). This smooths the noise and reveals whether a change really took effect. That is exactly why the report is a tool for repeated inspection, not for a one-off sign-off - fast loading is a state you continually safeguard, as our article on the link between loading time, conversion and revenue shows.

Measure Cleanly

Test the same page several times and take the median as your reference. A difference of a few points between runs is normal; only a larger, repeatable jump is a real signal. For a calm picture, a test in an incognito window without extensions and without parallel load on the machine helps.

Separate Lab From Field

The most important thinking error when reading the report is to understand the lab score as a ranking grade. Google evaluates the user experience via the field data from the Chrome User Experience Report at the 75th percentile - not via the Lighthouse score (Google Search Central). The lab audit and the field data diverge for systematic reasons, and a perfect lab score does not assure a good field evaluation (web.dev). Both are valuable, but for different purposes: the lab diagnoses and verifies changes under controlled conditions, the field shows what real users experience.

AspectLab audit (Lighthouse)Field data (CrUX)
Environmentone simulated test, fixed device and networkreal Chrome users, all devices and networks
What it answerswhy a page is slowwhether real users experience a problem
Ranking impactnone directlyevaluated at the 75th percentile
Best usediagnosis and regression checkyardstick for reality

In practice the two work together: you read in the field report whether a problem exists at all, and then use the lab audit to find the cause and verify a fix. Anyone who chases only the lab score may optimize past a value that is not a bottleneck in the field - or overlook a field problem that does not appear in a single lab run. How to bring together field data, budgets and the 75th percentile is explored in our article on RUM versus CrUX field data.

From Report to Priority List

In our projects we consistently treat the report as a diagnosis, not as a checklist. First we separate lab and field data and clarify whether a field problem exists at all. Then we read the lab audit along the five weighted metrics, map the opportunities to the weak, heavily weighted metrics and sort them by estimated savings potential. After that we implement the most effective steps - usually on Total Blocking Time and Largest Contentful Paint - measure the median of several runs and then check the effect in the field data. This approach is the core of a structured performance analysis and feeds into ongoing frontend optimization.

Read

Separate lab from field, understand the score as a weighted average of the five metrics, and read the opportunities as cause hints, not as a ranking.

Prioritize

Order by weight times distance to the green range, map opportunities to their metric and rank them within by estimated saving.

Implement and prove

Implement the most effective steps, measure the median of several runs and prove the improvement in the field - instead of trusting a single run.

This turns a colorful report into a clear order that directs effort to where it moves the most. Anyone who wants not just to look at their report but to translate it into a robust priority list gets a structured performance report from a professional Lighthouse audit - and with it the framework in which the individual steps come together into measurable web performance services.

Sources and Studies

This article is based on data from: Chrome for Developers (Lighthouse) - Lighthouse performance scoring, metric weights, the score color bands, score variability and the indirect link between opportunities and the score; web.dev (Google) - Why lab and field data can be different, Lighthouse variability, CPU throttling and the recommendation to use the median of several runs; Google Search Central - evaluation of the Core Web Vitals via CrUX field data at the 75th percentile; DebugBear - composition of the performance score and the role of opportunities and diagnostics. Thresholds and weights reflect the state of May 2026.