Deque - Web Accessibility Checklist - Based On WCAG 2.1 AA
Deque - Web Accessibility Checklist - Based On WCAG 2.1 AA
Deque Web Accessibility Checklist 2020.09.17 © Copyright 2020 Deque Systems Page 1
Background
Deque recommends using a combination of software tools and informed human analysis – using a checklist such as the
one in this document – to test web accessibility.
Accessibility Training
• Find detailed online accessibility courses and reference materials on Deque University.
• Experienced Deque web accessibility instructors are also available
axe Auditor is a manual accessibility testing solution for Accessibility Testing Specialists that allows you to optimize your
accessibility testing, tracking, and reporting with step-by-step guidance and report building. Based on The Deque Way of
accessibility testing, your QA team can run both manual and automated tests in the same interface, and without needing
to be accessibility experts themselves, they can create precise, consistent accessibility issue reports for developers to
resolve, then rerun tests on new builds and across multiple browsers to verify requirements have been met.
axe Monitor is an enterprise-level scanning and reporting tool that can evaluate the web accessibility of entire web sites,
including password-protected areas. axe Monitor can implement use case scripts, allow custom reporting options based
on WCAG or Section 508 guidelines, and allow scheduled monitoring of accessibility on projects of any scale or
complexity. It is designed to work in conjunction with the axe DevTools Browser Extension for Chrome and Firefox.
axe, the Accessibility Engine, is Deque's free, open-source JavaScript accessibility rules library and browser extension. It
was developed to be fast and to return zero false errors or duplicate results, and it is available as a GitHub repository,
browser plugin, or framework integration.
Deque Web Accessibility Checklist 2020.09.17 © Copyright 2020 Deque Systems Page 2
Section 1: Structure and Semantics
Page Title
Topic Technique WCAG AA
Markup Correct markup: The page <title> MUST be present and MUST contain text. Required
WCAG 2.4.2
Meaningful Accurate and informative: The page <title> MUST be accurate and informative. Required
Text WCAG 2.4.2
Dynamic pages: The page <title> of dynamic pages (e.g. in single page apps) Required
MUST be updated when the purpose of the page changes. WCAG 2.4.2
User Actions: If a page is the result of a user action or scripted change of context, Best practice
the text of the <title> SHOULD describe the result or change of context to the
user.
Concise: The <title> SHOULD be concise. Best practice
Unique info first: Unique information SHOULD come first in the <title>. Best practice
Match heading: The page <title> SHOULD match (or be very similar to) the top Best practice
heading (ideally marked as <h1>) in the main content.
Deque Web Accessibility Checklist 2020.09.17 © Copyright 2020 Deque Systems Page 3
Page Language
Topic Technique WCAG AA
Page Page Language: The primary language of the page MUST be identified accurately, using a Required
Language standard language code, on the <html> element (e.g. <html lang="en"> or <html WCAG 3.1.1
lang="fr">).
Language Language of Parts: Inline language changes MUST be identified with a valid lang Required
of Parts attribute. WCAG 3.1.2
Language Two-character language code: The language code SHOULD be designated with a Best practice
Code standard two-character ISO 639-1 code (e.g. lang="en") to achieve maximum support
across screen readers and browsers, though other codes (e.g. lang="en-us") are
technically allowable.
Deque Web Accessibility Checklist 2020.09.17 © Copyright 2020 Deque Systems Page 4
Headings
Topic Technique WCAG AA
Headings to Bypass Bypass blocks: Screen readers allow users to navigate by headings, so Required
Blocks of Content headings are an effective way to bypass blocks of content, as required by WCAG 2.4.1
WCAG 2.4.1. Note: Headings are not absolutely required by WCAG to pass
2.4.1, but are highly recommended, along with landmarks and skip links.
Meaningful Text Accurate, informative section labels: Headings MUST be accurate and Required
informative, as labels for the sections of text they describe. WCAG 1.3.1
WCAG 2.4.6
Brevity: Heading text SHOULD be concise and relatively brief. Best practice
Heading Markup Use real headings: Text that acts as a heading visually or structurally SHOULD Best practice
be designated as a true heading (<h1>, <h2>, etc.) in the markup.
Heading Markup for Headings Only: Text that does not act as a heading Best practice
visually or structurally SHOULD NOT be marked as a heading.
Outline/Hierarchy of Content outline: Headings SHOULD convey a clear and accurate structural Best practice
Content outline of the sections of content of a web page.
Consecutive levels: Headings SHOULD NOT skip hierarchical levels. Best practice
First heading in the main content: The beginning of the main content SHOULD Best practice
start with <h1>.
One <h1>: Most web pages SHOULD have only one <h1>. Best practice
Deque Web Accessibility Checklist 2020.09.17 © Copyright 2020 Deque Systems Page 5
Landmarks
Topic Technique WCAG AA
Landmarks to Bypass blocks: Screen readers allow users to navigate by landmarks, so landmarks Required
Bypass Blocks of are an effective way to bypass blocks of content, as required by WCAG 2.4.1. WCAG 2.4.1
Content Other methods may be used as well as — or instead of — landmarks, such as skip
links, headings, expand/collapse regions, etc.
Landmark Page layout groupings: Landmarks SHOULD be used to accurately designate pre- Best practice
Structural defined parts of the layout (e.g. the header, navigation, main content, and
Organization footer).
Content within landmarks: All text SHOULD be contained within a landmark Best practice
region.
Landmark names: Multiple instances of the same type of landmark SHOULD be Best practice
distinguishable by different discernible names (using aria-label or aria-
labelledby).
Only one instance of some landmarks: A page SHOULD NOT contain more than Best practice
one instance of each of the following landmarks: header/banner, main, and
footer/contentinfo.
Limit the number of landmarks: The total number of landmarks SHOULD be Best practice
minimized to the extent appropriate for the content.
Note: Having a large number of landmarks defeats the main purpose of
landmarks, which is to make it easy to navigate quickly to sections of the layout.
Markup Markup: Landmarks MAY be designated with either HTML tags or their equivalent Best practice
ARIA roles (e.g. <header> or role="banner", <nav> or
role="navigation", <main> or role="main", <footer> or
role="contentinfo", etc.).
Deque Web Accessibility Checklist 2020.09.17 © Copyright 2020 Deque Systems Page 6
Lists
Topic Technique WCAG AA
Markup List markup: Lists MUST be constructed using the appropriate semantic markup (i.e. <ul> or Required
<ol> with <li> child elements, or <dl> with <dt> and <dd> child elements). WCAG 1.3.1
Deque Web Accessibility Checklist 2020.09.17 © Copyright 2020 Deque Systems Page 7
Tables
Topic Technique WCAG AA
Table Header tag: Table headers MUST be designated with <th>. Required
Headers WCAG 1.3.1
Meaningful header: Data table header text MUST accurately describe the category of the Required
corresponding data cells. WCAG 1.3.1
Header and data cell associations: Table data cells MUST be associated with their Required
corresponding header cells. WCAG 1.3.1
Note: Use of scope (<th scope="col"> and <th scope="row">) is highly
recommended, though not always necessary (i.e. if all cells in the first row are marked as
<th> without scope, most modern screen readers will infer that the scope is the column
below each header cell).
Group header associations: Table data group headers (if any) MUST be associated with their Required
corresponding data cell groups (e.g. via scope="rowgroup" or scope="colgroup"). WCAG 1.3.1
Complex header associations: Header/data associations that cannot be designated with Required
<th> and scope MUST be designated with the headers and id attributes. WCAG 1.3.1
Nested or split tables: Data table headers and data associations MUST NOT be referenced Required
across nested, merged, or separate tables. WCAG 1.3.1
Tabular Tables: Tabular data SHOULD be represented in a <table>. Best practice
Data Note: Even if the data are not represented in a table, WCAG 1.3.1 requires the data to be
associated with their labels.
Caption Caption: Data tables SHOULD have a programmatically-associated <caption> or name Best practice
(e.g. via aria-label or aria-labelledby).
Note: In most circumstances, <caption> is preferred, because it is the native method of
giving a name to a table, and the <caption> is visible and available to all users by default.
Meaningful caption: The name or <caption> of a data table SHOULD describe the identity Best practice
or purpose of the table accurately, meaningfully, and succinctly.
Unique caption: The name or <caption> of each data table SHOULD be unique within the Best practice
context of other tables on the same page.
Layout Avoid layout tables: Tables SHOULD NOT be used for the purpose of purely visual (non-data) Best practice
Tables layout.
Avoid headers in layout tables: Layout tables MUST NOT contain headers. Best practice
Deque Web Accessibility Checklist 2020.09.17 © Copyright 2020 Deque Systems Page 8
Iframes
Topic Technique WCAG AA
iframe title attribute Meaningful iframe title attribute: The iframe title attribute (on the parent Required
page) MUST be accurate and descriptive. WCAG 2.4.1
Unique title attributes: Every iframe SHOULD have a unique title (in the context Best practice
of the page).
Hidden or empty iframes: Hidden frames or frames that do not convey content Best practice
to users SHOULD be hidden from assistive technologies using aria-
hidden="true".
Page <title> of Page title of embedded page: The source page of an iframe (the page Required
Embedded Page embedded in the iframe) MUST have a valid, meaningful <title>. WCAG 2.4.2
Deque Web Accessibility Checklist 2020.09.17 © Copyright 2020 Deque Systems Page 9
Markup Validity
Topic Technique WCAG AA
Unique Identifiers Unique IDs: IDs MUST be unique within a web page. Required
WCAG 4.1.1
Unique Names: The "accessible names" of elements, when provided, of block level Best practice
elements (e.g. landmarks, tables, iframes, etc.) SHOULD be unique within a web
page.
Note: The accessible name is determined by attributes or elements such as aria-
label, aria-labelledby, alt, <caption>, etc. Refer to the Accessible Name
and Description Computation for details.
One Attribute Instance: Elements MUST NOT contain more than one instance of Required
the same attribute. WCAG 4.1.1
Well Formed Closing Tags: Elements must not be missing closing tags. Required
DIV or P element must not be nested within a LABEL element. WCAG 4.1.1
Element must not contain duplicate attributes.
Nesting and Parent-Child Relationships: Markup MUST adhere to required parent-child Required
Relationships relationships of elements and attributes. WCAG 4.1.1
ARIA relationships: ARIA relationships (e.g. parent-child, aria-owns, etc.) SHOULD Required
adhere to WAI-ARIA Authoring Practices WCAG 4.1.1
Deprecated Deprecated Markup should not be used. Best practice
Markup
Links
Topic Technique WCAG AA
Semantic Link markup: Links MUST be semantically designated as such. Required
Markup and Note: Ideally this means using an <a> element with a valid href value. In rare WCAG 4.1.2
Purpose problematic cases, setting role="link" (and adding all other aspects of
link functionality) may be acceptable.
Links versus buttons: Links SHOULD be used only for actions that take the Best practice
user to other locations and SHOULD NOT be used for button-like
functionality.
Note 1: "Other locations" means other web pages, or to other locations in
the same web page. Typically, the URL will change after activating a link.
Note 2: "Button-like functionality" means scripted features, including
submitting forms.
Link Text Discernible text: A link MUST have programmatically discernible text, as Required
determined by the accessible name calculation algorithm. WCAG 4.1.2
Distinguishable link purpose: The purpose of each link MUST be Required
understandable and distinguishable from other links on the same page, WCAG 2.4.4
either from the link text alone (ideally), or from the immediate surrounding
context of the link.
Avoid "link" (or similar) in the link text: The link text SHOULD NOT state its Best practice
semantic role (e.g. don't say "link to..."), because screen readers already
state the role before reading the link text.
Consistent link text across pages: Links to the same destinations MUST be Required
consistently identified with the same (or very similar) link text across all WCAG 3.2.4
pages of the site.
Links opening in new tab or window: A link that opens in a new window or Best practice
tab SHOULD indicate that it opens in a new window or tab.
Links to non-HTML files: A link to a file or destination in a non-HTML format Best practice
(e.g. MS Word, PDF, plain text, etc.) SHOULD indicate the type of file or
destination.
Links to external sites: A link to an external site MAY indicate that it leads to Best practice
an external site.
Keyboard Keyboard-focusable: Links MUST be keyboard-focusable. Required
Accessibility WCAG 2.1.1
Keyboard activation: Links MUST activate with the enter/return key. Required
WCAG 2.1.1
Focus Order Focus order: The navigation order of focusable elements (links, form Required
elements, etc.) MUST be logical and intuitive. WCAG 2.4.3
Images
Topic Technique WCAG AA
Informative Images Alternative text: The image MUST have alternative text. Refer to the Required
and Active Images (e.g. techniques for various image types: WCAG 1.1.1
links, buttons, or • images using <img>
controls) • active images
• form input images
• SVG using <img>
• SVG using <svg>
• HTML5 canvas
• icon fonts
Meaningful description: Alternative text MUST be meaningful (accurately Required
conveying the purpose of the image, and the author's intent in a way that is WCAG 1.1.1
useful to those who cannot see the image).
Note 1: Image links SHOULD describe the link destination.
Note 2: Button/control links SHOULD describe the purpose and/or resulting
action of the button or control.
Concise: The length of the alternative text for informative images SHOULD be Best practice
concise (no more than about 250 characters).
Avoid restating that the element is an image: Alternative text SHOULD NOT Best practice
include words that identify the element as a graphic or image (e.g. avoid
phrases like "graphic of," or "image of," etc.), because screen readers already
state the role (e.g. by saying "graphic" then reading the alternative text).
Unessential images Unessential Images: Images that do not convey content, are decorative, or Best practice
(Purely Decorative or are redundant to content that is already conveyed in text SHOULD be given
Redundant, and not null (empty) alternative text (alt=""), ARIA role="presentation", or
Active) implemented as CSS backgrounds.
Complex Images Complex Images: Complex images MUST be briefly described using alt text Required
AND MUST have a more complete extended description. WCAG 1.1.1
Note: It is not "wrong" to provide descriptive alternative text in these
instances, but it is highly discouraged if the image is truly unessential.
Background images Informative background images: If a background image conveys information, Required
alternative text MUST be provided (e.g. via regular visible text, by adding WCAG 1.1.1
role="image" and aria-label, or by other means).
Active background images: If a background image is the only "content" in an Required
active element (e.g. a link, button, or control), the active element MUST have WCAG 1.1.1
an accessible name (e.g. via aria-label or similar).
Color contrast of small text: Small text (under 18 point regular font or 14 Required
point bold font) MUST have a contrast ratio of at least 4.5 to 1 with the WCAG 1.4.3
background.