WebAIM - Web Accessibility In Mind

Web Accessibility Evaluation Guide

WebAIM Accessibility Testing Services

The experts at WebAIM can audit your web site and provide a detailed report to help you remediate accessibility and WCAG compliance issues.

This evaluation guide outlines important accessibility checks, organized by content type. While it is not an exhaustive guide to testing all WCAG 2 requirements, it includes checks for most common accessibility issues. WAVE icons that will assist you in your evaluation are highlighted.

Evaluation Tools

WAVE

  • Install the WAVE Chrome, Firefox, or Edge browser extension. An online version of WAVE is available at wave.webaim.org, but the WAVE extension is recommended for comprehensive testing, especially of dynamic or non-public web pages.
  • Use the Details panel to review all items. Click on an icon in the panel to highlight it in the page.
    • Error icons indicate items that should be fixed. Other icons prompt further evaluation.
    • Use the checkboxes in the details panel to hide groups of icons.
  • Click an icon in the page or use the Reference panel to get more information.
  • Turn off Styles to simplify the page view and to check the reading order for screen readers.
  • Click on the Code button at the bottom of the page to reveal the relevant code.

Tip

Structural element: Inline frame – WAVE identifies the presence of an inline frame (<iframe>), but it does not analyze the iframe's contents. You can often open the iframe content in its own tab and then test it with WAVE. In Firefox, right-click on the iframe and choose This Frame > Open Frame in New Tab. In Chrome, Use Developer Tools (DevTools) to find the <iframe src>.

Other Tools and Resources

Evaluation Techniques

Tip

WAVE and other automated tools can only identify some accessibility issues. You should also test the page with a keyboard, screen reader, and/or browser developer tools.

Images and alternative text

  • Error: Missing alternative text, Error: Linked image missing alternative text, Error: Spacer image missing alternative text, Error: Image button missing alternative text, Error: Image map area missing alternative text, Error: Image map missing alternative text – Identify images that are missing alternative text.
  • Feature: Alternative text, Feature: Linked image with alternative text, Feature: Image button with alternative text, Feature: Image map area with alternative text, Feature: Image map with alternative text – Confirm that an image's alternative text (in green next to the icon) presents its content and/or function.
    • Alert: Suspicious alternative text - The alternative text is likely insufficient or contains extraneous information.
    • Alert: Redundant alternative text - A nearby image has the same alternative text.
    • Alert: Long alternative text – Alternative text should be succinct and typically should not repeat information in nearby text or images.
    • ARIA label – If aria-label is used to add alternative text to images, ensure it is equivalent and that it is on an element that supports ARIA labels (e.g., <img> or <span role="img">).
    • Alert: Image with title – If an image has a title attribute but no alt value, be sure the title value is equivalent and consider replacing it with an alt attribute.
  • If an interface component (link, button, etc.) presents text (or images of text), ensure that its accessible name (label, alternative text, aria-label, etc.) includes the visible text.
  • If the image is too complex for a succinct alt attribute value, confirm that there is an equivalent text alternative (e.g., a table) in addition to the alt attribute, either inline or via a link.
    • Alert: Long description, Error: Invalid longdesc – The longdesc attribute should not be used.
  • Images that do not have associated WAVE icons are likely added with CSS. If they present content, use the Code panel, test in a screen reader, or inspect in browser developer tools to ensure that alternative text is present.
    • Error: Empty button, Error: Empty link – Empty links and buttons may indicate CSS images with no alt text
  • Feature: Null or empty alternative text, Feature: Null or empty alternative text on spacer – Search for images that are decorative or that present information that is already in nearby text. Make sure they have alt="" or are defined with CSS.
  • Feature: Figure - If a <figure> is present, make sure it is being implemented correctly.
  • Look for images of text where the same visual presentation can be made using real text.

Regions and headings

Use the Structure panel in WAVE to examine regions/landmarks and headings.

  • Alert: No page regions, Structural element: Header, Structural element: Navigation, Structural element: Search, Structural element: Main content, Structural element: Aside, Structural element: Footer – Review regions or equivalent ARIA landmarks.
    • The page header, main content, footer, navigation areas, and search forms (if present) are identified as regions AND are correctly nested.
    • Structural element: Generic region – Other important regions are identified.
    • ARIA label - If a region type appears more than once (e.g., more than one <nav>), it can be distinctly labeled using aria-label or aria-labelledby.
  • Structural element: Heading level 1, Structural element: Heading level 2, Structural element: Heading level 3, Structural element: Heading level 4, Structural element: Heading level 5, Structural element: Heading level 6 – Confirm that headings describe the content that follows. If not, they should not be headings.
    • Alert: Missing first level heading, Structural element: Heading level 1 – Confirm that there is an <h1> that describes the page content. It should usually be within the <main> region.
    • Alert: Skipped heading level – If headings skip levels (e.g., <h2> to <h4> with no <h3> in between), identify the correct heading structure.
    • Error: Empty heading – Headings and regions must not be empty.
  • Alert: Possible heading – Search for text that functions as a heading but needs to be tagged <h1> through <h6>.
  • Alert: No heading structure – Search for sections that should have headings but do not.

Forms

  • Error: Missing form label, Feature: Form label - Ensure form controls have descriptive, correctly-associated labels and that <label> is used when possible.
    • If a form control gains focus or is activated when its label text is clicked with a mouse, then it is likely that the text is a correctly-associated <label>.
  • Alert: Unlabeled form control with title, ARIA label - If a label is not visible, check for a hidden label, aria-label, or title attribute.
  • Alert: Select missing label – If a <select> menu does not have a <label>, confirm that the default option presents the purpose of the menu.
  • Error: Empty form label, Error: Multiple form labels, Error: Broken ARIA reference, Alert: Orphaned form label - Use the Code panel to explore broken labels.
  • Alert: Missing fieldset, Alert: Fieldset missing legend, Feature: Fieldset - Look for <fieldset>/<legend> where a higher-level description for a group of form fields is needed.
  • Ensure that required fields are visually apparent and are presented to a screen reader through at least one of the following: label/accessible name, aria-required, or the required attribute.
  • Trigger form errors and then test error feedback using the WAVE browser extension.
  • ARIA description – Ensure that descriptions and inline error messages are associated to the correct form control using aria-describedby.
  • Ensure that redundant entry is avoided. Generally, information that a user must re-enter to complete a single-session process must be auto-populated or available for the user to select.
  • Ensure that no cognitive function test is required (such as password or a puzzle) for authentication unless it can be bypassed, or completed with assistance by some other mechanism, or uses object recognition or identification of user-provided non-text content.