Skip to content

Test your website now

Free, no card. We read only public pages.

Run free audit →

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.

Read the related guide

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.