lighthouse is a free, open source compliance & risk management project written in JavaScript and released under Apache-2.0. It has 30,785 GitHub stars, 9,765 forks and 470 open issues, and was last pushed 5 hours ago. On this registry it ranks #1 of 45 tracked projects in Compliance & Risk Management, with 5 head-to-head comparisons available. It gained 12 stars over the last 3 tracked days.

What is lighthouse?

What it is

Lighthouse is an open-source, automated auditing tool for web applications and web pages. It analyzes a target URL and collects modern performance metrics alongside insights into developer best practices, producing a structured report that scores and explains what it finds. The project lives in the JavaScript ecosystem, is distributed under the Apache-2.0 license, and is maintained under the GoogleChrome organization. It has been developed for roughly eleven years and is published to npm as the lighthouse package.

The concrete problem Lighthouse solves is the absence of a repeatable, scriptable way to measure how a web page performs and whether it follows established web best practices. Rather than relying on manual inspection or ad-hoc measurement, teams can point Lighthouse at a URL and receive a consistent set of audits covering performance, progressive web app characteristics, and developer guidance. Because the same engine runs inside Chrome DevTools, as a browser extension, as a Node CLI, and as a Node module, results stay comparable across manual and automated workflows.

Key capabilities

  • Runs automated audits against web apps and web pages and reports performance metrics with best-practice insights.
  • Ships as a panel inside Chrome DevTools, where a report is generated by opening the Lighthouse panel and selecting "Generate report".
  • Provides a Chrome extension, installable from the Chrome Web Store, offering functionality similar to the DevTools panel.
  • Exposes a Node CLI for advanced configuration and automated runs, requiring Node 22 (LTS) or later.
  • Offers a Node module for programmatic use inside other tooling.
  • Supports configurable runs and custom audits authored to extend the default audit set.
  • Writes reports to an HTML file by default, with output format controlled through flags, and includes an Online Viewer for reading reports.

Who uses it and how

  • Developers auditing a single page interactively through the Chrome DevTools Lighthouse panel.
  • Users who prefer a browser-based workflow install the Chrome extension and follow its quick-start guide.
  • Teams running Lighthouse in an automated fashion use the Node CLI, for example lighthouse https://airhorner.com/, to generate reports without manual interaction.
  • Tooling authors embed the Node module to drive audits programmatically within their own products.
  • Web performance services and non-web-performance services integrate Lighthouse, and the project documents plugins and related projects built around it.

Getting started

Install the CLI globally with npm install -g lighthouse (or yarn global add lighthouse) and run lighthouse https://airhorner.com/; Node 22 (LTS

project readme (upstream, from github) — read inline

Lighthouse GitHub Actions Status Badge GitHub Actions Status Badge GitHub Actions Status Badge Coverage Status Build tracker for Lighthouse NPM lighthouse package

Lighthouse analyzes web apps and web pages, collecting modern performance metrics and insights on developer best practices.

Using Lighthouse in Chrome DevTools

Lighthouse is integrated directly into the Chrome DevTools, under the "Lighthouse" panel.

Installation: install Chrome.

Run it: open Chrome DevTools, select the Lighthouse panel, and hit "Generate report".

Lighthouse integration in Chrome DevTools.

Using the Chrome extension

The Chrome extension was available prior to Lighthouse being available in Chrome Developer Tools, and offers similar functionality.

Installation: install the extension from the Chrome Web Store.

Run it: follow the extension quick-start guide.

Using the Node CLI

The Node CLI provides the most flexibility in how Lighthouse runs can be configured and reported. Users who want more advanced usage, or want to run Lighthouse in an automated fashion should use the Node CLI.

[!NOTE] Lighthouse requires Node 22 (LTS) or later.

Installation:

npm install -g lighthouse
# or use yarn:
# yarn global add lighthouse

Run it: lighthouse https://airhorner.com/

By default, Lighthouse writes the report to an HTML file. You can control the output format by passing flags.

CLI options

$ lighthouse --help

lighthouse  

Logging:
  --verbose  Displays verbose logging  [boolean] [default: false]
  --quiet    Displays no progress, debug logs, or errors  [boolean] [default: false]

