THE ACCESSIBILITY LESSONS

Learn the idea.
Put it into practice.

Build accessibility skills through short exercises, working examples and choices you can explain. Start with the essentials or choose a path for your next task.

Self-paced · No account needed · Time estimates are a guide, not a time limit.

YOUR LEARNING

A little practice,
a useful next step.

A practice record helps you learn; it is not a certification or a conformance score.

CHOOSE A STARTING POINT

A path for the work you do

6 lessons · about 29 min

Start with the essentials

Build a foundation in focus, native controls, labels, images, links and headings.

8 lessons · about 40 min

Build usable interfaces

Practise controls, feedback, dialogs, motion and sign-in tasks.

6 lessons · about 32 min

Publish understandable content

Connect words, images, structure, media and adaptable layouts.

6 lessons · about 33 min

Review a product journey

Follow the evidence from visual presentation and forms to feedback and authentication.

READ → TRY → EXPLAIN → APPLY

Your lesson library

Open a lesson, try its exercise, check your understanding, then note one change for your own work. Mark it as practised when you are ready.

16 lessons available.

Keep keyboard focus visible

Interaction · About 5 minutes

Keyboard focus identifies the control that will receive the next action. A visible indicator helps people follow their place while tabbing, using alternative keyboards or operating through other keyboard interfaces. A control that works but cannot be located is still a barrier.

By the end: Track focus through a short task and recognise when page content hides it.

Try this

  1. Move through the demonstration with Tab, then back with Shift+Tab. Identify the focused control before activating anything.
  2. Compare the code examples, then check that the live focus indicator remains visible for as long as the control has focus.
  3. Repeat at a narrow width and with enlarged content. Look for headers or panels covering the focused control.

What to look for: Each focusable control has a visible focus treatment. WCAG 2.4.7 is AA. WCAG 2.4.11, also AA, addresses controls entirely hidden by author-created content; keeping the whole control visible is the better design target. These checks are a starting point, not a full keyboard audit.

Practice example

Compare the code or content patterns

Pattern to review

button:focus { outline: none; }

Pattern to build on

button:focus-visible {
  outline: 3px solid var(--focus-colour);
  outline-offset: 3px;
}
/* Check the ring against adjacent colours. */

These excerpts explain one idea. Apply and test the complete behaviour in your own context.

Keep in mind: Focus styling is not exclusively for keyboard hardware. The browser can also show it in other situations; do not force it off just because a pointer was used.

Check your understanding

A control responds to Enter, but has no visible focus indicator in keyboard use. What should change?

Provide a persistent visible keyboard-focus treatment. Correct. Operation and knowing which control is active are separate needs.

Choose a button for an action

Interaction · About 4 minutes

A button performs an action, such as saving a preference or opening a panel. A link navigates to a destination. Using a native button provides useful role and keyboard behaviour, while a clickable generic element requires those behaviours to be implemented and tested.

By the end: Recognise the difference between an action and navigation, then operate an action without a pointer.

Try this

  1. Find the action in the demonstration. Decide whether it changes something here or navigates somewhere else.
  2. Reach the action with Tab and try Enter and Space separately. Observe whether each activation performs the action once.
  3. Review the element choice and its name. Check that a non-submit button inside a form has an appropriate type.

What to look for: The action can be reached and operated with expected button keys, and its name describes the action. A native button is a dependable starting point, not a substitute for testing. For navigation, an anchor with a real destination retains familiar browser features.

Practice example

Compare the code or content patterns

Pattern to review

<div onclick="addItem()">Add item</div>

Pattern to build on

<button type="button" id="add-item">Add item</button>
<!-- Attach the action to the button’s click event. -->

These excerpts explain one idea. Apply and test the complete behaviour in your own context.

Keep in mind: Adding role='button' describes a role to assistive technology; it does not automatically add focusability, keyboard activation or the action itself.

Check your understanding

Which is the most dependable starting point for a 'Save preferences' action?

