Pillar · 36 errors
Accessibility Errors
Accessibility failures lock real users out and increasingly invite legal risk. Most are mechanical — missing alt text, low contrast, unlabeled controls — and quick to fix once you know what to look for. Fixing them also tends to help SEO.
labelForm input has no associated label (WCAG 4.1.2) An input, select, or textarea has no programmatic label, so screen readers can't tell users what to type into it. critical aria-required-attraxe "Required ARIA attributes must be provided" An element declares an ARIA role but omits a state or property that role requires, so assistive tech can't convey its value. critical select-nameSelect element must have an accessible name A <select> has no label, aria-label, or aria-labelledby, so screen readers announce only "combobox" with no hint of its purpose. critical color-contrastInsufficient text color contrast (WCAG 1.4.3) Text-to-background contrast falls below 4. high image-altImage missing alt text (WCAG 1.1.1) An <img> has no alt attribute or accessible name, so screen readers read the filename or skip it entirely. high link-nameLink has no discernible text / empty link (WCAG 2.4.4) An anchor has no accessible name, so a screen reader reads out the raw URL instead of where the link goes. high color-contrastcolor-contrast: Elements must meet minimum contrast ratio Text-to-background contrast falls under the WCAG 2 AA threshold, so low-vision users and anyone in glare can't read it. high image-altImages must have alternate text (missing alt attribute) An img has no alt attribute, so screen readers fall back to reading the filename instead of describing the picture. high link-namelink-name: Links must have discernible text An anchor has no perceivable text, so screen readers announce "link" with nothing to tell the user where it goes. high labelForm elements must have labels (missing form label) An input has no associated label, so screen readers announce it with no name and users can't tell what to type. high aria-hidden-focusARIA hidden element must not be focusable or contain focusables An element with aria-hidden="true" is itself focusable or wraps a focusable control, creating a tab stop that screen readers cannot announce. high nested-interactivenested-interactive: Interactive controls must not be nested A focusable control is nested inside another interactive element, so screen readers skip the inner control and its name and role never get announced. high duplicate-id-aria / F77id attribute value must be unique (duplicate ID) The same id is used more than once, so label, aria-labelledby, and aria-describedby references resolve to only the first match and silently mistarget. high html-has-lang<html> element must have a lang attribute The root <html> tag has no lang attribute, so screen readers fall back to a guess and read the page with the wrong pronunciation engine. high aria-hidden-focus[aria-hidden="true"] elements contain focusable descendants An element pulled from the accessibility tree with aria-hidden="true" still contains focusable children, creating ghost tab stops. high frame-titleFrames must have an accessible name An iframe has no title attribute, so screen readers announce it as just "frame" with no clue what's embedded inside. high Empty form labelWAVE: Empty form label A label is correctly associated with a form control but contains no text, so the control still has no accessible name. high Broken ARIA referenceWAVE: Broken ARIA reference An aria-labelledby or aria-describedby points to an id that doesn't exist on the page, so the reference resolves to nothing. high aria-hidden-focusaxe "ARIA hidden element must not be focusable or contain focusable elements" A focusable control sits inside an aria-hidden subtree, so keyboard users tab onto an element screen readers don't announce. high Empty linkWAVE "Empty link" An anchor contains no perceivable text, so screen readers announce "link" with nothing telling the user where it goes. high button-nameaxe "Buttons must have discernible text" A button has no text, label, or titled icon, so screen readers announce "button" with no idea what it does. high duplicate-id-ariaaxe "IDs used in ARIA and labels must be unique" A duplicated id referenced by aria-labelledby, aria-describedby, or label resolves to the wrong element, mistargeting assistive tech. high aria-required-childrenCertain ARIA roles must contain particular children An ARIA role is missing the child roles it's required to own, breaking the widget for screen readers. high aria-allowed-attrElements must only use allowed ARIA attributes An aria-* attribute isn't permitted for that element's role, so the browser drops it and the widget's state never reaches a screen reader. high video-caption<video> elements must have captions A <video> with audio has no captions track, so deaf and hard-of-hearing users miss dialogue and meaningful sound. high object-alt<object> elements must have alternate text An embedded <object> has no text alternative, so its content is invisible to screen readers (WCAG 1. high scrollable-region-focusableScrollable region must have keyboard access A scrolling container holds no focusable content, so keyboard-only users can't reach it or scroll through the overflow it hides. medium heading-orderHeading levels should only increase by one (skipped level) Heading levels jump (an h2 followed by an h4), so the outline screen reader users navigate by has gaps and misleads them about structure. medium label-content-name-mismatchVisible text must be part of the accessible name An aria-label overrides the visible button text, so voice-control users can't activate the control by saying what they see (WCAG 2. medium autocomplete-validautocomplete attribute must be used correctly An autocomplete token is misspelled, ordered wrong, or invalid for the field type, so browsers and AT can't identify the input's purpose (WCAG 1. medium td-headers-attrheaders attribute must refer to cells in the same table A data cell's headers attribute lists an id that doesn't exist or sits outside the table, so the cell-to-header association silently breaks. medium meta-viewportViewport meta tag disables zoom (user-scalable=no) A viewport meta tag blocks pinch-to-zoom, locking out low-vision users who need to magnify text. medium target-sizeTouch target smaller than 24x24px (WCAG 2.2 SC 2.5.8) Tappable controls under 24x24 CSS px without enough spacing fail the WCAG 2. medium meta-refreshTimed refresh must not exist (meta http-equiv=refresh) A <meta http-equiv="refresh"> auto-reloads or redirects the page on a timer, yanking focus to the top with no way to stop it. medium page-has-heading-onePage must contain a level-one heading The page has no <h1>, so screen-reader users can't jump straight to the main topic and have to wade through the page to orient. medium regionAll page content should be contained by landmarks Content sits outside any landmark region, so screen-reader users can't jump to it via landmark navigation. low