Google Lighthouse

What Google Lighthouse is, how the Performance score is calculated, why it varies, and why it's lab data — not a ranking signal. With the metric weights and color bands.

First published: Jun 26, 2026 · Last updated: Jul 18, 2026 · Advanced
demand #1 in Web Performance Tools#1 in Web Performance#2 in Technical SEO#3 on the site

Lighthouse is Google's open-source tool that audits a page in simulated lab conditions and scores it 0–100 across Performance, Accessibility, Best Practices, and SEO. The Performance score is a weighted average of five lab metrics (TBT 30%, LCP 25%, CLS 25%, FCP 10%, Speed Index 10%). It's lab data, not field data — so it is not the Core Web Vitals ranking signal, it can't measure INP the way the field does, and it varies run-to-run. It powers the lab section of PageSpeed Insights; PSI adds CrUX field data on top. A 100 doesn't buy you rankings.

TL;DR — LighthouseLighthouse is Google's free, open-source tool that audits a page under simulated lab conditions and scores it 0–100 across Performance, Accessibility, Best Practices, and SEO. It's lab data — useful for debugging, not a ranking signal. is an open-source, automated tool that audits a page in lab conditions (simulated Slow 4G + 4× CPU throttle) and scores Performance, AccessibilityWeb accessibility means designing sites so people with disabilities can use them, per the W3C's WCAG guidelines. It overlaps with SEO in specific, checkable ways — alt text, heading structure, descriptive link text, captions, and page speed all serve both audiences — but Google has said accessibility itself is not a ranking factor, and most WCAG success criteria (keyboard focus order, ARIA live regions, form labels) have no SEO effect at all., Best Practices, and SEO — PWA was dropped in Lighthouse 12. The Performance score is a weighted average of five lab metrics: TBTTotal Blocking Time — the sum of the blocking portion (time above 50 ms) of every long task between First Contentful Paint and Time to Interactive. It's a lab-recommended metric and the lab proxy for INP, not a Core Web Vital. 30%, LCPLargest Contentful Paint — render time of the largest visible image or text block, relative to when the page started loading. ≤2.5 s (at the 75th percentile) is good. 25%, CLSCumulative Layout Shift — a unitless score for unexpected visual movement, taken from the largest burst (session window) of layout shifts, not the lifetime sum. ≤0.1 is good. 25%, FCPFirst Contentful Paint — the time from when a page starts loading to when any part of its content (text, image, SVG, or non-white canvas) first renders. Good is ≤1.8 s at the 75th percentile. It's a diagnostic metric, not a Core Web Vital. 10%, Speed IndexSpeed Index measures how quickly content is visually displayed during page load — the average time at which visible parts of the page appear, scored in seconds (lower is better). It's a lab-only Lighthouse metric, not a Core Web Vital and not a ranking factor. 10%. Bands: 0–49 red, 50–89 orange, 90–100 green. It’s lab data, so it is not the Core Web VitalsGoogle's three real-user UX metrics — LCP (loading), INP (responsiveness), and CLS (visual stability) — used by Google's ranking systems, with no official weight attached, measured on field data. ranking signal, it can’t measure INPInteraction to Next Paint — the input-to-paint latency at the 75th percentile of a page's interactions. ≤200 ms is good. the way the field does (it uses TBTTotal Blocking Time — the sum of the blocking portion (time above 50 ms) of every long task between First Contentful Paint and Time to Interactive. It's a lab-recommended metric and the lab proxy for INP, not a Core Web Vital. as a proxy), and it varies run-to-run. It powers the lab half of PageSpeed InsightsPageSpeed Insights (PSI) is a free Google tool at pagespeed.web.dev that reports two kinds of data for a URL: real-user field data from the Chrome UX Report and a single Lighthouse lab run with the 0–100 Performance score. Only the field Core Web Vitals are what Google uses for ranking.; PSI adds CrUXChrome User Experience Report — Google's public dataset of real-world (field) performance data from eligible Chrome users. It's the official field-data source behind the Core Web Vitals program. field dataPerformance metrics captured from real users, not lab tests. on top. A 100 doesn’t buy rankings.

