Skip to main content
Every Lighthouse run produces a Lighthouse Result object (LHR). The LHR is the source of truth behind the HTML report — everything you see rendered in the report is derived from it. You interact with it directly when using Lighthouse programmatically, consuming CLI JSON output, or building tooling on top of Lighthouse.

The RunnerResult object

When you call lighthouse() from Node, the return value wraps the LHR:
LH.Result
required
The Lighthouse Result object. Contains all audit results, scores, and metadata.
string | string[]
required
The formatted report. A string for single-format runs; an array when multiple --output formats are requested.
object
required
Raw gathered artifacts from the page (traces, network logs, DOM snapshots, etc.).

Top-level LHR fields

string
required
The version of Lighthouse that generated this result (e.g. "12.0.0").
string
required
ISO-8601 timestamp of when the result was generated (e.g. "2024-01-15T10:30:00.000Z").
string
required
The URL that was originally passed to Lighthouse.
string
required
The URL of the main document request during the final navigation.
string
required
The URL shown in the browser after all redirects and history API changes. Use this as the canonical URL for the run.
string
required
The Chrome user agent string used during the audit.
object
required
Category scores and audit references. See Categories.
object
required
Individual audit results keyed by audit ID. See Audits.
object
required
The resolved configuration settings used for this run. See configSettings.
object
required
Timing information for the run. See Timing.
object
Display groups used to visually cluster audits within a category in the HTML report.
object
Present when a fatal error prevented a valid result. Contains code and message fields. If set, treat the result as unreliable.
string[]
Top-level warnings about the run (e.g. throttling was overridden).

Example


Categories

The lhr.categories object contains one entry per scored category. Each key is the category ID (e.g. "performance").
string
required
The category identifier, e.g. performance, accessibility, best-practices, seo.
string
required
The human-readable category name shown in the report.
string
required
A brief description of what the category measures.
number | null
required
The weighted average of all audit scores in the category, in the range 01. May be null for non-scored categories.
object[]
required
References to the audits that contribute to this category.

Example


Audits

The lhr.audits object contains every audit result, keyed by the audit ID.
string
required
The audit identifier in kebab-case (e.g. "first-contentful-paint").
string
required
The display name of the audit. May change between pass and fail states. Supports Markdown code spans.
string
required
Explains why the audit matters, with links to Lighthouse documentation. Supports Markdown links.
number | null
required
A value in the range 01, or null when scoreDisplayMode is informative, manual, notApplicable, or error.
string
required
Controls how the score is rendered. See Score display modes.
string
Human-readable summary shown alongside the audit result (e.g. "2.4 s", "5 resources found").
number
The raw numeric value for the audit (e.g. milliseconds for timing metrics).
string
A string explaining why the audit failed.
string[]
Messages about potentially invalid or edge-case conditions.
object
Structured data used to render the audit’s details table in the report. Structure varies by audit type.

Example


Score interpretation

Audit and category scores are values between 0 and 1. The report renders them as 0–100.
Performance scores are highly sensitive to environment. Always run multiple times and average the results before drawing conclusions.

Score display modes

The scoreDisplayMode field on each audit determines how it is presented.

configSettings

Reflects the configuration that was actually used for the run, after merging flags and config.

timing

Contains performance information about the Lighthouse run itself.

Report formats

Lighthouse can produce three report formats from the same LHR.

Accessing reports programmatically

For CI use cases, consume the JSON output programmatically rather than parsing the HTML report. The LHR schema is versioned and more stable.

Viewing JSON output online

Run Lighthouse with --output=json and drag the file onto the Lighthouse Viewer to render the full HTML report in a browser without saving an HTML file locally. Reports shared from the viewer are stored as secret GitHub Gists under your account.