Web Content Accessibility Guidelines

Introduction

The Web Content Accessibility Guidelines (WCAG) are the international standards that inform most web accessibility laws across the world.

WCAG has four principles, and they spell out POUR:

  1. Perceivable
  2. Operable
  3. Understandable
  4. Robust

There are a total of 13 guidelines, each one flowing from one of these POUR principles. Each guideline has success criteria. There are currently 78 criteria in WCAG 2.1, but with the arrival of WCAG 2.2, there will be nine new criteria.

Each criteria is assigned as being either Level A, AA, or AAA.

There are three levels of conformance:

Why does WCAG matter?

WCAG is not a law, but a set of standards. And these standards are the basis of some laws:

To conform to AA of any version of WCAG, we have to meet all single-A and double-A standards. Legally, don't have to conform to the triple-A standards, but we have to conform to every A and AA Success Criteria, whether we are aiming for WCAG 2.1 or WCAG 2.2.

WCAG Success Criteria, by Level A and Level AA

Level A

Back to top

Level AA

Back to top

WCAG, by POUR principles

Perceivable

Non-text Content

All non-text content has a text equivalent.

Back to top

Audio-only and Video-only (Prerecorded)

Alternative content is provided for all prerecorded audio and video.

Back to top

Captions (Prerecorded)

Captions are provided for all prerecorded video.

Back to top

Audio Description or Media Alternative (Prerecorded)

Audio descriptions or an alternative are provided for all prerecorded video.

Back to top

Captions (Live)

Captions are provided for live audio content.

Back to top

Audio Description (Prerecorded)

Audio descriptions are provided for all prerecorded video.

Back to top

Info and Relationships

All information and structure is available in text or can be programmatically determined.

Back to top

Meaningful Sequence

Content is presented in a meaningful order.

Back to top

Sensory Characteristics

Understanding the context of content does not depend on sensory input such as color, sound, or visual orientation.

Back to top

Orientation

Content does not require a specific orientation or view.

Back to top

Identify Input Purpose

The purpose of each input field is identified with a label and/or text description.

Back to top

Use of Color

Color is not the only means of conveying information.

Back to top

Audio Control

Any audio that plays for more than 3 seconds has controls to pause, stop, or control the volume.

Back to top

Contrast (Minimum)

All text has a minimum contrast of 4.5:1 to separate it from its background.

Back to top

Resize Text

Text can be resized up to 200% and still be readable.

Back to top

Images of Text

Text should be represented as text and not as images with the exception of logos.

Back to top

Reflow

Content is presented without having to scroll in two directions.

Back to top

Non-text Contrast

Interface controls have a minimum contrast of 3:1 to separate from adjacent elements.

Back to top

Text Spacing

Text has appropriate line height and spacing relative to the font size.

Back to top

Content on Hover or Focus

When content becomes visible on hover, that content must be dismissable, hoverable, and persistent.

Back to top

Operable

Keyboard

All content must be accessible using a keyboard as the only input method.

Back to top

No Keyboard Trap

A user must be able to navigate away from a component using a keyboard only.

Back to top

Character Key Shortcuts

If a keyboard shortcut is implemented using a single character, then users must be able to turn off the shortcut, remap the shortcut, or only activate the shortcut when the component receives focus.

Back to top

Timing Adjustable

Any time limits for content can be turned off or extended if possible.

Back to top

Pause, Stop, Hide

Any time-based media that lasts more than 5 seconds has play, pause, and stop controls.

Back to top

Three Flashes or Below Threshold

Nothing on the page flashes more than 3 times per second, or the flash is below a specific threshold.

Back to top

Bypass Blocks

Sections of a website that are repeated on multiple pages can be skipped.

Back to top

Page Titled

All pages have a descriptive title.

Back to top

Focus Order

The focus order of elements on the page is in a logical order.

Back to top

The purpose of each link can be determined from the link text alone without needing context from the surrounding content.

Back to top

Multiple Ways

There is more than one way to locate a specific page in a website.

Back to top

Headings and Labels

Headings and labels are descriptive.

Back to top

Focus Visible

It is visually obvious where the current focus is on the website.

Back to top

Focus Not Obscured (Minimum)

When a user interface component receives keyboard focus, the component is not entirely hidden due to author-created content.

Back to top

Pointer Gestures

Content can be controlled with a range of input types.

Back to top

Pointer Cancellation

Prevent accidental pointer input by either not executing functions on down-events, by only completing functions on up-events, or by making sure the action of up-events will reverse the action of the corresponding down-events.

Back to top

Label in Name

Visible text labels and programmatic names of the same control should match.

Back to top

Motion Actuation

Any function that can be operated by device motion also has a corresponding component control.

Back to top

Dragging Movements

All functionality that uses a dragging movement for operation can be achieved by a single pointer without dragging, unless dragging is essential or the functionality is determined by the user agent and not modified by the author.

Back to top

Target Size (Minimum)

The size of the target for pointer inputs is at least 24 by 24 CSS pixels.

Back to top

Understandable

Language of Page

The html element programmatically sets the language for the page.

Back to top

Language of Parts

Content on the page that is written in a different language is programmatically identified.

Back to top

On Focus

When a component receives focus, the context of the content does not change.

Back to top

On Input

Changing a component’s settings does not change the context of the content unless the user is notified of the change.

Back to top

Consistent Navigation

Any navigation that is repeated on multiple pages is consistent.

Back to top

Consistent Identification

Components that have the same function are consistent across the website.

Back to top

Consistent Help

If a web page contains human contact details, human contact mechanism, a self-help option, and/or a fully automated contact mechanism, and those mechanisms are repeated on multiple Web pages within a set of Web pages, they occur in the same order relative to other page content, unless a change is initiated by the user.

Back to top

Error Identification

All input errors are presented to the user in text.

Back to top

Labels or Instructions

Use labels or instructions whenever input from the user is required.

Back to top

Error Suggestion

Give suggestions on how to correct errors that are automatically detected and the cause is known.

Back to top

Any modifiable data can be reversed, checked, or confirmed (for legal or financial data).

Back to top

Redundant Entry

Information previously entered by or provided to the user that is required to be entered again in the same process is either: auto-populated, or available for the user to select. Except when: re-entering the information is essential, the information is required to ensure the security of the content, or previously entered information is no longer valid.

Back to top

Accessible Authentication (Minimum)

A cognitive function test (such as remembering a password or solving a puzzle) is not required for any step in an authentication process unless that step provides an alternative, a mechanism to help assist the user, the test is to recognize objects, the test is to identify non-text context the user has provided to the Web site.

Back to top

Robust

Parsing (Obsolete and removed)

All markup is formatted according to the language's specifications.

Back to top

Name, Role, Value

Use name and role attributes when creating custom components.

Back to top

Status Messages

Make users aware of important content changes with status messages.

Back to top