A native button with a clear label and working action. Correct. Native button behaviour reduces the custom work needed for keyboard and semantic support.

Keep labels and errors connected

Structure and forms · About 6 minutes

A form needs to explain what each input is for before a person types and while they correct an error. Persistent visible labels support sighted users; programmatic associations let assistive technology identify the same fields. Error text should explain what needs attention.

By the end: Complete and correct a short form without losing the field's purpose or your previous work.

Try this

  1. Inspect the empty demonstration form. Find each field's visible label and any required format or required-field instruction.
  2. Submit the sample with a missing or unsuitable value. Find the field involved and the message explaining the problem.
  3. Correct the value, then revisit the field. Check that its label remains available and the outdated error state is cleared.

What to look for: Labels stay visible and are associated with inputs. Text identifies errors; colour may reinforce that message. Relevant help or error text is connected to the field, for example through aria-describedby. A useful summary or focus strategy guides correction without erasing otherwise valid entries.

Practice example

Compare the code or content patterns

Pattern to review

<input placeholder="Email">
<!-- A red border is the only error indication. -->

Pattern to build on

<label for="email">Email (required)</label>
<input id="email" type="email" required
  aria-describedby="email-help email-error">
<p id="email-help">For example, [email protected].</p>
<p id="email-error"></p>
<!-- On error: explain the correction and set aria-invalid. -->

These excerpts explain one idea. Apply and test the complete behaviour in your own context.

Keep in mind: A placeholder is not a reliable replacement for a persistent label. Giving a field an accessible name alone also does not provide every visible instruction a user may need.

Check your understanding

Which error response most clearly supports correcting an email field?

Identify the Email field, explain the problem in text, and preserve the entered values. Correct. The person can locate the problem and correct it without reconstructing the form.

Measure contrast in context

Visual presentation · About 5 minutes

Contrast compares foreground and background brightness. It helps determine whether text or an important visual cue is distinguishable, but a ratio does not measure every aspect of readability. Test the actual colours and states people encounter, including text shown over images or tinted surfaces.

By the end: Choose a suitable threshold and improve a sample without relying on visual judgement alone.

Try this

  1. Identify whether the sample is ordinary text, large text or an essential non-text visual cue.
  2. Measure the foreground against its actual adjacent background. For a gradient or image, check the least favourable area behind the content.
  3. Adjust a colour, measure again, and examine the result in the available themes and interactive states.

What to look for: Under WCAG 1.4.3 AA, ordinary text needs at least 4.5:1; large text needs 3:1. Large means at least 18pt, or 14pt bold. Incidental text and logotypes have exceptions. Essential control and graphic cues have separate 3:1 rules under 1.4.11. Do not round a failing ratio upward.

Practice example

Compare the code or content patterns

Pattern to review

/* Judging readability from colour names alone. */
color: grey; background: white;

Pattern to build on

/* Measure the actual rendered colours. */
/* Normal text at AA: at least 4.5:1. */
/* Large text at AA: at least 3:1. */
/* Large: 18pt, or 14pt bold (normally 24px / 18.67px). */

These excerpts explain one idea. Apply and test the complete behaviour in your own context.

Keep in mind: A passing ratio does not make tiny, thin or crowded text easy for everyone to read. Keep size, spacing and clear presentation in the review.

Check your understanding

Ordinary 16px regular text measures 4.49:1 against its background. Does it meet the 4.5:1 AA threshold?

No; improve the pair until the unrounded result reaches the threshold. Correct. A value below 4.5:1 does not meet this threshold.

Write alternatives for the image's job

Content · About 5 minutes

The same image can inform, decorate or operate a control in different contexts. Its text alternative should serve that particular job. A product photograph, a decorative divider and an image-only link therefore need different decisions, even when the files look equally detailed.

By the end: Choose between meaningful alternative text, an empty alternative and a fuller description.