What Lighthouse actually is

Google’s own one-liner is the cleanest definition: “Lighthouse is an open-source, automated tool to help you improve the quality of web pages.” The mechanics are just as simple — “give Lighthouse a URL to audit, it runs a series of audits against the page, and then it generates a report on how well the page performed.”

It scores four categories today: Performance, Accessibility, Best Practices, and SEO. If you’ve read older guides that say five, they’re out of date — the PWA category was removed in Lighthouse 12 (around 2024), following Chrome’s updated installability criteria. So if a blog post is still citing a PWA score, that’s your tell it predates the current version.

The crucial framing is one word: lab. Lighthouse loads your page in a controlled, simulated environment, not from your real visitors. That single fact explains almost every piece of confusion people have about it.

Evidence for this claim Lighthouse is an open-source automated auditing tool that evaluates pages in controlled lab conditions. Scope: Chrome Developers overview of Lighthouse and its audit workflow. Confidence: high · Verified: Chrome Developers: Lighthouse overview

How Lighthouse Works — the lab conditions

By default Lighthouse uses simulated throttling, and it throttles aggressively. The defaults emulate roughly a mid-tier mobile device on a Slow 4G connection:

  • Network: the mobile Slow 4G preset — about 150 ms latency and 1.6 Mbps down / 750 Kbps up. Google describes this as emulating “the ~85th percentile mobile connection speed even when run on much faster fiber connections.”
  • CPU: a constant 4× CPU multiplier, simulating a mid-tier phone’s processor on your faster desktop hardware.

This is by design. Lighthouse isn’t trying to tell you “this is how fast your site is for everyone.” It’s stress-testing the page against a slower-than-average cohort so problems surface that your fast laptop hides. It’s why a site that feels instant to you can score 60 — you’re a high-performance MacBook on fiber; the test is a budget Android on a so-so network.

One nuance worth keeping straight: simulated throttling (the default) isn’t the same as DevTools / applied throttling. Simulated throttling models how the page would have loaded under those conditions based on an initial unthrottled observation — Google notes this approach is “both very fast and deterministic.” DevTools-style throttling actually slows down the requests, which Google says is “not a sufficient model of a slow connection.” For repeatable measurement, the default simulated mode is preferred.

The Performance score — how it’s calculated

The Performance score is “a weighted average of the metric scores.” These weights were set in Lighthouse 10 and remain the current published table. Lighthouse 13 (rolled out 2026) says so explicitly: it consolidated a set of non-scoring performance audits into shared “Insights” also used by the DevTools Performance panel, but states there are “no changes to the performance scoring” in that release — the scoring is based on the metrics below, not the audit names, and those didn’t move. Five metrics make up the score:

