MDS Assistant is an experiment.
Hi, I'm the MDS Assistant and can help you with information from our guidelines and components.

I do not provide code and development guidance. For coding assistance, please check out our experimental MCP server.

Accessibility

Improving the user experience for everyone.

The following checklist is based on the work of The A11Y Project and uses the WCAG 2.2 standard as a cross-reference. For each topic, there is a testable success criterion taken from the WCAG 2.2 standard.

The checklist should be seen as the first step in making your product accessible. The checklist will improve the accessibility of your product, but it will not guarantee a fully accessible experience and does not cover all the WCAG 2.2 Level A and Level AA success criteria. To become fully Level AA compliant, then please follow the Accessibility Guidelines.

Global code

Global code is code that affects the whole application, website or webapp.

Done
Use a lang attribute on the HTML element.

This helps assistive technology such as screen readers to pronounce content correctly.

(Level A)

Done
Provide a unique title for each page or view.

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.

(Level A)

Done
Ensure that viewport zoom is not disabled.

Some people need to increase the size of the 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.going to start navigating.

(Level AA)

Done
Use landmark elements to indicate important content regions.

Landmark regions help communicate the layout and important areas of a page or view – and can allow quick access to these regions. For example, use the nav element to wrap a site's navigation, and the main element to contain the primary content of a page.

(Level A)

Done
Ensure a linear content flow.

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 except for very specific use cases.

(Level A)

Done
Avoid using the autofocus attribute.

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.

(Level A)

Done
Remove session timeouts.

If you cannot, let the person using your site know the timeout exists ahead of time, and provide significant notice before the timer runs out.

(Level A)

Done
Remove title attribute tooltips.

The title attribute has numerous issues, and should not be used if the information provided is important for all people to access. An acceptable use for the title attribute would be labelling an iframe element to indicate what content it contains.

(Level A)

Keyboard navigation

It is essential that your interface and content can be operated and navigated using a keyboard.

Done
Make sure there is a visible focus style for interactive elements that are navigated to via keyboard input.

Can a person navigating with a keyboard, switch, voice control, or screen reader see where they currently are on the page?

(Level AA)

Done
Check to see that keyboard focus order matches the visual layout.

Can a person navigate the page using a keyboard or a screen reader in a predictable way?

(Level A)

Done
Remove invisible focusable elements.

Remove the ability to focus on elements that are not presently meant to be discoverable. This includes things like inactive dropdown menus, off-screen navigations, or modals.

(Level A)

Appearance

The how the UI looks like and how it is presented in different circumstances e.g., when changing the text size or specialized browsing modes.

Done
Check your content in specialized browsing modes.

Activate modes such as Windows High Contrast or Inverted Colours. Is your content still legible? Are your icons, borders, links, form fields, and other content still present? Can you distinguish foreground content from the background?

(Level A)

Done
Increase text size to 200%.

Is the content still readable? Does increasing the text size cause content to overlap?

(Level AA)

Done
Double-check that good proximity between content is maintained.

Use the straw test to ensure people who depend on screen zoom software can still easily discover all content.

(Level A)

Done
Make sure colour isn't the only way information is conveyed.

Can you still see where links are among body content if everything is grayscale?

(Level A)

Done
Use a simple, straightforward, and consistent layout.

A complicated layout can be confusing to understand and use.

(Level AA)

Colour contrast

How distinguishable colours are when they are placed on top or next to each other.

Done
Check the contrast for all normal-sized text.

Level AA compliance requires a contrast ratio of 4.5:1.

(Level AA)

Done
Check the contrast for all large-sized text.

Level AA compliance requires a contrast ratio of 3:1.

(Level AA)

Done
Check the contrast for all icons.

Level AA compliance requires a contrast ratio of 3.0:1.

(Level AA)

Done
Check the contrast of borders for input elements (text input, radio buttons, checkboxes, etc.).

Level AA compliance requires a contrast ratio of 3.0:1.

(Level AA)

Done
Check text that overlaps images or video.

Is the text still legible?

(Level AA)

Done
Check custom ::selection colours.

Is the colour contrast you set in your ::selection CSS declaration sufficient? Otherwise, someone may not be able to read it if they highlight it.

(Level AA)

Headings

Headings help structure content into a logical typographic hierarchy that breaks up the content in meaningful way. A strict typographic hierarchy helps especially people that uses assistive technologies to understand the meaning of a page.

Done
Use heading elements to introduce content.

Heading elements construct a document outline, and should not be used for purely visual design.

(Level AA)

Done
Use only one h1 element per page or view.

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).

(Level AA)

Done
Heading elements should be written in a logical sequence.

