Guide to Web Accessibility

Website Overview

Why is Web Accessibility an issue?:

Web Accessibility is a huge issue in this day and age. Roughly 96% of home pages in the top 1 million websites have detected WCAG 2 failures with an average of 56.1 errors per page, according to The WebAIM Million. This is concerning because approximately 20% of Australians have disabilities and approximately 2% have vision impairment, meaning that these issues can impact millions of people in Australia and potentially tens to hundreds of million people worldwide.

What is the purpose of this site?:

The purpose of this site is to provide the necessary information and resources for developers to make their websites more accessible to others. This site will provide the top 6 most common website accessibility errors and links to additional tools and information.

What is WCAG 2?:

WCAG stands for Web Content Accessibility Guidelines. It was developed by the World Wide Web Consortium(W3C) and it’s an international standard for making digital content, websites and applications accessible. WCAG 2.2 is the latest version of WCAG and includes 13 guidelines, organized by 4 categories known by the acronym POUR.

  1. Perceivable - Information and user interface components must be presentable to users in ways they can perceive.

    • This means that users must be able to perceive the information being presented (it can't be invisible to all of their senses)

  2. Operable - User interface components and navigation must be operable.

    • This means that users must be able to operate the interface (the interface cannot require interaction that a user cannot perform)

  3. Understandable - Information and the operation of the user interface must be understandable.

    • This means that users must be able to understand the information as well as the operation of the user interface (the content or operation cannot be beyond their understanding)

  4. Robust - Content must be robust enough that it can be interpreted reliably by a wide variety of user agents, including assistive technologies.

    • This means that users must be able to access the content as technologies advance (as technologies and user agents evolve, the content should remain accessible)

Each guideline has 3 levels of conformance: A, AA and AAA. Level A is the bare minimum for website accessibility and doesn’t accommodate all users with disabilities. Level AA is typically industry standard and a benchmark for some digital accessibility laws. Level AAA is the most strict and the highest standard.

While AAA is the highest standard, it’s not always the goal because it may be impractical or conflicting to the purpose of your website/application. However, it’s widely recommended that your website/app complies with at least level AA and at level AAA when feasible.

Most Common Web Accessibility issues

  1. Low Contrast Text

    Overview

    • Low contrast text is when the colour of the text is too similar to the background, making it harder to read.

    • Low contrast text is the most common Web Accessibility Error. It is found on around 83.9% of home pages and each home page has approximately 34 distinct instances of low contrast text.

    Who does this affect and why?:

    • People with low vision. This is because they struggle to distinguish between letters and the background without a sufficient amount of colour contrast. Around 2% of Australians suffer from severe vision impairment

    • People who are colour blind. Many websites and apps rely on hue differences instead of brightness, making it difficult or even impossible for some colour blind people to read text. Around 2% of Australians have some kind of colour blindness.

    • People who have cognitive impairment or a neurodevelopmental disorder. Difficulty focusing or maintaining attention is exacerbated by poor visual contrast. Around 10% of Australian children have an early neurodevelopmental condition and roughly 1.6% of people in Australia have dementia.

    Examples:

    Error: Low Contrast Text

    This text is very hard to read.
    <span style="color: #d3d3d3; background-color: #ffffff;"> This text is very hard to read. </span>

    Solution: High Contrast Text

    This text is easy to read.
    <span style="color: #000000; background-color: #ffffff;"> This text is easy to read. </span>

    Tools:

    • Use WebAIM's Contrast Checker to compare the colour of the background to the colour of the text. You should aim for a contrast ratio of at least 4.5 for normal text and 3 for large text.

    • To check the colour contrast of an entire page, use WebAIM's WAVE, Google Lighthouse or just press Ctrl+Shift+C and hover over the elements you want to check. These tools can be found under the Links heading.

  2. Missing Alt Text

    Overview

    • Missing Alt Text is when a website’s visual elements(like images, charts, videos and interactive elements like buttons) don’t have an alternative text. The alternative text provides a short, written text description of images and graphics. Check this link to learn more about Alt Text: Harvard Alt Text Guide

    • Missing Alt Text(Alternative Text) is found on roughly 53.1% of the homepages on the top 1 million websites and around 16.2% of all images had missing alt text with 10.8 errors on average for every page.

    Who does this affect and why?:

    • People with vision impairment. This is because they may require screen readers to read the website elements in order to understand the content, and missing alt text means that they won’t be able to understand any images, graphs or interactive elements in the website. Around 2% of Australians suffer from severe vision impairment.

    Examples:

    Error: Missing Alt Text

    <img src="image.jpg" />

    Solution: Descriptive Alt Text

    A grey placeholder image showing the dimensions 100x100
    <img src="image.jpg" alt="A grey placeholder image showing the dimensions 100x100" />
  3. Missing Labels

    Overview

    • Missing Labels is when form fields, check boxes, radio buttons or other interactive elements don’t have a HTML tag to describe their functionality, making it difficult/impossible to use for people with screen readers. Check this link to learn more about Missing Labels: Bureau of Internet Accessibility Missing Input Label

    • Around 51% of the home pages of the top 1 million websites have missing labels. Home pages had around 6.9 form inputs on average, with around a third of those(33.1%) not being properly labelled.

    Who does this affect and why?:

    • Much like missing alt text, missing labels primarily affects people with vision impairment because they require screen readers to understand the content of a website, and missing labels means they won’t understand the functionality of interactive elements like form fields or check boxes on a website. Around 2% of Australians suffer from severe vision impairment.

    Examples:

    Error: Missing Label

    While it looks perfectly fine for most people, screen readers won't understand the functionality of this form input.

    Email Address:

    <p>Email Address:</p><input type="text" name="email">

    Solution: Linked Label

    Screen readers will understand the functionality of this form input because it says it in the label element.

    <label for="user-email">Email Address:</label> <input type="text" id="user-email" name="email">
  4. Empty Buttons

    Overview

    • Buttons and links in HTML may seem similar, but they both are different for screen readers, keyboard navigation and user expectations. Both of them can be tabbed to with a screen reader, but pressing either Space or Enter button will trigger the button, but only Enter will work for links. In addition, users expect that a link will redirect them to another page while buttons should have an action happen on the current page.

    • Empty Buttons is when a website's buttons don't have text that describes the button’s functionality, resulting in people using screen readers being unable to understand its function. Check this link to learn more about Empty Buttons: Equalized Digital Empty Button

    • Around 30.6% of the homepages on the top 1 million websites have empty buttons.

    Who does this affect and why?:

    • People with vision impairment. This is because they rely on screen readers and keyboard shortcuts to navigate websites, and empty buttons makes it impossible to understand the functionality of that button. Around 2% of Australians suffer from severe vision impairment.

    Examples:

    Error: Empty Button

    Not only does this look worse, but for people who use keyboard only navigation, it will just say "button".

    Submit form:

    <p>Submit form: </p><button type="submit"></button>

    Solution: Button with Text

    This both looks a lot better and is accessibile. Screen readers will read this as "Submit Form, Button".

    <button type="submit">Submit Form</button>
  5. Missing Language

    Overview

    • Missing Language in HTML is when a page or post is missing a language declaration that is used by assistive technology to understand what the default language for that particular page is. Without a language declaration, a screen reader may have a difficult time understanding what language the page is and may miss sections of text or convey them incorrectly. Note that you should declare any language changes if there are any mid-page. Check this link to learn more about Missing Language: Equalized Digital Missing Language

    • Around 13.5% of the homepages on the top 1 million websites have missing language.

    Who does this affect and why?:

    • People with vision impairment. This is because they rely on screen readers and keyboard shortcuts to navigate websites, and missing language may result in them not understanding the default language of the page and missing sections of text. Around 2% of Australians suffer from severe vision impairment.

    Examples:

    Error: Missing Document Language

    (Language declaration applies to the whole page, see code below)
    <!DOCTYPE html> <html> <head>...</head> <body>...</body> </html>

    Solution: Defined Document Language

    (Screen readers now know how to pronounce the text)
    <!DOCTYPE html> <html lang="en"> <head>...</head> <body>...</body> </html>