Try this

  1. Read the surrounding content and decide what the image contributes to this task.
  2. Compare the proposed alternatives. Keep information needed here; remove repeated detail or visual description that does not serve the purpose.
  3. Check the result in context: describe the action for a functional image, and provide longer information nearby when a short alternative cannot carry it.

What to look for: An informative image has a useful equivalent; a purely decorative image can use alt=''. An image-only control needs an accessible name for its action. A complex chart may need both a short alternative and accessible detailed information. The right choice depends on the page, not a fixed word count.

Practice example

Compare the code or content patterns

Pattern to review

<img src="workshop.svg" alt="image">

Pattern to build on

<!-- Choose the alternative from purpose and context. -->
<img src="workshop.svg"
  alt="Workshop: 18 September at 10:00.">
<!-- If equivalent text is already nearby: alt="". -->

These excerpts explain one idea. Apply and test the complete behaviour in your own context.

Keep in mind: Screen readers do not read every image identically. Output depends on markup, context, software and settings; missing alt does not guarantee one particular filename announcement.

Check your understanding

A decorative separator adds no information and is not a control. Which treatment fits?

Use an empty alt attribute so it can be ignored. Correct. Empty alternative text intentionally marks this image as decorative.

Size and space the active target

Interaction · About 5 minutes

People select controls with fingers, mice, pens and other pointing devices. The active area can be larger than the visible icon. Generous targets reduce precision demands, while the gap between neighbouring targets helps prevent selecting the wrong action.

By the end: Evaluate the clickable area and spacing instead of measuring only the picture inside a control.

Try this

  1. Use Previous step and Next step, then compare the code examples. Identify the controls' actual active boundaries.
  2. Measure the active dimensions in CSS pixels. If a target is undersized, inspect its neighbours and the applicable WCAG exception.
  3. Describe how a larger active area or suitable spacing would improve an undersized layout, without overlapping neighbouring targets.

What to look for: WCAG 2.5.8 AA uses a 24 by 24 CSS pixel minimum with spacing, equivalent-control, inline, user-agent and essential exceptions. For the spacing exception, a 24px-diameter circle centred on the target's bounding box must not intersect another target or another undersized target's circle. The 44 by 44 target belongs to 2.5.5 AAA, with its own exceptions.

Practice example

Compare the code or content patterns

Pattern to review

/* A tiny hit area, crowded by other controls. */
.icon { width: 12px; height: 12px; }

Pattern to build on

/* A generous target can contain a smaller icon. */
.control { min-width: 44px; min-height: 44px; }
/* WCAG 2.5.8 AA has a 24px rule plus permitted
   spacing and other exceptions; inspect the full criterion. */

These excerpts explain one idea. Apply and test the complete behaviour in your own context.

Keep in mind: A 20px target is not automatically a WCAG failure: an exception may apply. Conversely, meeting a minimum does not guarantee that a control is comfortable for every person.

Check your understanding

A custom target is smaller than 24 by 24 CSS pixels. What should you do before reporting a 2.5.8 failure?

Check the actual active area and the criterion's applicable exceptions. Correct. Record which requirement or exception you assessed and the evidence.

Build a meaningful heading outline

Structure and forms · About 5 minutes

Headings explain how content is organised and help people move between sections. A large bold paragraph may look like a heading while remaining ordinary text to software. Semantic heading levels should represent the content's relationships, with visual styling handled separately.

By the end: Create an outline that describes both the page's topics and their hierarchy.

Try this

  1. Read the demonstration as an outline, using its heading list or the available markup view.
  2. Decide which topics are main sections and which are subsections. Choose levels that express those relationships.
  3. Check the heading wording, then style its appearance without changing the level merely to obtain a different font size.

What to look for: Real headings identify sections and accurately describe their content. Logical nesting helps convey relationships under 1.3.1; descriptive headings support 2.4.6 AA. One main h1 is a useful convention. A skipped level warrants review but is not, by itself, proof of a WCAG failure.

Practice example

Workshop access plan

