Skip to main content
The Lighthouse Audits resource provides a comprehensive catalog of all Lighthouse accessibility audits, including their WCAG criterion mappings, conformance levels, and POUR principle classifications.

URI Patterns

lighthouse://audits
static
Complete catalog of all 40+ Lighthouse accessibility audits
lighthouse://audits/{auditId}
template
Specific audit detail by ID
lighthouse://audits/level/{level}
template
Filter audits by WCAG conformance level
lighthouse://audits/principle/{principle}
template
Filter audits by POUR principle

POUR Principles

Lighthouse audits map to the four WCAG principles:
PrincipleURIExamples
Perceivablelighthouse://audits/principle/perceivablecolor-contrast, image-alt, video-caption
Operablelighthouse://audits/principle/operablebypass, link-name, tabindex
Understandablelighthouse://audits/principle/understandabledocument-title, html-has-lang, label
Robustlighthouse://audits/principle/robustaria-* audits, duplicate-id-*

Response Schema

Single Audit

When requesting a specific audit (e.g., lighthouse://audits/color-contrast):
auditId
string
required
Lighthouse audit identifier (e.g., "color-contrast")
title
string
required
Human-readable audit title (e.g., "Contraste de color")
description
string
required
Explanation of what the audit checks
wcagCriterion
string
required
Related WCAG criterion ID (e.g., "1.4.3")
wcagLevel
string
required
WCAG conformance level: "A", "AA", or "AAA"
wcagPrinciple
string
required
POUR principle: "perceivable", "operable", "understandable", or "robust"

Multiple Audits

When requesting filtered lists (e.g., lighthouse://audits/level/AA), the response is an array of audit objects with the same schema.

Examples

Get a Specific Audit

const result = await client.readResource({ 
  uri: 'lighthouse://audits/image-alt' 
});

const audit = JSON.parse(result.contents[0].text);
Response:
{
  "auditId": "image-alt",
  "title": "Texto alternativo en imágenes",
  "description": "Los elementos <img> deben tener un atributo alt con texto descriptivo.",
  "wcagCriterion": "1.1.1",
  "wcagLevel": "A",
  "wcagPrinciple": "perceivable"
}

Get the Full Audit Catalog

const result = await client.readResource({ 
  uri: 'lighthouse://audits' 
});

const allAudits = JSON.parse(result.contents[0].text);
console.log(`Total Lighthouse audits: ${allAudits.length}`);
Returns: Array of 40+ audit objects covering all Lighthouse accessibility checks.

Get All Level A Audits

const result = await client.readResource({ 
  uri: 'lighthouse://audits/level/A' 
});

const levelA = JSON.parse(result.contents[0].text);
console.log(`Level A audits: ${levelA.length}`);
levelA.forEach(audit => {
  console.log(`- ${audit.auditId}: ${audit.title}`);
});
Returns: All audits that map to WCAG Level A criteria (fundamental requirements).

Get All Perceivable Audits

const result = await client.readResource({ 
  uri: 'lighthouse://audits/principle/perceivable' 
});

const perceivable = JSON.parse(result.contents[0].text);
console.log('Perceivable audits:');
perceivable.forEach(audit => {
  console.log(`- ${audit.auditId} → WCAG ${audit.wcagCriterion}`);
});
Returns: Audits checking for text alternatives, adaptable content, and distinguishable elements.

Quick Reference Tables

Perceivable Audits

Audit IDTitleWCAGLevel
color-contrastContraste de color1.4.3AA
image-altTexto alternativo en imágenes1.1.1A
input-image-altTexto alternativo en input de imagen1.1.1A
area-altTexto alternativo en áreas1.1.1A
object-altTexto alternativo en objetos1.1.1A
video-captionSubtítulos en video1.2.2A
video-descriptionAudiodescripción en video1.2.5AA
meta-viewportMeta viewport1.4.4AA

Operable Audits

Audit IDTitleWCAGLevel
bypassSaltar bloques de contenido2.4.1A
link-nameNombre accesible de enlaces2.4.4A
button-nameNombre accesible de botones4.1.2A
heading-orderOrden de encabezados2.4.6AA
tabindexUso de tabindex2.4.3A
accesskeysTeclas de acceso únicas2.4.1A
meta-refreshMeta refresh2.2.1A
tap-targetsTamaño de áreas táctiles2.5.5AAA

Understandable Audits

Audit IDTitleWCAGLevel
document-titleTítulo del documento2.4.2A
html-has-langAtributo lang en HTML3.1.1A
html-lang-validValor válido de lang3.1.1A
valid-langAtributos lang válidos3.1.2AA
labelEtiquetas de formularios3.3.2A
form-field-multiple-labelsMúltiples etiquetas en campo3.3.2A

Robust Audits (ARIA & Parsing)

Audit IDTitleWCAGLevel
aria-allowed-attrAtributos ARIA permitidos4.1.2A
aria-required-attrAtributos ARIA requeridos4.1.2A
aria-required-childrenHijos ARIA requeridos4.1.2A
aria-required-parentPadre ARIA requerido4.1.2A
aria-rolesRoles ARIA válidos4.1.2A
aria-valid-attrAtributos ARIA válidos4.1.2A
aria-valid-attr-valueValores ARIA válidos4.1.2A
aria-hidden-bodyARIA hidden en body4.1.2A
aria-hidden-focusFoco en elementos ARIA hidden4.1.2A
duplicate-id-activeIDs duplicados en elementos activos4.1.1A
duplicate-id-ariaIDs duplicados en referencias ARIA4.1.1A

Common Use Cases

Understand What Lighthouse Checks

const result = await client.readResource({ 
  uri: 'lighthouse://audits/color-contrast' 
});

const audit = JSON.parse(result.contents[0].text);

console.log('Lighthouse color-contrast audit:');
console.log(`- Checks: ${audit.description}`);
console.log(`- Maps to WCAG: ${audit.wcagCriterion}`);
console.log(`- Level: ${audit.wcagLevel}`);
Output:
Lighthouse color-contrast audit:
- Checks: Los colores de fondo y primer plano no tienen una relación de contraste suficiente.
- Maps to WCAG: 1.4.3
- Level: AA

Map Lighthouse Results to WCAG

After running Lighthouse analysis, look up the WCAG criteria:
// 1. Run Lighthouse
const lighthouseResult = await analyzeWithLighthouse('https://example.com');

// 2. For each failing audit, get the mapping
for (const auditId of lighthouseResult.failingAudits) {
  const auditResult = await client.readResource({ 
    uri: `lighthouse://audits/${auditId}` 
  });
  const audit = JSON.parse(auditResult.contents[0].text);
  
  // 3. Look up the full WCAG criterion
  const criterionResult = await client.readResource({ 
    uri: `wcag://criteria/${audit.wcagCriterion}` 
  });
  const criterion = JSON.parse(criterionResult.contents[0].text);
  
  console.log(`${audit.title}${criterion.title}`);
  console.log(`Affected users: ${criterion.affectedUsers.join(', ')}`);
}

Build Audit Coverage Report

See which WCAG levels Lighthouse covers:
const result = await client.readResource({ 
  uri: 'lighthouse://audits' 
});

const audits = JSON.parse(result.contents[0].text);

const byLevel = {
  A: audits.filter(a => a.wcagLevel === 'A').length,
  AA: audits.filter(a => a.wcagLevel === 'AA').length,
  AAA: audits.filter(a => a.wcagLevel === 'AAA').length
};

console.log('Lighthouse WCAG coverage:');
console.log(`- Level A: ${byLevel.A} audits`);
console.log(`- Level AA: ${byLevel.AA} audits`);
console.log(`- Level AAA: ${byLevel.AAA} audits`);

Filter by Principle for Focused Audits

const result = await client.readResource({ 
  uri: 'lighthouse://audits/principle/robust' 
});

const robustAudits = JSON.parse(result.contents[0].text);

console.log('Robust principle audits (ARIA, parsing):');
robustAudits.forEach(audit => {
  console.log(`- ${audit.auditId}`);
});
Output: All ARIA-related and HTML parsing audits.

Lighthouse vs WCAG Resources

Use both resources together for complete context:
ResourcePurposeExample Query
lighthouse://auditsWhat does Lighthouse check?”Does Lighthouse have an alt text audit?”
wcag://criteriaWhat does WCAG require?”What’s the full requirement for 1.1.1?”

Workflow: Lighthouse → WCAG → Remediation

1

Run Lighthouse analysis

Use analyze-with-lighthouse to get accessibility score and failing audits
const result = await analyzeWithLighthouse('https://example.com');
console.log(`Score: ${result.score}/100`);
console.log(`Failed audits: ${result.failingAudits.length}`);
2

Look up audit details

For each failing audit, get the Lighthouse audit information
const audit = await client.readResource({ 
  uri: `lighthouse://audits/${auditId}` 
});
const auditData = JSON.parse(audit.contents[0].text);
3

Get WCAG criterion

Use the wcagCriterion field to look up full WCAG requirements
const criterion = await client.readResource({ 
  uri: `wcag://criteria/${auditData.wcagCriterion}` 
});
const wcagData = JSON.parse(criterion.contents[0].text);
4

Apply remediation

Use suggestedActions from the WCAG criterion to fix the issue
console.log('How to fix:');
wcagData.suggestedActions.forEach(action => {
  console.log(`- ${action}`);
});

Integration with Tools

The analyze-with-lighthouse tool returns failing audit IDs that you can look up:
// 1. Run Lighthouse
const analysis = await analyzeWithLighthouse('https://example.com');

// 2. analysis.failingAudits contains audit IDs like:
// ["color-contrast", "image-alt", "link-name"]

// 3. Look up each audit for details
for (const auditId of analysis.failingAudits) {
  const result = await client.readResource({ 
    uri: `lighthouse://audits/${auditId}` 
  });
  const audit = JSON.parse(result.contents[0].text);
  console.log(`${audit.title} (WCAG ${audit.wcagCriterion})`);
}

Coverage Notes

Lighthouse checks approximately 40+ accessibility audits, but this is only a subset of all WCAG 2.1 criteria. Automated tools can only detect about 30-40% of accessibility issues. Manual testing is required for comprehensive WCAG conformance.

What Lighthouse Cannot Check

Lighthouse audits focus on automated-detectable issues. It cannot verify:
  • Quality of alt text (only checks if it exists)
  • Logical heading structure (only checks sequential order)
  • Meaningful link text (only checks if text exists)
  • Keyboard navigation flow (only checks focusable elements)
  • Screen reader experience (requires manual testing)
  • Cognitive accessibility (reading level, consistency)
For complete WCAG coverage, combine Lighthouse with:
  • Manual keyboard testing
  • Screen reader testing
  • Expert review of content quality

Error Responses

Invalid audit IDs return an error object:
{
  "error": "Auditoría Lighthouse 'invalid-audit' no encontrada"
}
Invalid level or principle values return similar error messages.

WCAG Criteria

Look up full WCAG requirements for each audit

Lighthouse Tool

Run Lighthouse analysis to get failing audits

Contrast Thresholds

Specific thresholds for the color-contrast audit

Lighthouse Prompt

Guided workflow for score-focused audits

Standards Reference

This resource is based on:
  • Lighthouse v10+ accessibility audit definitions
  • axe-core rule mappings (Lighthouse uses axe-core internally)
  • WCAG 2.1 criterion mappings
For official Lighthouse audit documentation, see: Lighthouse Accessibility Audits

Build docs developers (and LLMs) love