Accessibility
Automated accessibility checks with axe-core and Damdit’s own checks.
An image map area has no text alternative
Section titled “An image map area has no text alternative”a11y.axe.area-alt · Issue · Severity: From the axe impact of each finding
Why it matters. People who cannot see an image map rely on text alternatives to understand each clickable region and where it leads.
How to fix. Add accurate alternative text for informative graphics, or mark decorative graphics so assistive technologies ignore them.
An ARIA attribute does not fit the role
Section titled “An ARIA attribute does not fit the role”a11y.axe.aria-allowed-attr · Issue · Severity: From the axe impact of each finding
Why it matters. Unsupported ARIA can communicate states or properties that assistive technologies cannot interpret reliably.
How to fix. Prefer native HTML semantics, remove invalid or deprecated ARIA and ensure every remaining role and attribute is valid for the element and state.
A braille-specific label has no valid equivalent
Section titled “A braille-specific label has no valid equivalent”a11y.axe.aria-braille-equivalent · Review signal (Needs review) · Severity: From the axe impact of each finding
Why it matters. Braille users may receive information that other assistive-technology users cannot access, creating inconsistent control meaning.
How to fix. Keep the custom braille or role description supplemental and provide a valid equivalent semantic name or role.
A command has no accessible name
Section titled “A command has no accessible name”a11y.axe.aria-command-name · Issue · Severity: From the axe impact of each finding
Why it matters. Screen-reader users need each command to announce what it does before they activate it.
How to fix. Give the control a concise accessible name using visible text, a label or the appropriate ARIA naming relationship.
An ARIA attribute is used incorrectly
Section titled “An ARIA attribute is used incorrectly”a11y.axe.aria-conditional-attr · Issue · Severity: From the axe impact of each finding
Why it matters. Conditional ARIA used incorrectly can cause assistive technologies to announce misleading control behavior.
How to fix. Prefer native HTML semantics, remove invalid or deprecated ARIA and ensure every remaining role and attribute is valid for the element and state.
An element uses a deprecated ARIA role
Section titled “An element uses a deprecated ARIA role”a11y.axe.aria-deprecated-role · Issue · Severity: From the axe impact of each finding
Why it matters. Deprecated roles can make the interface less reliable across browsers and assistive technologies.
How to fix. Prefer native HTML semantics, remove invalid or deprecated ARIA and ensure every remaining role and attribute is valid for the element and state.
The document body is hidden from assistive technologies
Section titled “The document body is hidden from assistive technologies”a11y.axe.aria-hidden-body · Issue · Severity: From the axe impact of each finding
Why it matters. Hiding the document body from the accessibility tree can make the entire page unavailable to screen-reader users.
How to fix. Remove aria-hidden from the document body and ensure any intended modal isolation hides only the inactive content.
A focusable element is inside aria-hidden content
Section titled “A focusable element is inside aria-hidden content”a11y.axe.aria-hidden-focus · Issue · Severity: From the axe impact of each finding
Why it matters. Keyboard users can move focus to controls that assistive technologies do not announce, leaving them without context or a usable label.
How to fix. Do not leave focusable controls inside aria-hidden content; manage visibility and focus state together.
An ARIA input field has no accessible name
Section titled “An ARIA input field has no accessible name”a11y.axe.aria-input-field-name · Issue · Severity: From the axe impact of each finding
Why it matters. Without a name, assistive-technology users may hear a value without knowing what quantity or input it represents.
How to fix. Give the control a concise accessible name using visible text, a label or the appropriate ARIA naming relationship.
A meter has no accessible name
Section titled “A meter has no accessible name”a11y.axe.aria-meter-name · Issue · Severity: From the axe impact of each finding
Why it matters. Without a name, assistive-technology users may hear a value without knowing what quantity or condition it represents.
How to fix. Give the control a concise accessible name using visible text, a label or the appropriate ARIA naming relationship.
A progress bar has no accessible name
Section titled “A progress bar has no accessible name”a11y.axe.aria-progressbar-name · Issue · Severity: From the axe impact of each finding
Why it matters. Screen-reader users need to know what a progress value represents and which task is advancing.
How to fix. Give the control a concise accessible name using visible text, a label or the appropriate ARIA naming relationship.
An element has a prohibited ARIA attribute
Section titled “An element has a prohibited ARIA attribute”a11y.axe.aria-prohibited-attr · Issue · Severity: From the axe impact of each finding
Why it matters. Unsupported ARIA attributes can give assistive technologies a misleading accessibility representation.
How to fix. Prefer native HTML semantics, remove invalid or deprecated ARIA and ensure every remaining role and attribute is valid for the element and state.
An ARIA role is missing a required attribute
Section titled “An ARIA role is missing a required attribute”a11y.axe.aria-required-attr · Issue · Severity: From the axe impact of each finding
Why it matters. Missing required ARIA attributes can prevent assistive technologies from understanding a control’s state, value or purpose.
How to fix. Complete the required ARIA states and preserve the required parent-child structure, or replace the widget with native HTML.
An ARIA container has an invalid direct child
Section titled “An ARIA container has an invalid direct child”a11y.axe.aria-required-children · Issue · Severity: From the axe impact of each finding
Why it matters. Assistive technologies rely on the parent-child roles of ARIA widgets to expose their structure and navigation correctly.
How to fix. Complete the required ARIA states and preserve the required parent-child structure, or replace the widget with native HTML.
An ARIA element is missing its required parent
Section titled “An ARIA element is missing its required parent”a11y.axe.aria-required-parent · Issue · Severity: From the axe impact of each finding
Why it matters. Broken ARIA hierarchy can make controls, lists or composite widgets incomprehensible to assistive technologies.
How to fix. Complete the required ARIA states and preserve the required parent-child structure, or replace the widget with native HTML.
An element uses an invalid ARIA role
Section titled “An element uses an invalid ARIA role”a11y.axe.aria-roles · Issue · Severity: From the axe impact of each finding
Why it matters. Invalid roles can make assistive technologies interpret the element as the wrong kind of control or ignore its semantics.
How to fix. Prefer native HTML semantics, remove invalid or deprecated ARIA and ensure every remaining role and attribute is valid for the element and state.
A tab has no accessible name
Section titled “A tab has no accessible name”a11y.axe.aria-tab-name · Issue · Severity: From the axe impact of each finding
Why it matters. Without a name, screen-reader users hear only that there is a tab and cannot choose the right one.
How to fix. Give every tab a concise accessible name using its visible text, aria-label or aria-labelledby.
A toggle field has no accessible name
Section titled “A toggle field has no accessible name”a11y.axe.aria-toggle-field-name · Issue · Severity: From the axe impact of each finding
Why it matters. Without a name, assistive-technology users cannot understand the setting controlled by the toggle.
How to fix. Give the control a concise accessible name using visible text, a label or the appropriate ARIA naming relationship.
A tooltip has no accessible name
Section titled “A tooltip has no accessible name”a11y.axe.aria-tooltip-name · Issue · Severity: From the axe impact of each finding
Why it matters. People using assistive technologies may not receive the explanatory content a tooltip is intended to provide.
How to fix. Give the control a concise accessible name using visible text, a label or the appropriate ARIA naming relationship.
An element uses an invalid ARIA attribute
Section titled “An element uses an invalid ARIA attribute”a11y.axe.aria-valid-attr · Issue · Severity: From the axe impact of each finding
Why it matters. Unknown ARIA attributes are ignored or inconsistently interpreted, so users may miss important state or purpose information.
How to fix. Prefer native HTML semantics, remove invalid or deprecated ARIA and ensure every remaining role and attribute is valid for the element and state.
An ARIA attribute has an invalid value
Section titled “An ARIA attribute has an invalid value”a11y.axe.aria-valid-attr-value · Issue · Severity: From the axe impact of each finding
Why it matters. Invalid ARIA values can make assistive technologies announce the wrong state or ignore the control semantics.
How to fix. Prefer native HTML semantics, remove invalid or deprecated ARIA and ensure every remaining role and attribute is valid for the element and state.
A form autocomplete value is invalid
Section titled “A form autocomplete value is invalid”a11y.axe.autocomplete-valid · Issue · Severity: From the axe impact of each finding
Why it matters. Invalid autocomplete tokens can prevent browsers from offering the right assistance and make forms slower to complete.
How to fix. Use a valid autocomplete token and one clear label associated with the form control.
Inline text spacing may block readable zoom
Section titled “Inline text spacing may block readable zoom”a11y.axe.avoid-inline-spacing · Issue · Severity: From the axe impact of each finding
Why it matters. People who need increased spacing may lose readability when the page overrides those settings.
How to fix. Move restrictive text-spacing styles out of inline declarations so users can adjust spacing with their own stylesheet or browser settings.
Content uses a blinking effect
Section titled “Content uses a blinking effect”a11y.axe.blink · Issue · Severity: From the axe impact of each finding
Why it matters. Blinking content can distract users and may create discomfort or risk for people sensitive to visual motion.
How to fix. Remove blinking or marquee content and replace it with static, user-controlled content.
A button does not have an accessible name
Section titled “A button does not have an accessible name”a11y.axe.button-name · Issue · Severity: From the axe impact of each finding
Why it matters. A button without a discernible name does not tell screen-reader users what action it performs.
How to fix. Give the control a concise accessible name using visible text, a label or the appropriate ARIA naming relationship.
The page has no reliable bypass mechanism
Section titled “The page has no reliable bypass mechanism”a11y.axe.bypass · Review signal (Needs review) · Severity: From the axe impact of each finding
Why it matters. Keyboard and screen-reader users may have to move through the same navigation repeatedly before reaching the main content.
How to fix. Add a visible-on-focus skip link or another mechanism that lets keyboard users bypass repeated navigation.
Text contrast is below the required minimum
Section titled “Text contrast is below the required minimum”a11y.axe.color-contrast · Issue · Severity: From the axe impact of each finding
Why it matters. Insufficient contrast can make text or controls unreadable for people with low vision, color-vision differences or a low-quality display.
How to fix. Adjust foreground and background colors to meet the required contrast ratio for the text or control.
The page may lock screen orientation
Section titled “The page may lock screen orientation”a11y.axe.css-orientation-lock · Issue · Severity: From the axe impact of each finding
Why it matters. Orientation locking can make content unavailable to people who need a particular device orientation or use assistive setups.
How to fix. Allow the content to work in both supported orientations unless the function genuinely requires one orientation.
A definition list has invalid structure
Section titled “A definition list has invalid structure”a11y.axe.definition-list · Issue · Severity: From the axe impact of each finding
Why it matters. Invalid list structure makes relationships between terms and descriptions harder to understand for assistive technologies.
How to fix. Use valid list or definition-list elements and keep terms, descriptions and list items inside their required containers.
A definition-list item is outside a definition list
Section titled “A definition-list item is outside a definition list”a11y.axe.dlitem · Issue · Severity: From the axe impact of each finding
Why it matters. A term or description outside its list loses the semantic relationship assistive technologies rely on.
How to fix. Use valid list or definition-list elements and keep terms, descriptions and list items inside their required containers.
The rendered document title is missing or empty
Section titled “The rendered document title is missing or empty”a11y.axe.document-title · Issue · Severity: From the axe impact of each finding
Why it matters. A meaningful document title helps users identify the current page and distinguish it from other browser tabs or windows.
How to fix. Add a unique, descriptive HTML title for the document.
An ARIA reference points to a duplicate ID
Section titled “An ARIA reference points to a duplicate ID”a11y.axe.duplicate-id-aria · Review signal (Needs review) · Severity: From the axe impact of each finding
Why it matters. Duplicate IDs can make aria-labelledby, aria-describedby and other relationships resolve to the wrong element or become ambiguous.
How to fix. Make referenced IDs unique and update every label, description and ARIA relationship that points to them.
The accessibility check could not run
Section titled “The accessibility check could not run”a11y.axe.execution_failed · Coverage (what could not be measured) · Severity: Info
Why it matters. The attempted measurement could not provide usable evidence. No website defect or score penalty is asserted.
How to fix. Review the captured evidence and the documented measurement limitations; verify any change using the same source.
A form field has multiple labels
Section titled “A form field has multiple labels”a11y.axe.form-field-multiple-labels · Review signal (Needs review) · Severity: From the axe impact of each finding
Why it matters. Multiple competing labels can cause assistive technologies to announce confusing or duplicated instructions.
How to fix. Use a valid autocomplete token and one clear label associated with the form control.
Tab skips an iframe with focusable content
Section titled “Tab skips an iframe with focusable content”a11y.axe.frame-focusable-content · Issue · Severity: From the axe impact of each finding
Why it matters. Keyboard and screen-reader users can lose context when focus enters embedded content without a clear frame boundary and title.
How to fix. Keep focusable iframe content reachable in the keyboard order and remove an inappropriate tabindex=-1.
An iframe has no accessible title
Section titled “An iframe has no accessible title”a11y.axe.frame-title · Issue · Severity: From the axe impact of each finding
Why it matters. Screen-reader users need a frame title to understand the purpose of embedded content before entering it.
How to fix. Give each embedded frame a unique, descriptive title that explains its content.
Iframe titles are not unique
Section titled “Iframe titles are not unique”a11y.axe.frame-title-unique · Review signal (Needs review) · Severity: From the axe impact of each finding
Why it matters. Duplicate frame titles make it difficult for assistive-technology users to distinguish embedded content.
How to fix. Give each embedded frame a unique, descriptive title that explains its content.
The document has no language declaration
Section titled “The document has no language declaration”a11y.axe.html-has-lang · Issue · Severity: From the axe impact of each finding
Why it matters. Without a language declaration, assistive technologies may use the wrong pronunciation rules and search engines have less reliable locale context.
How to fix. Set valid, consistent language codes on the document and on any content that changes language.
The document language code is invalid
Section titled “The document language code is invalid”a11y.axe.html-lang-valid · Issue · Severity: From the axe impact of each finding
Why it matters. An invalid language code prevents browsers and assistive technologies from reliably selecting the correct pronunciation and language behavior.
How to fix. Set valid, consistent language codes on the document and on any content that changes language.
The document language declarations conflict
Section titled “The document language declarations conflict”a11y.axe.html-xml-lang-mismatch · Issue · Severity: From the axe impact of each finding
Why it matters. Conflicting language declarations can cause different tools to interpret and pronounce the same content differently.
How to fix. Set valid, consistent language codes on the document and on any content that changes language.
An image does not have an accessible alternative
Section titled “An image does not have an accessible alternative”a11y.axe.image-alt · Issue · Severity: From the axe impact of each finding
Why it matters. People who cannot see an image rely on alternative text to receive its meaning, while decorative images need to be hidden from the accessibility tree.
How to fix. Add accurate alternative text for informative graphics, or mark decorative graphics so assistive technologies ignore them.
An input button has no accessible name
Section titled “An input button has no accessible name”a11y.axe.input-button-name · Issue · Severity: From the axe impact of each finding
Why it matters. People using screen readers cannot understand the action of an unnamed input button.
How to fix. Give the control a concise accessible name using visible text, a label or the appropriate ARIA naming relationship.
An image button has no accessible alternative
Section titled “An image button has no accessible alternative”a11y.axe.input-image-alt · Issue · Severity: From the axe impact of each finding
Why it matters. An image used as a button needs text that communicates the action to users who cannot see the graphic.
How to fix. Add accurate alternative text for informative graphics, or mark decorative graphics so assistive technologies ignore them.
A form field has no usable label
Section titled “A form field has no usable label”a11y.axe.label · Issue · Severity: From the axe impact of each finding
Why it matters. Labels tell users what information a field expects and allow assistive technologies to announce that purpose with the control.
How to fix. Use a valid autocomplete token and one clear label associated with the form control.
Visible label differs from the accessible name
Section titled “Visible label differs from the accessible name”a11y.axe.label-content-name-mismatch · Issue · Severity: From the axe impact of each finding
Why it matters. Speech-input users rely on the visible label matching the programmatic name so they can activate a control by saying the words they see.
How to fix. Include the visible label text in the programmatic accessible name so speech-input users can activate the control using the words they see.
An inline link is distinguished only by color
Section titled “An inline link is distinguished only by color”a11y.axe.link-in-text-block · Issue · Severity: From the axe impact of each finding
Why it matters. People who cannot perceive the color difference need another visual cue to identify which words are links.
How to fix. Distinguish inline links from surrounding text with more than color, such as underline or another persistent visual cue.
A link does not have an accessible name
Section titled “A link does not have an accessible name”a11y.axe.link-name · Issue · Severity: From the axe impact of each finding
Why it matters. A link without a discernible name does not tell screen-reader users where it goes or what it does.
How to fix. Give the control a concise accessible name using visible text, a label or the appropriate ARIA naming relationship.
A list has invalid structure
Section titled “A list has invalid structure”a11y.axe.list · Issue · Severity: From the axe impact of each finding
Why it matters. Correct list structure lets assistive technologies announce that content is a list and communicate its number of items.
How to fix. Use valid list or definition-list elements and keep terms, descriptions and list items inside their required containers.
A list item is outside a list
Section titled “A list item is outside a list”a11y.axe.listitem · Issue · Severity: From the axe impact of each finding
Why it matters. A list item outside a list loses the context and position information assistive technologies normally provide.
How to fix. Use valid list or definition-list elements and keep terms, descriptions and list items inside their required containers.
The page uses a marquee effect
Section titled “The page uses a marquee effect”a11y.axe.marquee · Issue · Severity: From the axe impact of each finding
Why it matters. Automatically moving text can be difficult to read, impossible to pause and distracting for users with cognitive or visual disabilities.
How to fix. Remove blinking or marquee content and replace it with static, user-controlled content.
The page uses an automatic refresh or redirect
Section titled “The page uses an automatic refresh or redirect”a11y.axe.meta-refresh · Issue · Severity: From the axe impact of each finding
Why it matters. An automatic refresh or redirect can interrupt reading, reset focus or move users before they are ready.
How to fix. Remove delayed refresh or redirect behavior and use a user-controlled, server-side navigation where a redirect is required.
The viewport configuration blocks zoom
Section titled “The viewport configuration blocks zoom”a11y.axe.meta-viewport · Issue · Severity: From the axe impact of each finding
Why it matters. People with low vision rely on browser zoom; disabling it can make text and controls impossible to perceive or operate.
How to fix. Do not disable browser zoom or text scaling in the viewport configuration.
Interactive controls are nested
Section titled “Interactive controls are nested”a11y.axe.nested-interactive · Issue · Severity: From the axe impact of each finding
Why it matters. Nested controls can create an ambiguous focus target and prevent users from understanding or activating the intended action.
How to fix. Remove nested interactive controls and give each action its own unambiguous focus target.
Autoplaying audio needs a manual check
Section titled “Autoplaying audio needs a manual check”a11y.axe.no-autoplay-audio · Review signal (Needs review) · Severity: Info
Why it matters. Sound that starts on its own can drown out a screen reader, distract visitors and leave them unable to stop it quickly.
How to fix. Don’t autoplay sound, keep it under 3 seconds, or give visitors a visible control to pause or mute it.
An embedded object has no accessible alternative
Section titled “An embedded object has no accessible alternative”a11y.axe.object-alt · Issue · Severity: From the axe impact of each finding
Why it matters. Users who cannot access embedded object content need a textual description or equivalent alternative to understand its purpose.
How to fix. Add accurate alternative text for informative graphics, or mark decorative graphics so assistive technologies ignore them.
Text looks like a heading but isn’t one
Section titled “Text looks like a heading but isn’t one”a11y.axe.p-as-heading · Issue · Severity: From the axe impact of each finding
Why it matters. Text that only looks like a heading is missing from the programmatic outline used for screen-reader navigation.
How to fix. Use a semantic heading element instead of styling a paragraph to look like a heading.
A page could not be rendered for checking
Section titled “A page could not be rendered for checking”a11y.axe.page_render_failed · Coverage (what could not be measured) · Severity: Info
Why it matters. The attempted measurement could not provide usable evidence. No website defect or score penalty is asserted.
How to fix. Review the captured evidence and the documented measurement limitations; verify any change using the same source.
An image role has no accessible name
Section titled “An image role has no accessible name”a11y.axe.role-img-alt · Issue · Severity: From the axe impact of each finding
Why it matters. An element exposed as an image needs an accessible name so users who cannot see it can understand its meaning.
How to fix. Add accurate alternative text for informative graphics, or mark decorative graphics so assistive technologies ignore them.
A scrollable region cannot be reached by keyboard
Section titled “A scrollable region cannot be reached by keyboard”a11y.axe.scrollable-region-focusable · Issue · Severity: From the axe impact of each finding
Why it matters. Keyboard users need to reach a scrollable region before they can move through content that does not fit inside it.
How to fix. Make the scrollable region keyboard reachable and ensure users can move through its content without a pointer.
A select control has no accessible name
Section titled “A select control has no accessible name”a11y.axe.select-name · Issue · Severity: From the axe impact of each finding
Why it matters. People using screen readers cannot tell what a select control changes when its name is missing.
How to fix. Give the control a concise accessible name using visible text, a label or the appropriate ARIA naming relationship.
The page uses a server-side image map
Section titled “The page uses a server-side image map”a11y.axe.server-side-image-map · Review signal (Needs review) · Severity: From the axe impact of each finding
Why it matters. Server-side image maps do not expose individual destinations in a form that keyboard and assistive-technology users can navigate reliably.
How to fix. Replace the server-side image map with standard links or a client-side accessible control structure.
A disclosure control has no accessible name
Section titled “A disclosure control has no accessible name”a11y.axe.summary-name · Issue · Severity: From the axe impact of each finding
Why it matters. A disclosure summary needs a name so users understand what content it will expand or collapse.
How to fix. Give the control a concise accessible name using visible text, a label or the appropriate ARIA naming relationship.
An SVG image has no accessible alternative
Section titled “An SVG image has no accessible alternative”a11y.axe.svg-img-alt · Issue · Severity: From the axe impact of each finding
Why it matters. An SVG exposed as an image needs accessible text to communicate its meaning to people who cannot see it.
How to fix. Add accurate alternative text for informative graphics, or mark decorative graphics so assistive technologies ignore them.
A table caption sits in a data cell
Section titled “A table caption sits in a data cell”a11y.axe.table-fake-caption · Issue · Severity: From the axe impact of each finding
Why it matters. A visual caption placed in a data cell may not be announced as the table’s name, making the table harder to identify and navigate.
How to fix. Use a real table caption and keep the caption associated with the table rather than placing it in a data cell.
A touch target is too small or crowded
Section titled “A touch target is too small or crowded”a11y.axe.target-size · Issue · Severity: From the axe impact of each finding
Why it matters. Small or tightly packed targets are difficult to activate accurately for users with limited dexterity, tremor or a small touch screen.
How to fix. Increase the touch target or add sufficient spacing so adjacent targets can be activated accurately.
A data cell has no table header
Section titled “A data cell has no table header”a11y.axe.td-has-header · Issue · Severity: From the axe impact of each finding
Why it matters. Screen-reader users need header associations to understand what each data cell represents in a larger table.
How to fix. Correct table header relationships and ensure every data cell can be understood from its associated headers.
A data cell references an invalid table header
Section titled “A data cell references an invalid table header”a11y.axe.td-headers-attr · Issue · Severity: From the axe impact of each finding
Why it matters. Invalid header references can cause assistive technologies to announce the wrong context for a data cell.
How to fix. Correct table header relationships and ensure every data cell can be understood from its associated headers.
A table header has no associated data cells
Section titled “A table header has no associated data cells”a11y.axe.th-has-data-cells · Review signal (Needs review) · Severity: From the axe impact of each finding
Why it matters. A header with no associated data creates a misleading table structure and makes navigation less predictable.
How to fix. Correct table header relationships and ensure every data cell can be understood from its associated headers.
A language declaration is invalid
Section titled “A language declaration is invalid”a11y.axe.valid-lang · Issue · Severity: From the axe impact of each finding
Why it matters. Invalid language codes prevent assistive technologies from applying the correct pronunciation to content whose language changes within the page.
How to fix. Set valid, consistent language codes on the document and on any content that changes language.
A video does not provide captions
Section titled “A video does not provide captions”a11y.axe.video-caption · Review signal (Needs review) · Severity: From the axe impact of each finding
Why it matters. People who are deaf or hard of hearing need captions to access dialogue and meaningful sounds in video content.
How to fix. Add captions or an equivalent text track for dialogue and meaningful sounds.
An HTML id is not unique
Section titled “An HTML id is not unique”a11y.dom.duplicate_id · Issue · Severity: Medium
Why it matters. Duplicate IDs can associate labels, descriptions and ARIA relationships with the wrong element.
How to fix. Make every ID unique and update labels, ARIA references, anchors and scripts that use it.
The page has no H1 heading
Section titled “The page has no H1 heading”a11y.heading.h1_missing · Review signal (Needs review) · Severity: Medium
Why it matters. The primary heading helps visitors and assistive technologies understand the page topic and content structure.
How to fix. Add one primary heading that describes the page topic and verify the heading structure.
The heading hierarchy skips a level
Section titled “The heading hierarchy skips a level”a11y.heading.level_skipped · Review signal (Needs review) · Severity: Medium
Why it matters. Skipped heading levels can make the content outline harder to follow for people navigating by headings.
How to fix. Use heading levels in logical order and use CSS for visual sizing rather than skipping levels.
The page has multiple H1 headings
Section titled “The page has multiple H1 headings”a11y.heading.multiple_h1 · Review signal (Needs review) · Severity: Low
Why it matters. Multiple primary headings can make the page hierarchy ambiguous for visitors and assistive technologies.
How to fix. Keep one primary H1 where possible and use lower-level headings for separate sections.
Tab did not move keyboard focus
Section titled “Tab did not move keyboard focus”a11y.keyboard.navigation_failed · Review signal (Needs review) · Severity: Medium
Why it matters. An unchanged focus after a trusted Tab probe warrants review of the sampled keyboard state; it is not proof of a complete keyboard accessibility failure.
How to fix. Manually inspect the recorded focus state, intended modal behavior and macOS keyboard preferences.
A page’s HTML could not be loaded
Section titled “A page’s HTML could not be loaded”a11y.page.html_fetch_failed · Coverage (what could not be measured) · Severity: Info
Why it matters. The attempted measurement could not provide usable evidence. No website defect or score penalty is asserted.
How to fix. Review the captured evidence and the documented measurement limitations; verify any change using the same source.