This is a section heading within the demonstration.

Arrival

Describe the entrance, route and contact for assistance.

Session materials

Provide accessible materials before the session.

These are actual nested headings (h5, then h6) within this lesson’s hierarchy. The appropriate levels depend on the surrounding page.

Compare the code or content patterns

Pattern to review

<p class="large-bold">Arrival</p>

Pattern to build on

<section aria-labelledby="arrival">
  <h2 id="arrival">Arrival</h2>
  <p>Describe the entrance and route.</p>
</section>
<!-- Choose levels from the page hierarchy. -->

These excerpts explain one idea. Apply and test the complete behaviour in your own context.

Keep in mind: Returning from h3 to h2 is normal when a subsection ends and a new main section begins. Heading numbers are a hierarchy, not a sequence that must always increase.

Check your understanding

A page finishes an h3 subsection and then starts a new h2 section. What is the appropriate judgement?

Check that the new h2 really starts a section at that level. Correct. Judge the content relationship, not a rule that heading numbers must rise.

Give icon buttons an action name

Interaction · About 4 minutes

A symbol can have different meanings in different places: a magnifier may search or enlarge an image. An icon button needs an accessible name that identifies its actual action. Visible text also helps people who do not recognise the symbol.

By the end: Compare a control's purpose with its accessible name and remove ambiguity.

Try this

  1. Identify what the sample control does. Describe the action in a short phrase before looking at its name.
  2. Compare that phrase with the accessible-name example or inspect the name in browser accessibility tools.
  3. Choose a clear name, hide redundant decorative icon content from assistive technology, and check any visible text label still matches.

What to look for: The name describes the action, such as 'Enlarge preview', rather than only the symbol's appearance. A native button can take its name from text, including visually hidden text, or an appropriate naming attribute. Where a visible text label exists, the accessible name includes it under 2.5.3 A.

Practice example

Compare the code or content patterns

Pattern to review

<button><svg><!-- bookmark shape --></svg></button>

Pattern to build on

<button type="button" aria-pressed="false">
  <svg aria-hidden="true"><!-- bookmark --></svg>
  <span class="sr-only">Save example</span>
</button>

These excerpts explain one idea. Apply and test the complete behaviour in your own context.

Keep in mind: An emoji is not automatically hidden from assistive technology. It may contribute a name, but that name may not explain the action. Adding aria-label to every button is unnecessary when good text already supplies the name.

Check your understanding

A magnifier button enlarges a product photograph. Which name best describes its action?

Enlarge product photograph. Correct. The name tells the person what activation will do.

Make modal focus deliberate

Interaction · About 6 minutes

A modal dialog temporarily makes the surrounding page unavailable while a person completes or dismisses a task. Keyboard focus should enter the dialog, remain in its interaction sequence while open, and reach a sensible place when it closes.

By the end: Test opening, navigating and dismissing a modal without losing your place.

Try this

  1. Open the demonstration from its trigger. Identify the dialog title and where initial focus lands.
  2. Use Tab and Shift+Tab through its controls. Confirm that the background page is unavailable while the modal remains open.
  3. Dismiss it using its close control and test Escape separately. Check where focus returns after each route.

What to look for: The modal has a useful accessible name, suitable initial focus and an accessible exit. APG recommends Escape and an in-dialog close control. Focus normally returns to the trigger, or to a logical next step if the workflow requires it. Native modal behaviour still needs naming and workflow checks.

Practice example

Compare the code or content patterns

Pattern to review

<div class="looks-like-a-modal">
  <!-- The page behind it remains interactive. -->
</div>

Pattern to build on

<dialog id="plan" aria-labelledby="plan-title">
  <h2 id="plan-title">Plan name</h2>
  <form method="dialog"><button>Close</button></form>
</dialog>
<script>plan.showModal();</script>
<!-- Review initial focus and focus after closing. -->

These excerpts explain one idea. Apply and test the complete behaviour in your own context.

