Skip to main content

Confirm

Are you sure?

Research

Lighthouse variance: how much does one audit move?

The same page, the same engine, ten audits in a row — and a performance score that won't sit still.

By · Last updated: September 2026

TL;DR

Ten back-to-back mobile Lighthouse 13 audits of the same page gave performance scores that ranged from 0 points apart (Hacker News, 100 every time) to 61 points apart (the BBC News front page, 12 to 73). Two of five pages stayed within 2 points; three moved by 16 points or more. Accessibility, best practices and SEO moved by at most 7. One audit is a sample, not a verdict.

Free plan, no credit card. 1,000 credits a month.

Summary

The results

Performance score of 10 consecutive mobile audits per page, measured on 2026-09-24.

PageMinMedianMaxRangeRuns within 5 points of the median
news.ycombinator.com100100100010 of 10
tailwindcss.com585960210 of 10
stripe.com3237.548167 of 10
en.wikipedia.org/wiki/Headless_browser597790313 of 10
bbc.com/news124773615 of 10

The spread is a property of the page, not a constant. A light page with nothing competing for the main thread scores the same every time. A heavy page that loads ads, experiments or a banner that is only sometimes there can land anywhere in a 30- or 60-point band — on the same engine, minutes apart.

The other three categories are far steadier, because they are mostly checks on the markup rather than timings: across all 50 audits, accessibility moved by at most 3 points on any page, best practices by at most 4 and SEO by at most 7 — and the one page where they moved at all was also the one whose layout shift says its content changed between loads.

Under the score

Which metrics move

The performance score is a weighted blend of five lab metrics — Total Blocking Time 30%, Largest Contentful Paint 25%, Cumulative Layout Shift 25%, First Contentful Paint 10%, Speed Index 10% — so a swing in a heavily weighted metric moves the score most.

PageMetric that moved mostMinMax
bbc.com/newsCumulative Layout Shift0.0910.814
bbc.com/newsTotal Blocking Time409 ms1,994 ms
stripe.comTotal Blocking Time1,081 ms5,302 ms
stripe.comLargest Contentful Paint4.7 s11.1 s
en.wikipedia.org/wiki/Headless_browserLargest Contentful Paint1.8 s5.2 s
en.wikipedia.org/wiki/Headless_browserCumulative Layout Shift0.1510.656
tailwindcss.comLargest Contentful Paint15.7 s22.6 s

Layout shift is the least intuitive one: it is not noise in the measurement but a different page. When something is injected above the content on one load and not on the next, CLS jumps from a pass to a clear fail, and because it carries a quarter of the weight the score follows. Tailwind's page shows the opposite case — a Largest Contentful Paint that swung by seven seconds while the score moved two points, because it was deep in the failing range either way.

In practice

What to do about it

  • Never compare two single runs. A 10-point drop between two audits of the BBC front page is well inside what one page did to itself in ten minutes.
  • Take the median of several runs. Medians of three consecutive runs here were 73, 70 and 88 for the Wikipedia page — still wide — so for a noisy page use five or more, and compare medians.
  • Read the metrics, not the score. A CLS that flips between 0.09 and 0.8 is telling you about an element that only sometimes appears, which is a real bug worth finding.
  • Track categories separately. Accessibility, best practices and SEO hardly moved, so a change in them is a change in the page.
  • For monitoring, use field data or a trend. Lab audits are for diagnosing; a site's real-user Core Web Vitals, or a rolling median of many audits, is what should trigger an alert.

With URLpipe each audit of the same URL and options is stored, so a repeat inside max_age returns the same report, free. To collect several independent samples, send max_age: 0, which forces a fresh audit each time.

Five fresh audits
for i in 1 2 3 4 5; do
  curl -s -X POST https://urlpipe.dev/lighthouse \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"url": "https://example.com", "max_age": 0, "sync": true}' \
  | jq '.categories.performance.score'
done

If you would rather have someone run the audits on a schedule, keep the history and tell you what regressed, that is what our sister product Full Stack Audit does.

How it was measured

Method

  • Lighthouse 13.4.0 driving Chrome 153 — the Lighthouse service URLpipe runs in production, as a local container — with Lighthouse's default mobile emulation and simulated throttling, which is what /lighthouse uses when you don't pass device.
  • Five public pages chosen to span light to heavy. Ten audits of each, round-robin — every page once, then every page again — so a slow minute on the network affects all five pages rather than one. 50 audits between 15:31 and 15:42 UTC on 2026-09-24, one at a time, every one successful.
  • Each audit in a fresh Chrome, as the service always does.
  • Run on a developer machine, not on the production servers, with other work running on it. Contention on the machine is part of the variance; a quieter machine would likely narrow the stable pages' bands a little and do nothing about a page that changes between loads.

Read before citing

Limits of this study

  • Five pages and ten runs each is enough to show that the spread depends on the page, and not enough to put a number on "typical" variance.
  • Mobile emulation only; desktop audits were not measured here.
  • Live pages: part of what moved is the pages themselves — banners, ads, experiments — which is also what your own audits will see.

FAQ

Frequently asked questions

Why does my Lighthouse score change every time I run it?
Because the performance score is built from timings that vary between loads, and because many pages are not the same page twice — ads, experiments and banners change what loads. In our runs the same page moved by up to 61 points.
How many Lighthouse runs should I average?
At least three, and five or more for a heavy page; compare medians, not single runs. A light, stable page may give the same score every time.
Do accessibility and SEO scores vary between runs too?
Much less. Across 50 audits they moved by at most 3 and 7 points, and only on one page whose content changed between loads.
Which Lighthouse metric varies the most?
It depends on the page. On a news front page it was Cumulative Layout Shift, from 0.09 to 0.81; on a heavy marketing page, Total Blocking Time, from about 1 to 5.3 seconds.
Does URLpipe return the same Lighthouse report twice?
Yes, within max_age: a repeat request is served the stored report, free. Send max_age: 0 to force a fresh audit.

Try the converter on your own pages.

Free plan, no card. Confirm your email and your API key is live — you'll be making real requests in minutes.