The order of heading elements should descend, based on the 'depth' of the content. For example, a h4 element should not appear on a page before the first h3 element declaration. A tool such as headingsMap can help you evaluate this.

(Level AA)

Done
Don't skip heading levels.

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.

(Level AA)

Controls

Controls are interactive UI elements that allow users to navigate through the application or trigger actions.

Done
Use the a element for links.

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.

(Level A)

Done
Ensure that links are recognizable as links.

Colour 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.

(Level A)

Done
Ensure that controls have :focus states.

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.

(Level AA)

Done
Use the button element for buttons.

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.

(Level AA)

Done
Provide a skip link and make sure that it is visible when focused.

A skip link can be used to provide quick access to the main content of a page or view. This allows a person to easily bypass globally repeated content such as a website's primary navigation, or persistent search widget.

(Level A)

Done
Make sure that buttons, links, and labels are unique and descriptive.

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.

(Level A)

Lists

A list is a set of related items that are grouped together.

Done
Use list elements (ol, ul, and dl elements) for list content.

This may include sections of related content, items visually displayed in a grid-like layout, or sibling a elements.

(Level A)

Tables

A tables is a structured set of data that are mostly arranged in rows and columns.

Done
Use the table element to describe tabular data.

Do you need to display data in rows and columns? Use the table element.

(Level A)

Done
Use the th element for table headers (with appropriate scope attributes).

Depending on how complex your table is, you may also consider using scope='col' for column headers, and scope='row' for row headers. Many different kinds of assistive technology still use the scope attribute to help them understand and describe the structure of a table.

(Level A)

Images

Images are widely used to enhance the communication and to enrich the user experience.

Done
Make sure that all img elements have an alt attribute.

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.

(Level A)

Done
Make sure that decorative images use null alt (empty) attribute values.

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 images but tend to be less relevant for modern websites and web apps.

(Level A)

Done
Provide a text alternative for complex images such as charts, graphs, and maps.

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.

(Level A)

Done
For images containing text, make sure the alt description includes the image's text.

For example, the FedEx logo should have an alt value of 'FedEx.'

(Level A)

Forms

Forms allow users to enter information into the application or site for processing, storage and manipulation e.g., creating an account or placing an order.

Done
All inputs in a form are associated with a corresponding label element.

Use a for/id pairing to guarantee the highest level of browser/assistive technology support.

(Level A)

Done
Use fieldset and legend elements where appropriate.

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.

(Level A)

Done
Inputs use autocomplete where appropriate.

Providing a mechanism to help people more quickly, easily, and accurately fill in form fields that ask for common information (for example, name, address, phone number).

(Level AA)

Done
Make sure that form input errors are displayed in list above the form after submission.

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.

(Level A)

Done
Associate input error messaging with the input it corresponds to.

Techniques such as using aria-describedby allow people who use assistive technology to more easily understand the difference between the input and the error message associated with it.

(Level A)

Done
Make sure that error, warning, and success states are not visually communicated by just colour.

People who are colour blind, who have other low vision conditions, or different cultural understandings for colour may not see the state change or understand what kind of feedback the state represents if colour is the only indicator.

(Level A)

Media

Media is pre-recorded or live audio or video content.

Done
Make sure that media does not auto-play.

Unexpected video and audio can be distracting and disruptive, especially for certain kinds of cognitive disability such as ADHD. Certain kinds of auto-playing video and animation can be a trigger for vestibular and seizure disorders.

(Level A)

Done
Ensure that media controls use appropriate markup.

Examples include making sure an audio mute button has a pressed toggle state when active, or that a volume slider uses <input type='range'>.

(Level A)

Done
Check to see that all media can be paused.

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.

(Level A)

Animation

Applying motion to UI elements, controls or content. The animation can be activated by its own or triggered though a user interaction.

Done
Ensure animations are subtle and do not flash too much.

Certain kinds of strobing or flashing animations will trigger seizures. Others may be distracting and disruptive, especially for certain kinds of cognitive disability such as ADHD.

(Level A)

Done
Provide a mechanism to pause background video.

Background video can be distracting, especially if content is placed over it.

(Level A)

Mobile

A few things that can make mobile experiences more accessible.

Done
Check that the site can be rotated to any orientation.

Does the site only allow portrait orientation?

(Level AA)

Done
Remove horizontal scrolling.

Requiring someone to scroll horizontally can be difficult for some, irritating for all.

(Level AA)

Next steps

If you have met all the success criteria in the Accessibility Checklist then your product has become much more accessible and you are well on your way to become Level AA compliant. To become fully Level AA compliant, then follow the Accessibility Guidelines.