Performance Auditor — runs the Google Lighthouse Performance category against the monitored page and reports its score: below 90 is a warning and below 50 is a failure, both thresholds set per monitored URL. The five lab metrics of the run are rated too.
Same scores as PageSpeed
The score and metrics are the ones Lighthouse computes, so they match Chrome DevTools and the lab section of PageSpeed Insights for the same device profile.
Metric by metric
Largest Contentful Paint, Cumulative Layout Shift, Total Blocking Time, First Contentful Paint and Time to First Byte are each rated good, needs improvement or poor.
How it works
- Thresholds — reads
formFactor,warningBelowScoreandfailBelowScore. WhenfailBelowScoreis not lower thanwarningBelowScorethe audit fails with a single check (401) and Lighthouse does not run. - Lighthouse run — runs the Lighthouse CLI (version pinned in the image, reported in the
100check) with theperformancecategory only, thedesktoppreset or themobileform factor, and the 37AuditsBot user agent. The run has a time budget derived from the audit’s remaining time; a page that does not finish loading inside it is anERROR(500). - Lab metrics — five metrics of the same run are judged against the fixed good / needs-improvement / poor bands Lighthouse and web.dev publish: Largest Contentful Paint (2.5 s / 4 s), Cumulative Layout Shift (0.1 / 0.25), Total Blocking Time (200 ms / 600 ms, the lab stand-in for Interaction to Next Paint), First Contentful Paint (1.8 s / 3 s) and Time to First Byte (800 ms / 1800 ms). Good is a
SUCCESScheck (201–205), needs improvement aWARNING(301–305), poor aFAIL(402–406). These bands are not preferences, and the metric checks never change the status of the result. A metric Lighthouse did not measure produces no check. - Blocked or unloadable page — an HTTP 403, 429 or Cloudflare challenge on the document is the platform’s blocked response (
590). Any other Lighthouse runtime error (NO_FCP,PAGE_HUNG,DNS_FAILURE,ERRORED_DOCUMENT_REQUEST, …) is anERROR(500) that names the error. - Score — the Performance score (0–100) is compared with the thresholds: below
failBelowScoreisFAIL(400), fromfailBelowScoreup to but excludingwarningBelowScoreisWARNING(300). A category Lighthouse could not score is anERROR(501). At or abovewarningBelowScorethe audit succeeds (200). - Audits — every audit Lighthouse lists under the Performance score becomes a check: a scored audit below Lighthouse’s pass mark (0.9) is a
FAILwhose code is 400 plus the audit’s fixed number in this auditor’s catalog (35 audits,410–448); an audit Lighthouse reports without a score or leaves to a manual check is anINFORMATIONwith 100 plus that number. An audit a newer Lighthouse adds gets490or190until the catalog is updated. Hidden Lighthouse audits and audits that do not apply to the page are not reported. The five metrics have their own rules (above), so they are not repeated here. These checks keep their own status but never change the result: the score alone decides it. - Report pin — every result carries an
INFORMATIONcheck (100) with the Lighthouse and Chrome versions, the device profile, the run duration and Lighthouse’s benchmark index, because scores are only comparable between runs of the same Lighthouse version.
Authorization header is sent on every request the page makes, third-party origins included, so prefer allowlisting over credentials for a staging site that loads third-party scripts.
Preferences
An invalid value (missing, fractional, outside 0–100) makes the auditor fall back to that preference’s default and log a warning. A fail threshold equal to or above the warning threshold is not an invalid value: it makes the audit fail (
401) until the thresholds are fixed.
What it audits
Every row maps to onecheckRule* method and one CheckCode.
Each metric check carries in
data: metric, value (milliseconds, or the unitless shift), goodUpTo, poorAbove and band, plus the shared fields. Every check also carries metrics (firstContentfulPaintMs, largestContentfulPaintMs, totalBlockingTimeMs, cumulativeLayoutShift, speedIndexMs, timeToFirstByteMs).
The score check carries in data: category, score, formFactor, both thresholds, failingAudits (up to ten audits of the category below Lighthouse’s pass mark, lowest score first, each with id, title, score, displayValue), lighthouseVersion, chromeVersion, benchmarkIndex, elapsedSeconds and runWarnings. Each audit check (1NN, 4NN) adds auditId, auditTitle, auditScore (0–100 or null), scoreDisplayMode, displayValue, weight, group, numericValue, numericUnit, learnMore (Lighthouse’s documentation link), inCatalog, itemCount and items (up to ten rows of Lighthouse’s details table: DOM nodes reduced to selector, snippet, label and explanation; source locations to url:line:column).
Output documentation
Risks and considerations
Lab scores vary between runs
Lighthouse measures one load in a controlled environment. The Performance score depends on the host’s CPU and the network at that moment, and typically moves a few points between runs of the same page. Treat a single point of change as noise; set the thresholds with a margin and watch the trend across audits. ThebenchmarkIndex in the 100 check says how fast the host was during the run.
Desktop and mobile are different bars
The desktop preset applies no CPU slowdown and a fast network, so its Performance score is normally much higher than the mobile one. Pick the profile that matches the audience and keep it, because the scores of the two profiles are not comparable.Lab metrics are not field data
Lighthouse reports lab metrics, not what real visitors experience. Core Web Vitals in Google Search Console come from Chrome users (field data); a page can score well here and still fail Core Web Vitals in the field, or the reverse. Use this auditor to catch regressions early and the field data to confirm the user impact.The run is unsigned
The Lighthouse navigation carries the 37AuditsBot user agent but no Web Bot Auth signature. A site that only admits signed bots answers with a challenge, which this audit reports as blocked (590).
The score alone decides the result
Lighthouse weighs its audits into the score, so a page can score 95 with one audit failing. The result follows the score, as Lighthouse’s gauge does: that page is aSUCCESS. The failing audit is still listed as a FAIL check, because the item is what the owner has to fix, but it never changes the status of the result, and neither do the lab-metric checks. The check order follows Lighthouse’s report: heavier audits first, then the lowest scores.
Codes are fixed per audit
Each audit keeps its number across Lighthouse upgrades, so a deep link to a code stays valid. An audit a newer Lighthouse adds is reported with490 (failing) or 190 (informative or manual) and inCatalog: false in its data until the catalog in this auditor is extended; an audit Lighthouse removes keeps its number unused.