Lighthouse Score Interpretation
What the 0–100 Lighthouse score means, metric weights, variance, and how not to game it.
- performance
- lighthouse
- lab
- core-web-vitals
Lighthouse produces a flashy Performance score (0–100) from lab metrics. It is a weighted diagnostic, not your field Core Web Vitals, and not a perfect ranking of product quality. Use it to catch regressions and prioritize audits — not as the only KPI.
Docs: Lighthouse scoring, Metric weights.
Score is a weighted blend
Weights change across Lighthouse versions. Conceptually they emphasize:
- LCP
- INP-related / TBT (lab interactivity proxies evolved over time)
- CLS
- FCP / Speed Index (supporting)
Always check the version’s weight table before arguing about a 2-point swing.
Variance is normal
Run 5 times → scores bounce. Causes: network noise, CPU contention, A/B, extensions. In CI use median of multiple runs or controlled lab machines. Don’t panic over 87 → 84.
Lab metrics ≠ field CWV
| Lighthouse | Field |
|---|---|
| Simulated throttling | Real users |
| TBT | INP |
| Single page load script | Whole session |
A site can score 90 lab and fail field INP on a heavy dashboard interaction. See Lab vs field.
Reading the report usefully
- Metrics — which failed?
- Opportunities — byte-level savings estimates (directional).
- Diagnostics — main-thread work, third parties.
- Passed — don’t regress these.
Treat “Reduce unused JavaScript” as a lead, confirm with coverage and product reality (admin code on admin routes is fine).
Gaming vs improving
| Game | Real improve |
|---|---|
| Block all third parties only in Lighthouse UA | Lazy-load tags for everyone |
display: none LCP content |
Faster real LCP element |
| Artificial empty page | Optimize actual template |
Synthetic games eventually show up in CrUX and product metrics.
CI use
- Fail on metric thresholds (LCP ms, CLS) more than score alone.
- Budget categories separately — performance budgets.
- Compare against same Lighthouse major version.
Interview out-loud
“Lighthouse score is a weighted lab composite with run variance. I use metric-level results and audits to debug, enforce CI thresholds on LCP/TBT/CLS, and judge user experience with field CWV, not score alone.”
How this shows up in interviews
Be ready to define the metric or technique in one sentence, name one measurement approach (DevTools panel, web-vitals, or headers), and cite a concrete fix you would try first. Walk through a before/after: what the waterfall or flame chart showed, what you changed, and which percentile moved. Mention a tradeoff (complexity, caching correctness, or third-party business constraints) so the answer doesn’t sound like a blog checklist.
Production guardrails
Ship behind a flag when the change is risky, watch field p75 for the affected template for at least a few days, and keep a rollback path. Pair lab verification (throttled Performance/Network) with RUM so you don’t celebrate a Lighthouse-only win. Document the owner of any ongoing budget or third-party exception.
Related
Further depth
Teams often under-invest in this topic until an incident or CWV regression. Schedule a one-hour drill: reproduce the failure mode in DevTools, list the top three mitigations for your stack, and file tickets with owners. Revisit after the next major feature that touches networking, rendering, auth, or third parties — those are the moments regressions land. Keep primary documentation links in the runbook so on-call is not searching chat history at 2am.
Concrete artifacts to leave behind: a short architecture note, a CI assertion or header snapshot, and a dashboard panel (lab or field) that would have caught the last bug. Teaching the rest of the team the mental model matters as much as the one-line fix.
Further reading
Related guides
- Lab vs Field DataLighthouse lab vs CrUX/RUM field: what each is for, how they diverge, and how to use both.
- Performance Budgets in CIEncode LCP/size budgets in CI with Lighthouse CI or size-limit so regressions fail pull requests.
- Avoiding Layout ThrashingStop forced sync layout loops: batch DOM reads and writes, use rAF, and fix janky measurement code.
- Caching Static Assets FingerprintingContent-hash filenames, long-cache headers, HTML revalidation, and CDN invalidation without stuck users.
- CLS Optimization TacticsFix cumulative layout shift: dimensions, font metrics, reserved slots, and stable late-loading UI.