Configuration:
  --save-assets                  Save the trace contents & devtools logs to disk  [boolean] [default: false]
  --list-all-audits              Prints a list of all available audits and exits  [boolean] [default: false]
  --list-trace-categories        Prints a list of all required trace categories and exits  [boolean] [default: false]
  --additional-trace-categories  Additional categories to capture with the trace (comma-delimited).  [string]
  --config-path                  The path to the config JSON.
                                 An example config file: core/config/lr-desktop-config.js  [string]
  --preset                       Use a built-in configuration.
                                 WARNING: If the --config-path flag is provided, this preset will be ignored.  [string] [choices: "perf", "experimental", "desktop"]
  --chrome-flags                 Custom flags to pass to Chrome (space-delimited). For a full list of flags, see https://bit.ly/chrome-flags
                                 Additionally, use the CHROME_PATH environment variable to use a specific Chrome binary. Requires Chromium version 66.0 or later. If omitted, any detected Chrome Canary or Chrome stable will be used.  [string] [default: ""]
  --port                         The port to use for the debugging protocol. Use 0 for a random port  [number] [default: 0]
  --hostname                     The hostname to use for the debugging protocol.  [string] [default: "localhost"]
  --form-factor                  Determines how performance metrics are scored and if mobile-only audits are skipped. For desktop, use --preset=desktop instead.  [string] [choices: "mobile", "desktop"]
  --screenEmulation              Sets screen emulation parameters. See also --preset. Use --screenEmulation.disabled to disable. Otherwise set these 4 parameters individually: --screenEmulation.mobile --screenEmulation.width=360 --screenEmulation.height=640 --screenEmulation.deviceScaleFactor=2
  --emulatedUserAgent            Sets useragent emulation  [string]
  --max-wait-for-load            The timeout (in milliseconds) to wait before the page is considered done loading and the run should continue. WARNING: Very high values can lead to large traces and instability  [number]
  --enable-error-reporting       Enables error reporting, overriding any saved preference. --no-enable-error-reporting will do the opposite. More: https://github.com/GoogleChrome/lighthouse/blob/main/docs/error-reporting.md  [boolean]
  --gather-mode, -G              Collect artifacts from a connected browser and save to disk. (Artifacts folder path may optionally be provided). If audit-mode is not also enabled, the run will quit early.
  --audit-mode, -A               Process saved artifacts from disk. (Artifacts folder path may be provided, otherwise defaults to ./latest-run/)
  --only-audits                  Only run the specified audits  [array]
  --only-categories              Only run the specified categories. Available categories: accessibility, best-practices, performance, seo  [array]
  --skip-audits                  Run everything except these audits  [array]
  --disable-full-page-screenshot Disables collection of the full page screenshot, which can be quite large  [boolean]

Output:
  --output       Reporter for the results, supports multiple values. choices: "json", "html", "csv"  [array] [default: ["html"]]
  --output-path  The file path to output the results. Use 'stdout' to write to stdout.
                   If using JSON output, default is stdout.
                   If using HTML or CSV output, default is a file in the working directory with a name based on the test URL and date.
                   If using multiple outputs, --output-path is appended with the standard extension for each output type. "reports/my-run" -> "reports/my-run.report.html", "reports/my-run.report.json", etc.
                   Example: --output-path=./lighthouse-results.html  [string]
  --view         Open HTML report in your browser  [boolean] [default: false]

Options:
  --version                            Show version number  [boolean]
  --help                               Show help  [boolean]
  --cli-flags-path                     The path to a JSON file that contains the desired CLI flags to apply. Flags specified at the command line will still override the file-based ones.
  --locale                             The locale/language the report should be formatted in
  --blocked-url-patterns               Block any network requests to the specified URL patterns  [array]
  --disable-storage-reset              Disable clearing the browser cache and other storage APIs before a run  [boolean]
  --throttling-m

readme truncated — read the full docs on github

Frequently asked questions

Is lighthouse free to use?

lighthouse is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does lighthouse do?

Automated auditing, performance metrics, and best practices for the web.

What is lighthouse written in?

lighthouse is primarily written in JavaScript. Its source is publicly available at https://github.com/GoogleChrome/lighthouse, and it has 30,785 GitHub stars.