Lighthouse
A selected set of audits, presented with a weighted accessibility score. Manual checks sit outside that score.
Useful for a quick starting pointThe accessibility field guide
Lighthouse and axe-core are a strong start. Understand what they can detect, where their coverage ends, and what needs a human perspective.
Explore the coverageLighthouse & axe-core WCAG 2.2 A & AA
alt="Chart"Alternative text is present
A scan can check this.Does it explain the chart?
A person needs to judge this.Having a text alternative and having a useful one are different checks. Read the rule
Know the limits
Look up a barrier to see what automation can establish—and what still needs to be tested. Expand any issue for tool details and source links.
A rule can identify a specific failure.
A clue or prerequisite, with limits.
Meaning, behavior, and real use.
27 issues across automated and human testing
Expand to exploreAn image has no accepted text alternative or decorative treatment. This is different from having an alternative that describes the image well.
Checks image alternatives in its accessibility audit.
The image-alt rule runs by default.
Confirm that informative images have useful descriptions and that images marked decorative really add no necessary information.
image-altAn icon button, empty link, or form field has no name that assistive technology can use.
Checks accessible names for supported buttons, links, and fields.
Naming rules for these elements run by default.
Check whether each name describes the action or input. Fields also need adequate visible labels and instructions.
button-namelink-namelabelselect-nameExamples include an unknown role, aria-expanded set to an invalid value, or a widget missing a required child role.
Includes checks for several ARIA markup failures.
Checks supported roles, attributes, values, and required relationships.
Operate the component. Valid markup does not prove that its announced state matches its behavior or that its keyboard controls work.
aria-rolesaria-valid-attr-valuearia-prohibited-attraria-required-childrenThe document lacks a nonempty title, has no language declaration, or uses an invalid language code.
Includes document-title and page-language checks.
These checks run by default.
Confirm that the title identifies the page and that the declared language matches the content. Review passages in other languages too.
document-titlehtml-has-langhtml-lang-validvalid-langA list has unsupported children, a list item lacks its required parent, or a table cell points to unsuitable header elements.
Includes list structure and table header-reference checks.
These structural checks run by default.
Check that visual lists are marked as lists and that table headers actually explain the right data. Correct syntax alone cannot establish meaning.
listlistitemtd-headers-attrViewport settings disable or restrict the ability to enlarge the page.
Explicitly enables the meta-viewport check.
Checks restrictive viewport settings by default.
Enlarge the actual page and test its layout. Removing a zoom restriction does not prove that text and controls remain usable.
meta-viewportA field has an autocomplete value that is malformed or not recognized.
Explicitly enables autocomplete-valid.
Checks existing autocomplete values by default.
Review fields collecting personal information for the right input-purpose information. This check does not find every missing autocomplete attribute.
autocomplete-validA control whose child semantics are hidden contains another focusable control, such as a link inside a button.
Lighthouse 13.5.0 explicitly disables nested-interactive.
Axe-core 4.14.0 enables nested-interactive by default.
Check each control's keyboard operation and screen reader announcement after fixing the nesting.
nested-interactiveA scrollable area has no suitable way to receive keyboard focus. Some cases need review because browser behavior differs.
Lighthouse 13.5.0 explicitly disables scrollable-region-focusable.
Enabled by default in axe-core 4.14.0; some cases return review items.
Use the keyboard to reach and scroll all content in the supported browsers, including Safari where relevant.
scrollable-region-focusableLinked image-map areas, eligible elements with an image role, disclosure summaries, and ARIA tabs need accessible names too.
Lighthouse 13.5.0 explicitly disables these four dedicated naming rules.
Axe-core 4.14.0 enables all four rules by default.
Check whether names explain their purpose. For tabs and disclosures, also test keyboard behavior and changes in state.
area-altrole-img-altsummary-namearia-tab-nameText can exist without helping: a chart labeled “image,” a link named “click here,” or an informative image wrongly marked decorative.
Can find missing names and alternatives, but cannot establish their meaning in context.
Naming rules check accepted alternatives, not complete content quality.
Compare each name or description with the content and its purpose. Check that labels stay visible when a person enters information.
image-altlink-namelabelSupported text contrast failures can be measured. Complex backgrounds, non-text visuals, and color-only meaning need separate review.
Checks supported text contrast and some link-color patterns.
Checks supported text/background combinations; difficult cases can need review. Color contrast is unsupported in JSDOM.
Inspect images of text, icons, borders, charts, and focus indicators. Check hover and error states, and ensure color is not the only cue.
color-contrastlink-in-text-blockA caption track can exist while its words, timing, or sound descriptions are wrong. Other media alternatives also depend on the content.
Includes video-caption, but an unresolved review item does not necessarily lower the score.
In axe-core 4.14.0, missing caption-track markup produces a review item because captions may use another method.
Play the media. Check accurate, synchronized captions and the applicable transcript or audio-description requirement. A transcript does not automatically replace captions.
video-captionTargets can fail the 24 by 24 CSS pixel size requirement without sufficient spacing or an applicable exception.
Lighthouse 13.5.0 explicitly enables target-size.
Default-off in axe-core 4.14.0. Include wcag22aa or explicitly enable target-size.
Review the criterion's exceptions and every state in which a target appears. Check the actual clickable area, including crowded controls.
target-sizeA control visibly says “Search” but has an accessible name that omits “Search,” making it harder to identify with speech input.
Lighthouse 13.5.0 runs the rule but hides it and gives it zero weight in the default report.
Label-content-name-mismatch is enabled by default starting in axe-core 4.14.0.
Compare the visible label and accessible name. Then check whether the wording clearly describes the action; matching words alone do not establish that.
label-content-name-mismatchA page can have valid markup while its headings misdescribe sections, its reading order is confusing, or its table relationships are misleading.
Checks selected structural patterns. Heading-level jumps are reported as a best practice.
Checks selected heading and table patterns; those checks do not establish a meaningful structure.
Read sequentially and navigate headings and table cells with a screen reader. Compare their meaning with the visual layout. A heading jump alone is not always a WCAG failure.
heading-ordertd-headers-attrA named button responds only to pointer clicks, a menu cannot be operated, or focus becomes trapped with no way out.
A normal scan does not operate every control or complete a keyboard journey.
Related markup checks cannot establish full keyboard operation or the absence of traps.
Complete key tasks using Tab, Shift+Tab, Enter, Space, arrow keys, and Escape where appropriate. Confirm that every component can be entered and exited.
Focus moves in a confusing order, escapes a modal, or is lost after a dialog closes or the page changes.
Offers manual focus checks; a scan does not verify the complete interaction.
Can flag some focusability problems, but does not prove logical focus movement through a task.
Trace focus before, during, and after interactions. Check dialog entry, containment where appropriate, exit, and return to a logical position.
The focused control has no visible indicator or is entirely hidden behind a sticky header, footer, or overlay.
A normal accessibility scan does not establish visible, unobscured focus across the page.
A passing text-contrast or focusability check does not verify the focus indicator.
Inspect every focused control, including at enlarged views. WCAG AA prohibits complete obscuring by author-created content; the no-part-obscured requirement is AAA.
Search-result counts, cart updates, or status messages about errors or success appear visually without an appropriate announcement.
A scan does not establish that updates are announced at the right time.
The presence of aria-live or a valid role does not prove that a message is announced usefully.
Trigger status messages with a screen reader and check that they are announced without moving focus. Check the timing and wording, and whether repeated announcements interrupt the task.
An error is vague, disconnected from its field, or offers no useful correction. A person may lose information while trying again.
Naming checks do not establish useful error handling or recovery.
Can check some markup in an error state after it is exposed; it does not judge the whole recovery process.
Submit empty, invalid, and valid data. Check error identification, correction suggestions, preserved information, and applicable confirmation or reversal steps.
Larger text overlaps controls, essential content is clipped, or a task requires unnecessary scrolling in both directions.
A viewport check does not test whether the enlarged layout remains usable.
A scan at one size cannot establish usable resizing and reflow.
Test text at 200% and horizontal-writing layouts at 320 CSS pixels wide, considering exceptions. A common reflow check uses 400% zoom from a 1280-pixel viewport.
A person's preferred spacing causes clipped text, overlapping controls, or lost functionality.
A normal scan does not apply and inspect the complete text-spacing test.
A limited inline-spacing rule exists, but it does not establish that the adjusted layout remains usable.
Apply line height 1.5, paragraph spacing 2 times font size, letter spacing 0.12 em, and word spacing 0.16 em together. Check for lost content and functionality.
avoid-inline-spacingExtra content disappears too soon, cannot be dismissed, or vanishes when the pointer moves onto it.
A snapshot can inspect exposed content but does not establish the full hover or focus behavior.
Scanning an open tooltip does not verify its dismissibility, hoverability, and persistence.
Trigger content with both pointer and keyboard. Try moving onto it, dismissing it, and keeping it open long enough to use, subject to the criterion's exceptions.
A task requires dragging, multiple touch points, or a precise pointer path without an applicable exception or suitable alternative.
A normal scan does not complete these gestures or compare alternative ways to perform the task.
Valid roles and names do not establish a working alternative to the gesture.
Complete the operation using a simple pointer alternative, and with a keyboard where required. A keyboard alternative alone does not satisfy the dragging requirement.
A session expires before a person can finish, or moving and updating content cannot be paused when required.
Some markup patterns can be flagged, but a scan does not evaluate every timeout, animation, or flashing sequence.
Limited timing and media rules do not replace testing the actual content and its controls.
Exercise timeouts and pause, stop, hide, or extend controls. Review applicable exceptions. Flashing content may need a separate analysis of the sequence.
Authentication depends on an unsupported memory task, or a process asks for the same information again without an applicable exception.
A normal accessibility scan does not evaluate the whole authentication or multi-step process.
Field naming and autocomplete checks cannot establish an accessible sign-in or repeated-entry experience.
Test password managers, copy and paste, verification alternatives, and reuse of previously supplied information. Check the exceptions in each criterion.
“Detectable” doesn’t mean “fully tested.” Results depend on the enabled rules, tool version, browser, and page state. This is a guide to common issues, not a complete WCAG checklist.
Behind the results
Lighthouse uses axe-core with its own selection of rules. Running both can reveal additional issues, but their overlapping checks are not independent proof of accessibility.
See Lighthouse’s rule selectionA selected set of audits, presented with a weighted accessibility score. Manual checks sit outside that score.
Useful for a quick starting pointA configurable testing engine. Findings depend on the rules and standards you select, and the UI states you expose.
Useful for repeatable checks in your workflowsVersions matter. These examples compare Lighthouse 13.5.0 with axe-core 4.14.0. Check the versions in your own reports when interpreting differences.
| Check | Lighthouse | axe-core |
|---|---|---|
Nested interactive controlsnested-interactive | Disabled | On by default |
Keyboard access to scrollable regionsscrollable-region-focusable | Disabled | On by default |
Image-map area namesarea-alt | Disabled | On by default |
Image-role alternativesrole-img-alt | Disabled | On by default |
Disclosure and tab namessummary-name · aria-tab-name | Disabled | On by default |
Target size and spacingtarget-size | Enabled | Select WCAG 2.2 AA or enable explicitly |
Visible label in accessible namelabel-content-name-mismatch | Enabled, hidden and unscored | On by default |
Zero violations means no failures were reported by the checks that ran. It doesn’t establish that every WCAG criterion passes or every user can complete a task.
Put it into practice
Combine automated checks with deliberate review of the experience people actually use.
Test key pages, open menus, dialogs, form errors, and later steps in a task. Use Lighthouse snapshots or rerun axe after each interaction.
Testing beyond page loadFix confirmed violations. Investigate incomplete results. Keep best-practice advice distinct from confirmed WCAG failures.
Understanding axe resultsComplete tasks with a keyboard and screen reader. Review content, media, zoom, and errors. Include people with disabilities in evaluation.
Involving users in evaluationGo to the source
Rule-level references are included with every issue above.
How audits are weighted, and why manual checks sit outside the score.
DequeRule definitions, standards, configuration, and items that need review.
W3C Web Accessibility InitiativeCombine technical evaluation with human expertise and user involvement.
Perspective Tester
Bring automated findings and expert human testing together.