Keep in mind: Keeping Tab inside an open modal is not automatically a prohibited keyboard trap: there must be a keyboard-operable way to leave. Non-modal panels should not inherit this behaviour indiscriminately.

Check your understanding

The trigger is removed when a dialog completes a task. Where should focus go?

To a meaningful next control or location in the updated workflow. Correct. Returning to the former trigger is not possible, so choose a logical destination.

Keep content usable when enlarged

Visual presentation · About 6 minutes

People who enlarge content need more than bigger letters: the surrounding layout must remain usable. Fixed-width cards, clipped buttons and large sticky panels can hide information or require repeated sideways scrolling. Reflow lets content reorganise while preserving the task.

By the end: Check a narrow layout for missing content, lost functions and unnecessary two-dimensional scrolling.

Try this

  1. Use the demonstration's narrow layout, or test a viewport 320 CSS pixels wide. Follow the content in its reading order.
  2. Complete the available task and inspect long text, controls and any fixed or sticky content for clipping or overlap.
  3. Where possible, repeat with a 1280 CSS pixel-wide browser viewport at 400% zoom. Compare the same information and functions.

What to look for: Ordinary vertically scrolling content remains usable at the width equivalent to 320 CSS pixels under 1.4.10 AA. Content designed to scroll horizontally uses the equivalent 256 CSS pixel height. Parts that genuinely need a two-dimensional layout, such as a data table, have an exception; surrounding content still needs to reflow.

Practice example

Compare the code or content patterns

Pattern to review

.card { width: 900px; height: 180px; overflow: hidden; }

Pattern to build on

.card { width: 100%; max-width: 40rem; }
.card p { overflow-wrap: anywhere; }
/* Allow content to grow; review zoom and reflow separately. */

These excerpts explain one idea. Apply and test the complete behaviour in your own context.

Keep in mind: Reflow does not mean shrinking the whole page until everything fits. It also does not mean hiding needed information. A table's exception does not exempt the whole page.

Check your understanding

An essential wide data table needs horizontal scrolling. What should happen to the surrounding explanatory text?

It should still reflow within the available width. Correct. Keep the table usable while allowing ordinary surrounding content to wrap.

Announce results without moving focus

Interaction · About 5 minutes

An action can update a page without opening a new page or moving focus. A short message such as a saved-state confirmation or result count may be visible while going unnoticed by someone using assistive technology. Status semantics make that change available without forcing a new location.

By the end: Recognise a status message and keep its feedback separate from focus movement.

Try this

  1. Activate the example action and notice where focus remains while the visible result changes.
  2. Compare the visible message with its status-region implementation. Prefer one concise update over several competing announcements.
  3. If using a screen reader, repeat the action and listen for the update. Otherwise inspect the role and changed text, noting that this does not verify speech output.

What to look for: A qualifying status message can be determined through its role or properties under 4.1.3 AA. A polite status region is useful for ordinary feedback; urgent alerts need a different judgement. Keep the message visible too, and test the browser and assistive-technology combinations you support.

Practice example

Compare the code or content patterns

Pattern to review

result.textContent = "3 results";
// No way to announce the update without moving focus.

Pattern to build on

<p id="result" role="status"></p>
<!-- Create the empty region before the update. -->
<script>
  result.textContent = "3 practice resources available.";
</script>

These excerpts explain one idea. Apply and test the complete behaviour in your own context.

Keep in mind: Not every inserted element needs a live region. Search results themselves are content; a short results-count message may be a status. More announcements can make an interface harder to follow.

Check your understanding

A 'Saved' message appears after a background save while focus stays on the button. Which approach fits ordinary feedback?

Expose a concise status message without requiring focus to move. Correct. The message can be presented while the user keeps their place.

Give people control over movement

Visual presentation · About 5 minutes

Motion may help show a change, but extra movement can distract people or trigger discomfort. A reduced-motion option should preserve the information and function. Different WCAG criteria cover interaction-triggered animation, automatically moving information and flashing; they are not interchangeable.

