Accessibility website checks
Website accessibility checks look for barriers that automated inspection can identify in markup and rendered pages. WebAuditOS combines its own checks with axe-core rules. Several rules can describe one underlying problem, so one documentation page may explain multiple identifiers. An automated pass does not establish conformance to WCAG or the usability of the complete service.
Read the element evidence before editing a template. An empty alternative can be correct for a decorative image; a named link can still make little sense in context. Test keyboard navigation, focus, zoom and assistive technology separately. Include interactive states that require authentication or form submission and cannot be reached by the public crawler.
The check pages below describe the exact observable condition, why it matters, practical fixes and the limits of the detector. Open the affected URL and inspect its evidence before making a change. After correction, repeat the scan and verify the result in a browser. The related guide connects these individual checks into a review workflow. Keep deliberate exceptions documented so that a passing automated result is never mistaken for a complete manual assessment.
Checks and fixes
Active Area Elements Must Have Alternative Text: Name Each Link
Fix image-map area links missing alternative text. Name each destination, preserve the image context, test coordinate behaviour, and offer usable alternatives.
ARIA Attributes Must Match Role Conditions and Native State
Fix conditionally invalid ARIA attributes. Keep native checkbox state authoritative, review row hierarchy semantics, and verify updates after real interaction.
ARIA Attributes Must Conform to Valid Names: Fix the Vocabulary
Fix invalid ARIA attribute names. Correct spelling, separate role and data attributes, verify vocabulary support, and inspect actual accessibility behaviour.
ARIA Attributes Must Conform to Valid Values: Fix Types and References
Fix invalid ARIA values and references. Use defined tokens and numeric formats, keep IDs current, and verify real state across dynamic component transitions.
ARIA Braille Attributes Must Have a Non-Braille Equivalent
Review ARIA braille labels and role descriptions. Preserve ordinary names, use specialised variants only when justified, and test speech and braille output.
ARIA Commands Must Have an Accessible Name: Prefer Clear Actions
Name custom ARIA buttons, links and menu items. Prefer native controls, keep visible labels consistent, and test activation, focus and dynamic states.
ARIA-Hidden Elements Must Not Expose Hidden Keyboard Stops
Fix focus inside aria-hidden content. Choose true hiding or inert regions, move focus safely, and restore interactions without relying on tabindex alone.
Aria-Hidden True Must Not Be Present on the Document Body
Remove inappropriate aria-hidden from the body. Repair modal boundaries, manage focus and inactive regions, and rescan content omitted from earlier tests.
ARIA Input Fields Must Have an Accessible Name: Label the Widget
Name custom ARIA fields with correct label relationships. Prefer native controls, preserve purpose and value semantics, and test full keyboard interaction.
ARIA Meter Nodes Must Have an Accessible Name: Identify the Measure
Label ARIA meters with the quantity they measure. Keep range and value text accurate, prefer native elements where useful, and distinguish gauges from progress.
ARIA Progressbar Nodes Must Have an Accessible Name: Name the Task
Name ARIA progress bars for their task. Handle known and indeterminate progress correctly, avoid noisy updates, and test completion and failure states.
Aria-Roledescription Must Be on Elements with a Semantic Role
Review aria-roledescription on meaningful roles. Use custom wording sparingly, preserve familiar interaction semantics, and test speech and braille output.
ARIA Roles Used Must Conform to Valid Values: Choose Real Semantics
Fix invalid ARIA role values. Replace invented or abstract roles, understand fallback tokens, prefer native HTML, and verify the complete widget behaviour.
ARIA Tab Nodes Must Have an Accessible Name: Identify Each Panel
Name ARIA tabs with meaningful labels. Preserve names at narrow widths, connect panels correctly, and test selection and focus beyond the naming rule.
ARIA Toggle Fields Must Have an Accessible Name: Label the Setting
Name custom switches, checkboxes, radios and options. Keep setting labels stable, expose true state, and test keyboard behaviour and visible label consistency.
ARIA Tooltip Nodes Must Have an Accessible Name: Supply Useful Text
Fix empty ARIA tooltips. Provide useful description text, connect the trigger, support keyboard dismissal, and test dynamic behaviour beyond the initial scan.
Audio Elements and Captions Tracks: Provide a Usable Transcript
Make prerecorded audio accessible with an equivalent transcript. Understand audio-caption limits and verify the real alternative, not merely a track element.
Autocomplete Attribute Must Be Used Correctly: Fix Field Purpose
Fix invalid autocomplete attributes. Match supported tokens to user information, preserve useful labels, and test autofill without promising full compliance.
Blink Elements Are Obsolete: Remove Markup, Review Actual Motion
Remove obsolete blink elements without losing content. Review actual CSS and scripted motion separately, provide necessary controls, and assess flashing risks.
Buttons Must Have Discernible Text: Name the Action
Fix unnamed buttons with useful accessible names. Prefer visible action text, label icons carefully, preserve keyboard behaviour, and verify computed names.
Certain ARIA Roles Must Be Contained by Particular Parents
Fix ARIA required-parent findings. Check ownership and wrappers, prefer native structures, and implement complete widgets instead of merely adding roles.
Certain ARIA Roles Must Contain Particular Children: Fix Structure
Fix ARIA required-child findings. Check owned roles and wrappers, preserve native semantics, handle loading states, and implement keyboard behaviour separately.
CSS Media Queries Must Not Lock Display Orientation
Remove unintended orientation restrictions. Keep tasks usable in portrait and landscape, inspect overlays and scripts, and separate scan coverage from WCAG.
Data or Header Cells Must Not Be Used as a Data Table Caption
Replace fake table titles with appropriate captions or naming. Preserve spanning headers, verify cell relationships, and account for the disabled scan rule.
Delayed Refresh Under 20 Hours Must Not Be Used: Remove Timing Barriers
Fix delayed meta refresh and redirects. Preserve user control, choose appropriate server redirects, and distinguish scan thresholds from timing requirements.
Deprecated ARIA Roles Must Not Be Used: Migrate Meaningfully
Replace deprecated ARIA roles with appropriate native structures. Review directory and publishing roles, preserve links and grouping, and test real support.
DL Elements Must Contain Properly Ordered DT and DD Groups
Fix malformed description lists. Preserve valid term-description groups and wrappers, remove stray content, and manually verify ordering beyond the rule.
Documents Must Have a Title Element to Aid in Navigation
Fix an empty rendered document title. Describe each view, compare source and browser output, and test route changes without assuming every title is useful.
DT and DD Elements Must Be Contained by a DL: Restore Structure
Fix dt and dd outside a description list. Use valid term-description groups, preserve appropriate wrappers, and test semantics as well as responsive styling.
Visible Text Must Be Part of the Accessible Name: Match Labels
Keep visible control labels in accessible names. Review ARIA overrides, preserve useful context, and test voice interaction beyond the disabled scanner rule.
Elements Must Meet Minimum Color Contrast Ratio Thresholds
Fix insufficient text contrast. Apply 4.5:1 and large-text 3:1 thresholds, test themes and states, and manually review uncertain backgrounds and scan results.
Elements Must Only Use Permitted ARIA Attributes: Fix Prohibited Naming
Fix prohibited ARIA attributes by inspecting the real role. Move names to the right control, preserve useful text, and avoid adding roles merely to pass checks.
Elements Must Only Use Supported ARIA Attributes: Match Role and State
Fix role and ARIA property mismatches. Choose the intended interaction, use supported states, preserve native semantics, and test actual updates after input.
Form Elements Must Have Labels: Name Fields Persistently
Fix unnamed form fields with associated visible labels. Keep placeholders for hints, check computed names and errors, and test dynamic forms and repeated IDs.
Form Field Must Not Have Multiple Label Elements: Review the Name
Review multiple labels without assuming invalid HTML. Remove accidental duplicates, preserve deliberate naming, and test visible guidance and computed names.
Frames Must Have a Unique Title Attribute: Distinguish the Content
Review duplicate frame titles for meaningful distinctions. Name the embedded purpose, preserve valid repetition, and test actual frame navigation.
Frames with Focusable Content Must Not Have Tabindex Minus One
Review iframe tabindex=-1 when embedded controls need keyboard access. Test entry, operation and exit, restore active states, and assess framed content.
Heading Levels Skipped: Repair the Outline Without Styling by Tag
Review skipped heading levels. Match the real content hierarchy, separate semantic levels from visual styles, and verify rendered and source outlines.
HTML Lang and XML:Lang Must Have the Same Base Language
Resolve lang and xml:lang conflicts. Check the served document type, declare the real language, and distinguish full consistency from a base-code pass.
HTML Lang Attribute Missing: Declare the Actual Page Language
Fix a missing HTML lang attribute. Declare the real language, mark changes, preserve valid BCP 47 tags, and test assistive output without ranking promises.
IDs Used in ARIA and Labels Must Be Unique: Repair References
Repair duplicate IDs used by labels and ARIA. Generate stable instance IDs, update references together, and test actual names beyond omitted review results.
Iframes missing a title attribute
Fix iframe titles that are missing or blank. Describe embedded purpose, compare source and rendered naming checks, and test the framed experience separately.
Image Buttons Must Have Alternative Text: Name the Action
Fix image-submit alternatives with useful action text. Preserve submission behaviour, inspect computed names, and do not treat active controls as decoration.
Images Missing Alt Text: Provide Context-Appropriate Alternatives
Fix images missing alt text. Separate decorative, informative and functional images, preserve link names, and verify meaning beyond the scanner attribute count.
Inline Text Spacing Must Be Adjustable: Support User Preferences
Support text-spacing changes without lost content. Review restrictive inline styles, test all four WCAG settings, and distinguish CSS cascade origins.
Input Buttons Must Have Discernible Text: Identify the Action
Name input button, submit and reset controls. Use clear captions, preserve submitted values, inspect ARIA overrides, and test actions and localisation.
Interactive Controls Must Not Be Nested: Separate Actions
Fix nested interactive controls. Separate navigation and actions, preserve keyboard access and focus, and inspect rendered semantics instead of masking clicks.
Lang Attribute Must Have a Valid Value: Identify the Actual Language
Fix language declarations in page content. Use appropriate BCP 47 tags, verify the real language, and distinguish checker vocabulary from full validation.
LI Elements Must Be Contained in a UL or OL: Fix the Parent
Fix orphaned list items with a native list parent. Remove accidental wrappers, preserve valid widget semantics, and test both structure and interaction.
Links Must Be Distinguishable Without Relying on Color
Make inline links recognisable beyond hue alone. Prefer robust underlines, check text and background contrast separately, and test focus and interaction states.
Links Must Have Discernible Text: Expose a Useful Destination
Fix unnamed links with useful accessible names. Review icon and image links, preserve native navigation, and separate naming from contextual link purpose.
Marquee Elements Are Deprecated: Replace Uncontrolled Scrolling
Replace obsolete marquee elements with readable content. If motion remains, provide usable controls, respect reduced motion, and review actual behaviour.
Data Cells in Larger Tables Must Have Associated Headers
Associate data cells with useful headers. Use th, scope or valid explicit references, and review small tables and the disabled rule coverage separately.
Object Elements Must Have Alternative Text: Name the Embed
Fix unnamed object embeds. Label the resource, keep a usable outside link or equivalent, preserve interaction, and test the embedded document itself.
Page Must Have Means to Bypass Repeated Blocks: Provide a Real Route
Provide a useful way past repeated navigation. Combine skip links, clear structure and tested keyboard behaviour without relying on the omitted bypass rule.
Required ARIA Attributes Must Be Provided: Expose Real State
Supply required ARIA properties for the actual role. Preserve native states, review defaults and exceptions, and test truthful updates beyond presence.
Role Img Elements Must Have Alternative Text: Name the Graphic
Fix unnamed image-role elements. Describe the graphic through a suitable accessible name, handle decoration separately, and preserve meaningful interaction.
Scrollable Region Must Have Keyboard Access: Reach the Hidden Content
Make overflow content reachable by keyboard. Review focusable scrollers and descendants, preserve visible focus, and test scrolling and exit.
Select Element Must Have an Accessible Name: Label the Question
Fix an unnamed select with a persistent label. Separate the field name from its selected option, verify naming references, and test keyboard selection.
Server-Side Image Maps Must Not Be Used: Provide Usable Choices
Replace pointer-dependent ismap navigation with equivalent keyboard choices. Review existing alternatives, label client-side areas, and test every destination.
Skip to Content Link Missing: Add and Test a Useful Bypass
Add a useful skip-to-content link. Verify its target, focus visibility and keyboard continuation, and understand the source check language and ordering limits.
Styled P Elements Must Not Be Used as Headings: Expose Structure
Review paragraphs styled as headings. Use meaningful heading semantics, preserve visual design, and separate actual emphasis from the disabled heuristic.
Summary Elements Must Have Discernible Text: Name the Disclosure
Name details-summary disclosures with useful text. Preserve native interaction, align visible and accessible wording, and test open and closed states.
SVG Elements with an Image Role Must Have Alternative Text
Fix unnamed SVG graphics with image roles. Add a correct title or ARIA name, keep repeated IDs unique, and preserve meaningful control and chart information.
Table Cell Headers Attributes Must Refer to TH Elements in the Same Table
Repair table headers references. Point to real headers in the same table, keep IDs unique, and preserve correct associations through dynamic updates.
Table Headers in a Data Table Must Refer to Data Cells
Review table headers unrelated to data. Preserve meaningful groups, empty states and relationships, and assess review cases omitted by the report.
UL and OL Must Only Directly Contain Valid List Children
Fix invalid ul and ol children. Keep li items directly inside the list, preserve script and template elements, and verify semantics after layout changes.
Zoom Disabled by User-Scalable=No: Restore Accessible Resizing
Fix viewport settings that restrict zoom. Remove unnecessary scale caps, test text enlargement and layout, and distinguish the scan from full WCAG compliance.
Video Elements Must Have Captions: Verify Equivalent Timed Text
Provide accurate timed captions for relevant prerecorded video. Test playback and accessibility, not merely a track tag or an absent review-only finding.
Video or Audio Must Not Play Automatically: Control Sound
Review automatic audio and video playback. Prevent unwanted sound, provide accessible independent controls, and test motion and media alternatives separately.