MetricWeight
Total Blocking Time (TBT)30%
Largest Contentful Paint (LCPLargest Contentful Paint — render time of the largest visible image or text block, relative to when the page started loading. ≤2.5 s (at the 75th percentile) is good.)25%
Cumulative Layout Shift (CLSCumulative Layout Shift — a unitless score for unexpected visual movement, taken from the largest burst (session window) of layout shifts, not the lifetime sum. ≤0.1 is good.)25%
First Contentful Paint (FCPFirst Contentful Paint — the time from when a page starts loading to when any part of its content (text, image, SVG, or non-white canvas) first renders. Good is ≤1.8 s at the 75th percentile. It's a diagnostic metric, not a Core Web Vital.)10%
Speed IndexSpeed Index measures how quickly content is visually displayed during page load — the average time at which visible parts of the page appear, scored in seconds (lower is better). It's a lab-only Lighthouse metric, not a Core Web Vital and not a ranking factor.10%
Evidence for this claim Lighthouse performance scores are weighted from lab metrics; 90–100 is good, 50–89 needs improvement, and 0–49 is poor. Scope: Current published Lighthouse performance-scoring model; metric weights can change by Lighthouse version. Confidence: high · Verified: Chrome Developers: Performance scoring

A few things to internalize here:

  • TBT carries the most weight (30%). It’s the lab proxy for responsiveness. First Input Delay (FID) is gone, and so are older metrics like Time to Interactive and First Meaningful Paint — they’ve been retired.
  • Speed Index is a Lighthouse metric, not a Core Web Vital. It still counts for 10% of the Lighthouse Performance score even though it isn’t one of Google’s ranking-relevant CWV.
  • Each metric is scored against a curve, not a fixed cutoff. Lighthouse takes the raw value (usually in milliseconds) and maps it onto a log-normal distribution built from real-world HTTP Archive data. Google’s control points: the 25th percentile of that data lands at a score of 50, and the 8th percentile lands at 90. So a 90+ means you’re roughly in the top ~8% of pages on that metric — which is why the last few points are so hard to win.
  • Only the metric scores move the number. The Opportunities and Diagnostics sections of the report are guidance — they tell you what to fix — but they don’t directly change the Performance score. Fixing them improves the metrics, and the metrics move the score.

Why your score changes between runs

This is the complaint I hear most: “I ran it twice and got 84 then 91 — is it broken?” No. Google is explicit: “A lot of the variability in your overall Performance score and metric values is not due to Lighthouse.” When the number jumps, it’s usually the underlying conditions shifting:

  • A/B tests or different ads being served on each load
  • Internet routing changes — both your local network and the longer cross-region path a request takes
  • The web server itself responding at inconsistent speeds
  • Testing on different hardware (a fast desktop vs. a tired laptop) — CPU throttling is relative to the host machine, so a “4×” multiplier means something different on a fast machine than a slow one
  • Browser extensions that inject JavaScript or extra network requests
  • Antivirus software or other background processes competing for resources

For example: run the same URL twice and one pass happens to load a heavier ad creative or catches a slower server response — that run’s audits reflect that one load, not a defect you introduced. Treat it as a single sample, not a verdict.

The right mental model, straight from the docs, is to treat performance as a distribution of scores, rather than a single number. Run it a few times — ideally in an incognito window with extensions off, on matched hardware and network conditions — and look at the range or median, not one result. When you need to compare runs later, note the Lighthouse version, run mode, and throttling method alongside the score; a score from a different version or configuration isn’t a like-for-like comparison, even if the number looks similar.

Lighthouse vs. PageSpeed Insights — the distinction that matters

These get conflated constantly, so be precise:

  • Lighthouse is the engine. It produces lab data — the Performance, Accessibility, Best Practices, and SEO scores.
  • PageSpeed Insights is a web UI that runs Lighthouse and adds Chrome UX Report (CrUX) field data — real Core Web VitalsGoogle's three real-user UX metrics — LCP (loading), INP (responsiveness), and CLS (visual stability) — used by Google's ranking systems, with no official weight attached, measured on field data. from anonymized real users, shown when there’s enough data for the URL or origin.

So in PSI you’re looking at two different datasets side by side. The “field data” section at the top (real users, from CrUX) is separate from the Lighthouse “lab data” section below it — and they frequently disagree. When someone says “my PageSpeed Insights score,” they almost always mean the Lighthouse Performance score, not the field data.

Lighthouse and Core Web Vitals — how they relate

Lighthouse measures some Core Web VitalsWeb Vitals is Google's initiative (launched May 2020) for unified page-experience quality signals. Core Web Vitals — LCP, INP, and CLS — are the subset used in ranking; the rest (TTFB, FCP, TBT, Speed Index) are diagnostic, not ranking factors. in the lab: it reports LCP and CLS as lab metrics. But there’s a hard limit:

Lighthouse can’t measure INP the way the field does. Interaction to Next Paint needs real user interactions to measure — there’s no real user clicking around in a lab run. So Lighthouse uses Total Blocking Time as a lab proxy for responsiveness. TBT correlates with INP, but a passing TBT does not guarantee a passing INP for real users. They’re related, not the same.

This is the heart of the lab-vs-field gap. Field data — from CrUX, surfaced in Search ConsoleGoogle's free tool for monitoring crawling, indexing, and search performance. and the top of PageSpeed Insights — is what reflects real users and what feeds Google’s page experience signals. Lighthouse lab data is for debugging and catching regressions before you ship. Google’s own guidance is to “prioritize field data for understanding real-world user experiences” and use “lab data for debugging, testing features before deployment.”

Where to run it

Same engine, different surfaces:

  • Chrome DevTools — built into the browser (the Lighthouse panel). Best for pages behind a login, since you can audit authenticated pages.
  • PageSpeed Insights — the no-install web UI at pagespeed.web.dev; runs Lighthouse and adds CrUX field data.
  • CLInpm install -g lighthouse, then lighthouse <url>; scriptable.
  • Node module — import it programmatically into your own tooling and CI.
  • Lighthouse CI — the official setup for catching performance regressions on every deploy. The workflow is collect → assert → upload: collect runs Lighthouse multiple times against a URL (three runs by default) and takes the median report rather than trusting one pass; assert checks that report against thresholds you configure — set to warn or error per category or metric; upload stores the report so you can track trend lines over builds. Treat the thresholds as your team’s regression policy, not a field-data verdict or a ranking guarantee — they’re catching “this got worse,” not certifying “this is fast for users.”
  • Chrome extension — exists, but DevTools is the recommended in-browser path.

The CLI and Node workflows need a local install of Chrome to drive.

TIP Use a lab audit when field data is absent—without calling it field evidence

Lighthouse can generate a controlled diagnostic run. It cannot replace the missing real-user CrUX sample or turn no data into a pass.

Keep the lab-versus-field boundary visible with my free Page Speed Test Free

  1. Check whether URL- or origin-level CrUX data exists before interpreting a field verdict.
  2. Run a fresh Lighthouse audit to debug under controlled conditions when field data is unavailable.
  3. Save the lab baseline separately and compare like with like; wait for real traffic before claiming a field improvement.
The lab action remains available, but mobile and desktop field verdicts stay not evaluated.

The result says Chrome does not have enough field data for the page, no stable CrUX sample exists for the URL or origin, and mobile and desktop are not evaluated. A separate button offers a fresh lab audit and explains that its numbers are simulated and vary between runs.

The myths worth busting

  • “A 100 Lighthouse score = top rankings.” No. The Performance score is lab data; it isn’t a ranking signal. Google’s page experience signals use Core Web Vitals field data (CrUX), and even that is one lightweight signal among many — relevance and content quality dominate. Aim for a strong score because it’s good for users, not because it’s a rankings lever.
  • “Lighthouse = field data / what real users experience.” No. It’s throttled lab conditions worse than most real users see. Real users have warm caches, bfcache, and varying devices. Lighthouse is a worst-case-ish stress test, not an average-user readout.
  • “PageSpeed Insights is Lighthouse.” Partly. PSI runs Lighthouse for the lab section and adds CrUX for the field section. The field numbers — the ones tied to page experience — are CrUX, not Lighthouse.
  • “The PWA category still counts.” It doesn’t. PWA was removed as a scored category in Lighthouse 12.

Bottom line

Lighthouse is one of the most useful free tools in technical SEOTechnical SEO is the practice of making a site easy for search engines to crawl, render, index, and (now) be eligible for AI answers. It's the foundation that lets your content and links rank — not a ranking trick of its own. and web performance — a fast, repeatable way to find what’s slowing a page down and to guard against regressions in CI. Just hold it at the right altitude: it’s a lab diagnostic, not a verdict on real-user experience and not a ranking score. Use it to find and fix; use field data (CrUX, Core Web Vitals in Search Console) to judge whether real users are actually having a good time.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.