By the end: Choose a static alternative and distinguish a lasting pause from a temporary hover effect.

Try this

  1. Select Keep this sample still. Inspect the static alternative; the exercise can be completed without watching movement.
  2. If comfortable, inspect the optional motion demonstration and its controls. Check that choosing less motion preserves the result.
  3. For an automatically moving-content scenario, choose a pause or stop approach that remains effective when focus moves elsewhere.

What to look for: Non-essential motion triggered by interaction can be disabled under 2.3.3 AAA. Separately, 2.2.2 A requires control of non-essential automatic moving, blinking or scrolling information that lasts over five seconds alongside other content. Automatic updates have a related rule without that five-second threshold. A reduced-motion preference is useful, but its actual effect must be tested.

Practice example

Compare the code or content patterns

Pattern to review

.indicator { animation: slide 2s infinite; }
/* Starts without asking and offers no stop control. */

Pattern to build on

/* Start only on request, and provide a stop control. */
@media (prefers-reduced-motion: reduce) {
  .indicator { animation: none; }
}

These excerpts explain one idea. Apply and test the complete behaviour in your own context.

Keep in mind: Stopping movement only while a pointer hovers or keyboard focus stays on it is not a usable persistent pause. A pause button also does not make unsafe flashing acceptable.

Check your understanding

An automatic announcement panel stops only while the pause control has focus, then resumes when you leave. What is missing?

A persistent pause that leaves the rest of the page usable. Correct. The person must be able to pause the content and continue their task.

Plan captions and description together

Content · About 7 minutes

An accessible media plan starts with the information in each channel. Captions provide speech and meaningful sound in text. Audio description conveys important visual information that is not available from the soundtrack. A transcript offers another way to read and navigate the content.

By the end: Identify which information a sample clip communicates through audio, visuals or both.

Try this

  1. Read the sample media scenario or storyboard. List the spoken information, meaningful sounds and essential visual actions.
  2. Choose what the captions must include, then identify visual information that also needs to be conveyed through the soundtrack or description.
  3. Review the plan for the stated media type and WCAG level. Include an accessible player and consider a descriptive transcript.

What to look for: For ordinary prerecorded video with audio, captions are a Level A requirement, subject to the media-alternative exception. At AA, needed visual information must be available through audio description; no additional description is needed when the soundtrack already conveys it. A transcript is valuable but is not a universal substitute for these requirements.

Practice example

Storyboard: a bell sounds, then a host says “Welcome.” A silent shot shows a sign pointing left to the step-free entrance.

Read the caption example

[Bell rings]
HOST: Welcome.

Read the visual-description example

A sign points left to the step-free entrance.

Read the descriptive transcript example

A bell rings. The host says, “Welcome.” A sign points left to the step-free entrance.

Compare the code or content patterns

Pattern to review

Captions: "Welcome."
// Necessary sounds and essential visual information omitted.

Pattern to build on

Captions: [Bell rings] HOST: Welcome.
Description: A sign points left to the step-free entrance.
// Check synchronization, accuracy and the complete media task.

These excerpts explain one idea. Apply and test the complete behaviour in your own context.

Keep in mind: Unreviewed automatic captions are not dependable evidence that the content is accurately captioned. Spoken-word accuracy, meaningful sounds, speaker identification and timing all need appropriate review.

Check your understanding

A prerecorded instruction video introduces new content: it includes speech and a crucial silent visual step. Which plan addresses both channels at AA?

Provide accurate captions and convey the essential visual step through audio description or the main narration. Correct. Captions and an adequate soundtrack or description address different missing information.

Write instructions people can act on

Content · About 5 minutes

Instructions should identify the control or information needed for a task, and explain unusual requirements before errors occur. Colour, shape, sound and position can be helpful extra cues, but people must not depend on those cues alone to understand what to do.

By the end: Rewrite a vague direction using a control's name and the information needed for the next step.

