Free online Google Lighthouse audits — and a Lighthouse API
Run a free Google Lighthouse audit on any public URL, online — from any of our 7 regions, up to 2 per run. Every audit runs on dedicated hardware with pinned versions (Lighthouse 12.8.2, Chromium 148.0.7778.215), so scores move when your site changes, not when a tool updates underneath you.
Example reports: vercel.com · wikipedia.org · lightscore.dev
Free during launch. While we build and test the service, every audit is free — no login, no credits. We may add prepaid billing later; if we do, a free rate-limited tier stays and nothing you've already run disappears.
Regions
| ID | Name | Country | Status | Typical |
|---|---|---|---|---|
| fra | Frankfurt | Germany | Operational | 62s |
| iad | Washington, D.C. | USA | Operational | 19s |
| nrt | Tokyo | Japan | Operational | — |
| lax | Los Angeles | USA | Operational | — |
| gru | São Paulo | Brazil | Operational | — |
| jnb | Johannesburg | South Africa | Operational | — |
| syd | Sydney | Australia | Operational | — |
Coming soon:
Mumbai (India).
Live status above reflects the regions running today; status also available as JSON at
/api/v1/status.
Lighthouse API
The one-URL tool above is the whole service as a REST API: start an audit in one call, then poll it or receive a webhook. Free during launch — you just need a key.
Enter your email and we'll send one. Use it as a bearer token
(Authorization: Bearer ls_live_…). Full reference and a try-it console
are at /api/docs.
POST /api/v1/audits
Always async → 202 with the audit in `status:"queued"` and its `result_url`. Poll the result_url or await a webhook. Send `Idempotency-Key` to make retries safe.
| Field | Type | Req | Description |
|---|---|---|---|
Idempotency-Key | string | Same key → same result within 24h, so retries never double-charge. (header) | |
url | string | yes | A public http(s) URL to audit. No private hosts, IPs, or custom ports. |
device | mobile | desktop | Lighthouse form factor. Default: mobile. | |
categories | string[] | Which Lighthouse categories to run. Default: all four. | |
runs | integer | Median-of-N runs per region, for reliability. Default is the tier default. | |
regions | string[] | Where to test from — a subset of your allowed regions (GET /api/v1/account). Default is one region. | |
webhook_url | string | One-off webhook for this audit; we POST the result when it finishes. | |
project | string | Optional grouping label. Default: prj_default. | |
metadata | object | Up to 20 string keys, echoed back — your own correlation ids. |
curl -X POST "https://lightscore.dev/api/v1/audits" \
-H "Authorization: Bearer ls_live_…" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'
GET /api/v1/audits/{id}
Status and result in one object — poll this, or use a webhook.
| Field | Type | Req | Description |
|---|---|---|---|
id | string | yes | In the URL path. |
curl "https://lightscore.dev/api/v1/audits/{id}" \
-H "Authorization: Bearer ls_live_…"
GET /api/v1/account
Plan, balance, default project, and which regions your tier allows.
curl "https://lightscore.dev/api/v1/account" \
-H "Authorization: Bearer ls_live_…"
Everything else — list/retrieve filters, webhooks, credits, idempotency, error shapes — is in the full reference.
FAQ
Is Lightscore really free? What's the catch?
Yes. While we build and test the service, audits run for free — no credits, no card. The one-URL tool needs no login or key at all; the API needs only a free key, which you get by entering your email. We may add billing later (prepaid credits priced to cover compute), but if we do, a rate-limited free tier stays and nothing you've already run disappears.
How is this different from the Google PageSpeed Insights API?
PageSpeed Insights runs from a single Google location, doesn't let you choose where the audit runs from, and doesn't hand you the full report to keep. Lightscore runs the same Lighthouse engine from the region you pick, pins the exact Lighthouse and Chromium versions, and gives you signed download links to the complete JSON and HTML report for every run.
How is it different from DebugBear, Calibre, or other paid Lighthouse tools?
Those are monitoring suites — scheduled runs, dashboards, alerting, a per-seat monthly price. Lightscore is the other end of the spectrum: a plain-HTTP audit API and a free one-shot tool you drive with curl. No dashboard to learn and no monthly seat to buy — the free tool needs no signup and the API needs only a free key — so you call it from a script or a CI step when you just need scores back.
How is it different from SEOScoreAPI?
SEOScoreAPI is an on-page SEO crawler: it fetches your HTML and grades it against its own checklist — meta tags, headings, structured data, social cards, plus AI-readability and generative-engine scoring — and returns a composite score in about a second. It does not run Lighthouse. Lightscore does the opposite: it drives the real Google Lighthouse engine in a headless Chromium from the region you pick, and hands you the complete Lighthouse JSON and HTML report to keep. The two answer different questions — reach for SEOScoreAPI when you want a broad on-page SEO checklist, and for Lightscore when you want genuine Lighthouse scores and Core Web Vitals measured from real locations.
Do I need an account or an API key?
It depends which you use. The free one-URL tool needs neither — POST a URL and read the result. The API needs a key, and during launch it's free: enter your email and we'll send one, which creates a lightweight account so we can attribute usage. If we introduce credits later we'll email key holders first — nothing changes silently.
Which Lighthouse and Chromium versions do you run, and are they pinned?
Every audit runs one pinned Lighthouse build on one pinned Chromium build, on dedicated hardware with a fixed throttling profile — the exact versions appear in the runtime line at the top of this page. Pinning is deliberate: your scores should move when your site changes, not because a tool quietly upgraded underneath you.
How do I run an audit from CI or a script?
POST a url to /report with format=json to start a run, poll its /status endpoint until it reads completed, then fetch the .json for scores and report links. The curl commands above paste straight into a CI step. For repeatable pipelines you can instead use the keyed API — POST /api/v1/audits and poll the audit — which adds idempotency keys and webhooks. Either way audits are asynchronous — you start one and poll rather than holding a long request open — and a run usually finishes in well under two minutes.
Why are my scores different from running Lighthouse locally?
Lighthouse scores depend heavily on the machine, network throttling, and ordinary run-to-run variance — even the same site audited twice on the same laptop rarely scores identically. Lightscore controls for that by running every audit on consistent dedicated hardware with pinned versions and a fixed throttling profile. Expect our numbers to differ from your desktop Chrome; the point is that they're stable relative to each other, so you can compare runs over time.
Can I choose which region the audit runs from, and why does it matter?
Yes — pick any of the regions listed above (up to the per-run limit), and each one returns its own independent result. Region matters because latency to your origin, CDN edge behaviour, and geo-routed responses all change what a real visitor in that place actually experiences. Auditing from several regions shows you that spread instead of a single vantage point.
What does an audit measure?
A full Lighthouse run across all four categories — performance, accessibility, best practices, and SEO — plus the Core Web Vitals metrics behind the performance score. You get a score per category per region, and you can download the complete Lighthouse report to dig into the individual audits and opportunities.
Can I download the raw Lighthouse report?
Yes. Every completed run exposes signed links to the full Lighthouse report as both JSON and HTML, per region. The links are time-limited; re-fetch the run's .json endpoint to mint fresh ones whenever you need them.
Can I audit a staging site, localhost, or a page behind a login?
No. Lightscore only audits public http(s) URLs — no private hosts, IP addresses, custom ports, or pages that require authentication. A guard rejects anything that resolves to a private or internal address, both to keep the service safe and because a worker in another region couldn't reach your local machine anyway.
Are there rate limits, and why was my request throttled?
Yes, but they stay out of your way during normal use. Each IP address gets an hourly allowance of new audits, shared from a fixed compute budget so no single user can drain the pool. Only brand-new audits count against it — cached results and reloads of a run already in progress are free — so interactive use almost never hits the limit. If you do get throttled you'll see a 429; wait a little and retry, or space your runs out. The current per-IP figure is shown in the limits line above.
Is what I audit private?
Treat the free tool as public. Audits aren't tied to an account, and when you audit a site's homepage the resulting report page is shareable and can be indexed by search engines (we list completed homepage reports in our sitemap). Don't put secrets in the URL, and don't use the free tool for anything you need to keep confidential.