Content
Content is the most important part of your site.
Make sure that button
, a
, and label
element content is unique and descriptive.
1.3.1 Info and Relationships Opens in modal dialog
Terms like “click here” and “read more” do not provide any context. Some people navigate using a list of all buttons or links on a page or view. When using this mode, the terms indicate what will happen if navigated to or activated.
Global code
Code which affects your entire website or web app.
Provide a unique title
for each page or view.
2.4.2 Page Titled Opens in modal dialog
The title
element, contained in the document's head
element, is often the first piece of information announced by assistive technology. This helps tell people what page or view they are going to start navigating.
Ensure that viewport zoom is not disabled.
1.4.4 Resize text Opens in modal dialog
Some people need to increase the size of text to a point where they can read it. Do not stop them from doing this, even for web apps with a native app-like experience. Even native apps should respect Operating System settings for resizing text.
Ensure a linear content flow.
2.4.3 Focus Order Opens in modal dialog
Remove tabindex
attribute values that aren't either 0
or -1
. Elements that are inherently focusable, such as links or button
elements, do not require a tabindex
. Elements that are not inherently focusable should not have a tabindex
applied to them outside of very specific use cases.
Avoid using the autofocus
attribute.
2.4.3 Focus Order Opens in modal dialog
People who are blind or who have low vision may be disoriented when focus is moved without their permission. Additionally, autofocus
can be problematic for people with motor control disabilities, as it may create extra work for them to navigate out from the autofocused area and to other locations on the page/view.
Allow extending session timeouts.
2.2.1 Timing Adjustable Opens in modal dialog
If you cannot remove session timeouts altogether, then let the person using your site easily turn off, adjust, or extend their session well before it ends.
Keyboard
It is important that your interface and content can be operated, and navigated by use of a keyboard. Some people cannot use a mouse, or may be using other assistive technologies that may not allow for hovering or precise clicking.
Remove invisible focusable elements.
2.4.3 Focus Order Opens in modal dialog
Remove the ability to focus on elements that are not presently meant to be discoverable. This includes things like inactive drop down menus, off screen navigation, or modals.
Images
Images are a very common part of most websites. Help make sure they can be enjoyed by all.
Make sure that all img
elements have an alt
attribute.
1.1.1 Non-text Content Opens in modal dialog
alt
attributes (alt text) give a description of an image for people who may not be able to view them. When an alt
attribute isn't present on an image, a screen reader may announce the image's file name and path instead. This fails to communicate the image’s content.
Make sure that decorative images use null alt
(empty) attribute values.
1.1.1 Non-text Content Opens in modal dialog
Null alt
attributes are also sometimes known as empty alt
attributes. They are made by including no information between the opening and closing quotes of an alt
attribute. Decorative images do not communicate information that is required to understand the website's overall meaning. Historically they were used for flourishes and spacer gif Opens in new window images, but tend to be less relevant for modern websites and web apps.
Provide a text alternative for complex images such as charts, graphs, and maps.
1.1.1 Non-text Content Opens in modal dialog
Is there a plain text which lists points on the map or sections of a flowchart? Describe all visible information. This includes graph axes, data points and labels, and the overall point the graphic is communicating.
Headings
Heading elements (h1, h2, h3, etc.) help break up the content of the page into related “chunks” of information. They are incredibly important for helping people who use assistive technology to understand the meaning of a page or view.
Use only one h1
element per page or view.
2.4.6 Headings or Labels Opens in modal dialog
The h1
element should be used to communicate the high-level purpose of the page or view. Do not use the h1
element for a heading that does not change between pages or views (for example, the site's name).
Don't skip heading levels.
2.4.6 Headings or Labels Opens in modal dialog
For example, don't jump from a h2
to a h4
, skipping a h3
element. If heading levels are being skipped for a specific visual treatment, use CSS classes instead.
Lists
Lists elements let people know a collection of items are related and if they are sequential, and how many items are present in the list grouping.
Controls
Controls are interactive elements such as links and buttons that let a person navigate to a destination or perform an action.
Use the a
element for links (goes somewhere).
1.3.1 Info and Relationships Opens in modal dialog
Links should always have a href
attribute, even when used in Single Page Applications (SPAs). Without a href
attribute, the link will not be properly exposed to assistive technology. An example of this would be a link that uses an onclick
event, in place of a href
attribute.
Ensure that links are recognizable as links.
1.4.1 Use of Color Opens in modal dialog
Color alone is not sufficient to indicate the presence of a link. Underlines are a popular and commonly-understood way to communicate the presence of link content.
Ensure that controls have distinguishable :focus
states.
2.4.7 Focus Visible Opens in modal dialog
Visible focus styles help people determine which interactive element has keyboard focus. This lets them know that they can perform actions like activating a button or navigating to a link's destination.
Use the button
element for buttons (does something).
1.3.1 Info and Relationships Opens in modal dialog
Buttons are used to submit data or perform an on-screen action which does not shift keyboard focus. You can add type="button"
to a button
element to prevent the browser from attempting to submit form information when activated.
Tables
Tables are a structured set of data that help people understand the relationships between different types of information.
Forms allow people to enter information into a site for processing and manipulation. This includes things like sending messages and placing orders.
Use fieldset
and legend
elements where appropriate.
1.3.1 Info and Relationships Opens in modal dialog
Does your form contain multiple sections of related inputs? Use fieldset
to group them, and legend
to provide a label for what this section is for.
Make sure that form input errors are displayed in list above the form after submission.
3.3.1 Error Identification Opens in modal dialog
This provides a way for assistive technology users to quickly have a high-level understanding of what issues are present in the form. This is especially important for larger forms with many inputs. Make sure that each reported error also has a link to the corresponding field with invalid input.
Make sure that error, warning, and success states are not visually communicated by just color.
1.4.1 Use of Color Opens in modal dialog
People who are color blind, who have other low vision conditions, or different cultural understandings for color may not see the state change, or understand what kind of feedback the state represents if color is the only indicator.
Media includes content such as pre-recorded and live audio and video.
Make sure that media does not autoplay.
1.4.2 Audio Control Opens in modal dialog
Unexpected video and audio can be distracting and disruptive, especially for certain kinds of cognitive disability such as ADHD. Certain kinds of autoplaying video and animation can be a trigger for vestibular and seizure disorders.
Check to see that all media can be paused.
2.1.1 Keyboard Opens in modal dialog
Provide a global pause function on any media element. If the device has a keyboard, ensure that pressing the Space key can pause playback. Make sure you also don't interfere with the Space key's ability to scroll the page/view when not focusing on a form control.
Video
Video-specific checks.
Audio
Audio-specific checks.
Confirm that transcripts are available.
1.1.1 Non-text Content Opens in modal dialog
Transcripts allow people who cannot hear to still understand the audio content. It also allows people to digest audio content at a pace that is comfortable to them.
Appearance
How your website app content looks in any given situation.
Make sure instructions are not visual or audio-only.
1.3.3 Sensory Characteristics Opens in modal dialog
Use a combination of characteristics to write cues, particularly the actual names of sections and elements, rather than just descriptions like location (“on the right”) or audio (“after the tone”).
Animation
Content that moves, either on its own, or when triggered by a person activating a control.
Make sure all animation obeys the prefers-reduced-motion
media query.
2.3.3 Animation from Interactions Opens in new window
Remove animations when the “reduce motion” setting is activated. If an animation is necessary to communicate meaning for a concept, slow its duration down.
Mobile and touch
Things to check mobile experiences for.
Ensure that button and link icons can be activated with ease.
2.5.5 Target Size Opens in new window
While not required for AA compliance, best practice suggests the minimum size of an interactive target should be 44 by 44 pixels.
It's good to make sure things like hamburger menus, social icons, gallery viewers, and other touch controls are usable by a wide range of hand and stylus sizes.
Ensure sufficient space between interactive items in order to provide a scroll area.
2.4.1 Bypass Blocks Opens in modal dialog
Ensure there are margins around interactive elements to allow users to scroll past.
Some people who experience motor control issues such as hand tremors Opens in new window may have a very difficult time scrolling past interactive items which feature zero spacing.