37 Audits
šŸ”Ž

Lighthouse SEO

SEO Auditor

Lighthouse SEO score: crawlability, titles, links, structured data

SEOCrawling
150 credits
Per check
~30 seconds
Average runtime
Active
Status

How it works

  1. Thresholds — reads formFactor, warningBelowScore and failBelowScore. When failBelowScore is not lower than warningBelowScore the audit fails with a single check (401) and Lighthouse does not run.

  2. Lighthouse run — runs the Lighthouse CLI (version pinned in the image, reported in the 100 check) with the seo category only, the desktop preset or the mobile form 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 an ERROR (500).

  3. 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 an ERROR (500) that names the error.

  4. Score — the SEO score (0–100) is compared with the thresholds: below failBelowScore is FAIL (400), from failBelowScore up to but excluding warningBelowScore is WARNING (300). A category Lighthouse could not score is an ERROR (501). At or above warningBelowScore the audit succeeds (200).

  5. Audits — every audit Lighthouse lists under the SEO score becomes a check: a scored audit below Lighthouse's pass mark (0.9) is a FAIL whose code is 400 plus the audit's fixed number in this auditor's catalog (10 audits, 410–420); an audit Lighthouse reports without a score or leaves to a manual check is an INFORMATION with 100 plus that number. An audit a newer Lighthouse adds gets 490 or 190 until the catalog is updated. Hidden Lighthouse audits and audits that do not apply to the page are not reported. These checks keep their own status but never change the result: the score alone decides it.

  6. Report pin — every result carries an INFORMATION check (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.

The Lighthouse navigation is not signed with Web Bot Auth: Lighthouse opens its own browser target and its only header hook adds headers to every request of the page, which breaks cross-origin fetches. Allowlist the 37AuditsBot user agent if the site challenges unsigned bots. With Basic auth the 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

KeyTypeDefaultDescription
formFactorstringdesktopdesktop (Lighthouse desktop preset: no CPU slowdown, fast network) or mobile (Moto G Power emulation, simulated 4G and 4x CPU slowdown, the PageSpeed Insights default). Any other value falls back to desktop.
warningBelowScoreinteger (1–100)90A SEO score below this value produces a WARNING (300).
failBelowScoreinteger (0–99)50A SEO score below this value produces a FAIL (400). Must be lower than warningBelowScore.

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 this auditor validates

Every row maps to one checkRule* method and one CheckCode.

CheckCodeStatusWhen it firesRecommendationWhy it matters
37A-LighthouseSeoAuditor-100INFORMATIONAlways. Records the Lighthouse and Chrome versions, the device profile, the run duration and the benchmark index: Lighthouse 12.8.2 on Chrome 138.0.7204.0 audited the page as desktop in 18 s (benchmark index 2186).— (recommendation is null; nothing for the site to change)—
37A-LighthouseSeoAuditor-120INFORMATIONLighthouse leaves audit structured-data to a manual check: Structured data is valid. Message: Check manually: Structured data is valid (Lighthouse SEO audit structured-data; Lighthouse cannot automate it).Run the Structured Data Testing Tool (https://search.google.com/structured-data/testing-tool/) and the Structured Data Linter (http://linter.structured-data.org/) to validate structured data. Learn more about Structured Data (https://developer.chrome.com/docs/lighthouse/seo/structured-data/).—
37A-LighthouseSeoAuditor-190INFORMATIONAn audit this catalog does not list (added by a newer Lighthouse) is reported without a score or left to a manual check. Message as above, with the audit's own title and id; inCatalog is false in the data.Lighthouse's description of the audit, then the first items it found.—
37A-LighthouseSeoAuditor-501ERRORLighthouse ran but gave the SEO category no score (score: null).Re-run the audit; if the SEO score stays empty, check the page for errors during load in Lighthouse's report.—
37A-LighthouseSeoAuditor-400FAILThe SEO score is below failBelowScore. Message: Lighthouse SEO score is 42/100 (desktop); the fail threshold is 50.Raise the SEO score ({score}) by fixing its lowest-scoring audits first: {audit title} ({display value}); …Pages search engines cannot crawl, index or understand get less organic traffic, so fewer people find the site without paid campaigns.
37A-LighthouseSeoAuditor-410FAILLighthouse audit is-crawlable scores below 0.9: Page is blocked from indexing. Message: Page is blocked from indexing: {display value or item count} (Lighthouse SEO audit is-crawlable, desktop).Search engines are unable to include your pages in search results if they don't have permission to crawl them. Learn more about crawler directives (https://developer.chrome.com/docs/lighthouse/seo/is-crawlable/). Found: {up to three offending items}.Search engines are unable to include your pages in search results if they don't have permission to crawl them.
37A-LighthouseSeoAuditor-411FAILLighthouse audit document-title scores below 0.9: Document doesn't have a <title> element. Message: Document doesn't have a <title> element: {display value or item count} (Lighthouse SEO audit document-title, desktop).The title gives screen reader users an overview of the page, and search engine users rely on it heavily to determine if a page is relevant to their search. Learn more about document titles (https://dequeuniversity.com/rules/axe/4.10/document-title). Found: {up to three offending items}.The title gives screen reader users an overview of the page, and search engine users rely on it heavily to determine if a page is relevant to their search.
37A-LighthouseSeoAuditor-412FAILLighthouse audit meta-description scores below 0.9: Document does not have a meta description. Message: Document does not have a meta description: {display value or item count} (Lighthouse SEO audit meta-description, desktop).Meta descriptions may be included in search results to concisely summarize page content. Learn more about the meta description (https://developer.chrome.com/docs/lighthouse/seo/meta-description/). Found: {up to three offending items}.Meta descriptions may be included in search results to concisely summarize page content.
37A-LighthouseSeoAuditor-413FAILLighthouse audit http-status-code scores below 0.9: Page has unsuccessful HTTP status code. Message: Page has unsuccessful HTTP status code: {display value or item count} (Lighthouse SEO audit http-status-code, desktop).Pages with unsuccessful HTTP status codes may not be indexed properly. Learn more about HTTP status codes (https://developer.chrome.com/docs/lighthouse/seo/http-status-code/). Found: {up to three offending items}.Pages with unsuccessful HTTP status codes may not be indexed properly.
37A-LighthouseSeoAuditor-414FAILLighthouse audit link-text scores below 0.9: Links do not have descriptive text. Message: Links do not have descriptive text: {display value or item count} (Lighthouse SEO audit link-text, desktop).Descriptive link text helps search engines understand your content. Learn how to make links more accessible (https://developer.chrome.com/docs/lighthouse/seo/link-text/). Found: {up to three offending items}.Descriptive link text helps search engines understand your content.
37A-LighthouseSeoAuditor-415FAILLighthouse audit crawlable-anchors scores below 0.9: Links are not crawlable. Message: Links are not crawlable: {display value or item count} (Lighthouse SEO audit crawlable-anchors, desktop).Search engines may use href attributes on links to crawl websites. Ensure that the href attribute of anchor elements links to an appropriate destination, so more pages of the site can be discovered. Learn how to make links crawlable (https://support.google.com/webmasters/answer/9112205) Found: {up to three offending items}.Search engines may use href attributes on links to crawl websites. Ensure that the href attribute of anchor elements links to an appropriate destination, so more pages of the site can be discovered.
37A-LighthouseSeoAuditor-416FAILLighthouse audit robots-txt scores below 0.9: robots.txt is not valid. Message: robots.txt is not valid: {display value or item count} (Lighthouse SEO audit robots-txt, desktop).If your robots.txt file is malformed, crawlers may not be able to understand how you want your website to be crawled or indexed. Learn more about robots.txt (https://developer.chrome.com/docs/lighthouse/seo/invalid-robots-txt/). Found: {up to three offending items}.If your robots.txt file is malformed, crawlers may not be able to understand how you want your website to be crawled or indexed.
37A-LighthouseSeoAuditor-417FAILLighthouse audit image-alt scores below 0.9: Image elements do not have [alt] attributes. Message: Image elements do not have [alt] attributes: {display value or item count} (Lighthouse SEO audit image-alt, desktop).Informative elements should aim for short, descriptive alternate text. Decorative elements can be ignored with an empty alt attribute. Learn more about the alt attribute (https://dequeuniversity.com/rules/axe/4.10/image-alt). Found: {up to three offending items}.Informative elements should aim for short, descriptive alternate text. Decorative elements can be ignored with an empty alt attribute.
37A-LighthouseSeoAuditor-418FAILLighthouse audit hreflang scores below 0.9: Document doesn't have a valid hreflang. Message: Document doesn't have a valid hreflang: {display value or item count} (Lighthouse SEO audit hreflang, desktop).hreflang links tell search engines what version of a page they should list in search results for a given language or region. Learn more about hreflang (https://developer.chrome.com/docs/lighthouse/seo/hreflang/). Found: {up to three offending items}.hreflang links tell search engines what version of a page they should list in search results for a given language or region.
37A-LighthouseSeoAuditor-419FAILLighthouse audit canonical scores below 0.9: Document does not have a valid rel=canonical. Message: Document does not have a valid rel=canonical: {display value or item count} (Lighthouse SEO audit canonical, desktop).Canonical links suggest which URL to show in search results. Learn more about canonical links (https://developer.chrome.com/docs/lighthouse/seo/canonical/). Found: {up to three offending items}.Canonical links suggest which URL to show in search results.
37A-LighthouseSeoAuditor-490FAILA scored audit this catalog does not list (added by a newer Lighthouse) scores below 0.9. Message: {Lighthouse title}: {display value or item count} (Lighthouse SEO audit {id}, desktop).Lighthouse's description of the audit, then the first offending items.Lighthouse's description of the audit without its learn-more link.
37A-LighthouseSeoAuditor-300WARNINGThe SEO score is below warningBelowScore and not below failBelowScore. Message: Lighthouse SEO score is 75/100 (desktop); the warning threshold is 90.Raise the SEO score ({score}) by fixing its lowest-scoring audits first: {audit title} ({display value}); …Pages search engines cannot crawl, index or understand get less organic traffic, so fewer people find the site without paid campaigns.
37A-LighthouseSeoAuditor-401FAILfailBelowScore is equal to or above warningBelowScore; Lighthouse does not run. Message: failBelowScore (90) must be lower than warningBelowScore (50).Set failBelowScore below warningBelowScore on the auditor's Configuration tab; the defaults are 50 and 90.With the thresholds inverted no score can be a warning, so the audit would hide regressions until they are already failures.
37A-LighthouseSeoAuditor-500ERRORLighthouse could not load the page: the run exceeded its time budget, or Lighthouse reported a runtime error (NO_FCP, PAGE_HUNG, DNS_FAILURE, ERRORED_DOCUMENT_REQUEST, …). Message: Lighthouse could not audit {url}: NO_FCP: The page did not paint any content.Make {url} load in a browser within the audit's time limit and re-run the audit. Last error was "{error}".—
37A-LighthouseSeoAuditor-200SUCCESSThe SEO score is at or above warningBelowScore. Message: Lighthouse SEO score is 95/100 (desktop). At or above the warning threshold of 90.——
37A-LighthouseSeoAuditor-590ERRORThe audited page answered HTTP 403, HTTP 429 or a Cloudflare challenge, so 37AuditsBot was blocked before it could read the page.Allow 37AuditsBot in your firewall or bot protection: allowlist its user agent, or verify its Web Bot Auth signature. See https://www.37audits.com/bot.While 37AuditsBot is blocked this audit cannot look at the site, so problems on it go unreported.

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

StatusDescriptionTest logic
INFORMATIONReport pin, manual checks and unscored auditsAlways one 100 check with the Lighthouse and Chrome versions, device profile, duration and benchmark index; plus one 1NN check per audit Lighthouse leaves to a manual check or reports without a score.
SUCCESSThe SEO score is at or above the warning thresholdThe score is >= warningBelowScore; the message states the score and counts the failing audits. Every result, whatever its status, also carries one 4NN check per scored audit below 0.9; it never changes the status.
WARNINGThe SEO score is below the warning threshold and not below the fail thresholdOne 300 check; the summary states the score.
FAILThe SEO score is below the fail threshold, or the thresholds are invertedOne 400 check, or a single 401 check when failBelowScore >= warningBelowScore.
ERRORLighthouse could not audit the page or score the category500 when the page did not load inside the budget or Lighthouse reported a runtime error; 501 when the category has no score; 590 when the page blocked 37AuditsBot.

Risks and Considerations

A score is not a certification

Lighthouse automates the SEO checks a machine can run on one page load (crawlability (robots.txt, meta robots, HTTP status), the title and meta description, canonical and hreflang links, descriptive link text, legible font sizes, tap target sizes and structured data validity). A perfect score means no automated check failed, not that the page is flawless; manual review still finds problems automation cannot.

Desktop and mobile differ

The two device profiles render the page at different sizes, so the audits that depend on layout can give different results. Pick the profile that matches the audience and keep it, because the scores of the two profiles are not strictly comparable.

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 90 with one audit failing. The result follows the score, as Lighthouse's gauge does: that page is a SUCCESS. 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. 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 with 490 (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.

This documentation is built and hosted on Mintlify, a developer documentation platform.

Source: docs.37audits.com

Ready to start auditing?

Add this auditor to your monitoring setup and start identifying issues on your websites today.

Ā© 2026 37 Audits. All rights reserved. Audit your websites with confidence.

Supported by

Made with ā¤ļø in Floripa