Try this

  1. Read the example instruction and identify every clue that depends only on appearance, location or sound.
  2. Replace the vague reference with the actual control label. Add a format example or required-field instruction only where it helps.
  3. Rewrite an instruction from your own work in the application note. Check that it still identifies the right control when the layout changes.

What to look for: The instruction works without a colour-only or position-only cue. WCAG 1.3.3 A covers sensory-only directions; 3.3.2 A requires labels or instructions for user input. Plain wording and clear steps improve usability, but more text is not always better. Put relevant help near the task.

Practice example

Instruction to revise

Use the green option over there and send it soon.

Task-specific instruction

Choose “Morning session” from the Session list. Then select “Send booking” by 17 September at 17:00 Maldives time.

Rewrite an instruction from your own work in the application note below. Identify the action, control name and any real deadline.

Compare the code or content patterns

Pattern to review

Use the green option on the right.

Pattern to build on

Choose “Morning session” from the Session list.
Then select “Send booking”.

These excerpts explain one idea. Apply and test the complete behaviour in your own context.

Keep in mind: Accessibility does not ban every mention of shape or position. Supplement those clues with information that identifies the control without relying on the clue alone.

Check your understanding

Which replacement most clearly improves 'Press the green button on the right' when that button is visibly labelled Continue?

Select Continue to review your answers. Correct. It uses the actual label and explains the next step without requiring colour or position.

Reduce memory barriers in sign-in

Interaction · About 6 minutes

Remembering credentials, solving puzzles or transcribing a code can block people from signing in. WCAG 3.3.8 AA addresses cognitive tests at each authentication step. Useful support includes password-manager compatibility and copy-and-paste, or an alternative method that avoids the test.

By the end: Examine a sample sign-in flow for avoidable memory and transcription demands.

Try this

  1. Use only the fictional practice code provided in the exercise. Identify what the task asks a person to remember or retype.
  2. Paste the complete verification code and check it. Confirm that the interface does not require digit-by-digit transcription.
  3. Apply this check to an authentication flow you design or review. Assess each step, including a retry or additional challenge, for assistance or an alternative.

What to look for: People can complete authentication with appropriate assistance or a suitable alternative where required. Correct input purposes help browsers recognise fields, but actively blocking fill or paste can defeat that support. 3.3.8 also has object-recognition and personal non-text-content exceptions; those exceptions do not make a method accessible to everyone.

Practice example

Compare the code or content patterns

Pattern to review

<input onpaste="return false">
<!-- Requires the person to remember and retype the code. -->

Pattern to build on

<label for="code">One-time code</label>
<input id="code" type="text" inputmode="numeric"
  autocomplete="one-time-code">
<!-- Permit paste; assess every authentication step. -->

These excerpts explain one idea. Apply and test the complete behaviour in your own context.

Keep in mind: Passwords are not forbidden by WCAG. The issue is an unsupported cognitive test. A successful demonstration is also not a review of an actual account's authentication security.

Check your understanding

A six-digit code form accepts only the first digit when the full code is pasted. Which change best removes that transcription barrier?

Accept the complete pasted code, or offer an equivalent path without transcription. Correct. Support the full-value operation or provide a usable alternative at this step.

TAKE THE NEXT STEP

Connect the lesson to a real journey

Practise with a team

  1. Choose a lesson and give everyone time to read or use their preferred input and assistive technology.
  2. Ask each person to describe the barrier and evidence, then agree one improvement to try.
  3. Review the improvement with the people affected. Record what remains uncertain and who will follow up.

Testing a component does not reproduce a disabled person’s lived experience. Include disabled participants and their access requirements in the work.

Keep a reference nearby

Original learning examples. Sources reviewed 15 September 2026. Each lesson links to the full reference and its conditions; one successful exercise does not establish WCAG conformance.

Clear saved learning data?

This removes all lesson progress and application notes in this browser. Download your learning plan first if you want to keep a copy.