Free tool
Lighthouse JSON, as a report anyone can open.
Drop the file from lighthouse --output=json, Lighthouse CI or the PageSpeed Insights API. Get the scores, the Core Web Vitals, and every failed audit with its estimated savings and the exact files or elements behind it — then copy a Markdown summary for the pull request or send the whole report to whoever owns the slow page.
Performance 41 · Accessibility 84 · Best Practices 93 · SEO 91 · 9 audits to fix
Publishes this report on Comma: one URL that doesn’t expire like a CI artifact or a temporary-public-storage link, restricted to named people or your company’s email domain if you like, comments pinned to the exact audit, and next week’s run kept as a revision you can diff. Free, no card.
How the file is read
- Scores come from
categories— Performance, Accessibility, Best Practices, SEO, and PWA on older versions — colored the way Lighthouse colors them: 90+ green, 50–89 orange, under 50 red. - Metrics are the performance audits in the
metricsgroup — LCP, TBT, CLS, FCP and Speed Index — with the weight each carries in the score. - Failed audits are scored audits under 90. Performance issues are ordered by
details.overallSavingsMs; the rest by their weight. Each one opens to Lighthouse’s explanation and the first five URLs or element snippets fromdetails.items. - Errors — a page that timed out or returned
NO_FCP— show fromruntimeErrorabove the scores, so a 0 isn’t mistaken for a slow page. - Several results — a user flow’s
stepsor an array of results — become one section each.
Getting the JSON
| From | How |
|---|---|
| CLI | lighthouse https://example.com --output=json --output-path=report.json |
| CLI (both) | lighthouse https://example.com --output=json --output=html |
| Lighthouse CI | .lighthouseci/lhr-<timestamp>.json after lhci collect |
| Chrome DevTools | Lighthouse panel → ⋮ menu → Save as JSON |
| PageSpeed Insights | curl 'https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=…' |
Already have the HTML report Lighthouse saved? Drop that — the result is embedded in it.
When the score has to leave CI
A Lighthouse score on its own starts arguments; the audits behind it end them. The people who decide what gets fixed — the client who asked why the site is slow, the PM weighing a chat widget against 2 seconds of blocking time — need the full report, with a place to say “this one first.” Lighthouse CI’s public links expire within days (see why the Lighthouse CI link stopped working). Published to Comma, it is one link, and an agent can publish it from the pipeline after every run, as a new revision of the same report.
Questions
- How do I turn a Lighthouse JSON file into a report?
- Run lighthouse https://your.site --output=json --output-path=./report.json (or take an lhr-*.json from Lighthouse CI's .lighthouseci folder), then drop the file here. You get the category scores, the Core Web Vitals metrics, and every audit that failed with its estimated savings and the exact URLs or elements involved. Download it as one HTML file, copy a Markdown summary, or publish it as a link.
- Which files does it read?
- A Lighthouse result (LHR) from the CLI, Node API, Chrome DevTools “Save as JSON” or Lighthouse CI; a PageSpeed Insights API v5 response (the lighthouseResult inside it); a user-flow result with several steps; an array of results for several pages; and the Lighthouse HTML report itself, which carries its JSON inside the page.
- Why does my Lighthouse score change every run?
- Lighthouse measures one page load on one machine, so network jitter, CPU load, A/B tests, ads and third-party scripts move the performance score by several points between runs. Run it three to five times and compare the median — Lighthouse CI's numberOfRuns does that — and compare runs on the same machine with the same throttling settings shown at the top of the report.
- What counts as a failed audit?
- The same rule Lighthouse's own report uses: a scored audit passes at 90 or above. Manual checks, not-applicable audits and purely informative diagnostics are counted rather than listed, so the report is the to-do list and nothing else. Performance issues are ordered by estimated time saved; the other categories by how much the audit weighs in the score.
- Can I post the scores on a pull request?
- Yes. “Copy Markdown” gives a GitHub-flavored table of category scores with colored dots, the metrics line, and the top issues with their savings — it pastes into a PR comment or appends to $GITHUB_STEP_SUMMARY. Link the published report for the full detail.
- Why not just use the Lighthouse CI public storage link?
- Lighthouse CI's temporary-public-storage target uploads the report to a public URL that is deleted after a few days, so the link in last month's PR is already dead. A report published to Comma keeps one address, can be restricted to named people or your email domain, and takes comments on the specific audit.
- Is my report uploaded?
- No. The JSON is parsed and the report is built in your browser. It only leaves your machine if you click “Get a shareable link” and publish it to Comma — and then you choose who can open it.
Related: Coverage viewer · JUnit XML viewer · HTML to PDF · what Core Web Vitals are · all free tools