Your country

Tools that support it use your country for local currency, number formats, units and paper size. Your choice is saved only in this browser.

Type a name or a two-letter code. Use the up and down arrow keys to move through the countries, Enter to choose one and Escape to close.

Web Accessibility (WCAG 2.2)  Module 1 – Foundations: people, barriers and assistive technology

Disabilities, barriers and assistive technology

How blind, low-vision, Deaf, motor, cognitive and speech-disabled people use the web, the tools they rely on, and which screen reader pairs to test first.

  • Beginner
  • 15 minutes
  • Examples run with Node.js 24.21.0 and quickjs 0.32.0
  • By MySmartCoPilot
Free lesson, Pro answers: 15 minutes
Free: the whole lesson. With a pass: the model answers to its 2 interview questions.

What you will learn

  • Describe how blind, low-vision, Deaf, motor, cognitive and speech-disabled people use the web
  • Match assistive technologies to the barriers they address and to the code they depend on
  • Use survey and traffic data to choose which screen reader and browser pairs to test first
  • Plan a first test matrix for an audience on desktop computers and phones

Before you start

What you’ll learn · Before you start

What you will learn

  • Describe how blind, low-vision, Deaf, motor, cognitive and speech-disabled people use the web
  • Match assistive technologies to the barriers they address and to the code they depend on
  • Use survey and traffic data to choose which screen reader and browser pairs to test first
  • Plan a first test matrix for an audience on desktop computers and phones

Before you start

On this page

In WebAIM’s latest survey of screen reader users, 67.8 % said the first thing they do on a long page is move through its headings. A page without real headings takes that route away from two respondents in three before they have heard a word of it.

Each disability meets the web through different tools, and each tool depends on different parts of your code. You will be able to describe how blind, low-vision, Deaf, motor, cognitive and speech-disabled people use the web, match assistive technology: Software or hardware that disabled people use to perceive and operate computers and phones, such as screen readers, braille displays, magnifiers, switches and voice control. It works with what the browser exposes from a page. to what it needs from a page, and use survey and traffic data to choose the screen reader and browser pairs to test first, ending with a test matrix you can check.

Each disability meets the web through different tools

A blind reader moves through a page by headings and links, listening to a screen reader: Software that reads out what is on the screen, or shows it on a braille display, and lets a person move through and operate a page from the keyboard or with touch gestures. NVDA, JAWS, VoiceOver and TalkBack are screen readers. or reading a refreshable braille display: A device with rows of pins that rise and fall to form braille characters, showing a line of the text a screen reader sends to it. Blind and deafblind people read it by touch.. A reader with low vision enlarges the same page to 400 % and reads it one column at a time. A Deaf viewer follows its video through captions, and a person who cannot use their hands moves through it with a switch or with their voice.

W3C’s guide to how disabled people use the web groups abilities into five kinds: auditory, cognitive and learning, physical, speech and visual. It adds that people may develop impairments with age, and that some have more than one disability, such as “someone who is deaf and has low vision”, who may need captions they can resize (Diverse Abilities and Barriers). The table gives each group the tools and strategies W3C describes and the barrier that stops them first:

Who Tools and strategies What stops them first
Blind people A screen reader with speech or braille, the keyboard or touch gestures Images with no text alternative, controls with no name, mouse-only widgets
People with low vision Browser zoom, a screen magnifier: Software that enlarges part of the screen, often with colour and pointer options, for people with low vision. It shows only a small part of a page at a time, so layout and focus position matter., larger text, high-contrast colours Text that does not reflow, low contrast, content that breaks when text grows
People who see colours differently Often nothing at all Information given by colour alone
Deaf and hard of hearing people Captions, transcripts, sign language, visual alerts Video without captions, sound-only alerts, help by phone only
People with motor disabilities Keyboard, switch access: A way of operating a device with one or more switches, such as buttons pressed by hand, head or breath. The software highlights items in turn, and a switch press selects the highlighted one., voice control: Software that lets a person operate a computer or phone by speaking commands, such as saying a control's name to press it. It relies on each control's accessible name containing its visible label., eye tracking Small targets, drag-only actions, short time limits, keyboard traps
People with cognitive and learning disabilities Consistent layouts, plain language, word prediction, password managers Memory tests at sign-in, unexpected changes, dense text
People with speech disabilities Typing instead of speaking Voice-only interfaces and help by phone only

The right-hand column is the part a web team controls. Every entry in it is a decision in markup, style, script or content, which is why the same few failures lead large scans of the web such as WebAIM’s.

Checkpoint

Check: Who uses which tools

  1. Question 1 of 2 A reader with low vision opens your article at 400 % zoom. Which design decision is most likely to stop them first?

    Choose one answer.

    Show the answer: Question 1 of 2

    Answer: A fixed-width layout that does not reflow, so every line needs sideways scrolling

    The table's low-vision row lists text that does not reflow and low contrast as the first barriers. Zoom makes the viewport narrow, so a layout that cannot narrow fails at once.

  2. Question 2 of 2 Which barrier stops a person with a speech disability first?

    Choose one answer.

    Show the answer: Question 2 of 2

    Answer: Support that can only be reached by a voice call or a voice assistant

    W3C groups speech among the five kinds of ability. A voice-only route into a service shuts out anyone who cannot use their voice reliably.

Assistive technology can only use what the page exposes

Assistive technology does not work from the source of a page. The browser turns your markup into a DOM, derives the accessibility tree: The tree of objects a browser builds from the DOM for assistive technology: one node for each thing a person can perceive or operate, with its role, name, states and value. from that DOM, and gives every element a person could perceive or use a node with a role, a name and its current states. The operating system’s accessibility interface hands the tree on, and screen readers, braille displays, voice control and switch software all work from it. Follow one Send control along that path twice, once as a button element and once as an icon inside a div:

Interactive · stage by stage How a Send button reaches a screen reader and voice control Step through the path from your markup to the person, once with a button element, once with an icon in a div.
How a Send button reaches a screen reader and voice control, step 10 of 10. Showing Your HTML (a button named Send), DOM, Accessibility tree (role button, name Send), Platform API, Assistive technology (says: Send, button), The person.pressYour HTMLa button named SendDOMthe parsed pageAccessibility treerole button, name SendPlatform APIone per operating systemAssistive technologysays: Send, buttonThe personhears

The drawing shows the whole scene; its 10 steps are listed below.

Every step as text
  1. The markup. The page has a button element with the text Send. Nothing else in this first pass is special.
  2. Parsed into the DOM. The browser parses the HTML into the DOM, the tree of elements that scripts and styles work on.
  3. Into the accessibility tree. From the DOM the browser builds the accessibility tree. The button element arrives as a node with the role button and the name Send, taken from its text.
  4. Through the platform API. The browser hands the tree to the operating system's accessibility interface, a different one on each platform. Assistive technology reads the page from there, never from your HTML file.
  5. A screen reader speaks it. A screen reader announces a button named Send, and a refreshable braille display can show the same name and role in braille.
  6. Voice control presses it. A voice control user says click Send. The software looks for a control whose name holds those words, finds this one and asks the browser to press it, as a click would.
  7. Now an icon in a div. Here is the same control written as a div with a paper-plane icon and a click handler, and no text at all. On screen it looks exactly like the button did.
  8. Nothing to name. In the accessibility tree the div is a generic node with no role and no name. The icon is a drawing, and nothing in the markup says what it means.
  9. Nothing to announce. The screen reader has no role or name to announce, and voice control finds no control called Send, so click Send does nothing. No assistive technology can invent what the page leaves out.
  10. Fixed where it broke. The fix goes where the barrier is, in the markup. A button element with a name, here its visible text Send, brings the role and the name back, and every tool after it works again unchanged.

The second pass broke at the accessibility tree, and everything after it inherited the gap. The screen reader had no role or name to say; voice control found no control called Send. That second case has its own WCAG criterion, 2.5.3 Label in Name: when a control shows a text label, its name must contain that text, so that what a voice control user reads on screen is what they can say (WCAG 2.2). W3C’s guide gives the same advice in plain terms: button names in the code should match the text on screen, so a command such as “click send email” works (Tools and Techniques: Input).

Switch software works from the same tree. Android’s Switch Access moves through the items on the screen, “highlighting each item in turn, until you make a selection” (Android Switch Access help), so a person with one or two switches can reach everything the page exposes as operable, and nothing it does not.

Key idea

Assistive technology can only present what the browser exposes: when the page gives a control no role and no name, no screen reader, voice control or switch can supply them.

Checkpoint

Check: What assistive technology needs from a page

  1. Question 1 of 2 In the stepped path, the icon-in-a-div version of Send failed. At which stage did it break first?

    Choose one answer.

    Show the answer: Question 1 of 2

    Answer: In the accessibility tree, where the div became a generic node with no role and no name

    The barrier starts where the meaning is lost: the markup gave the control no role and no name, so the tree had none, and no tool after it could recover them.

  2. Question 2 of 2 A button shows the word Send, but its code gives it the name "Submit message form". A voice control user says "click Send" and nothing happens. Which criterion does this fail, and what is the fix?

    Choose one answer.

    Show the answer: Question 2 of 2

    Answer: 2.5.3 Label in Name; make the name contain the visible text, for example by naming it Send

    Voice control matches spoken words against accessible names. A name that hides the visible label breaks that match, which is why WCAG 2.5.3 requires the name to contain the visible text.

Survey data shows which screen readers people use

One widely cited public source on screen reader use is WebAIM’s survey of screen reader users. Its eleventh edition collected 1,780 valid responses (WebAIM). For the screen reader respondents use most on a desktop or laptop, JAWS led with 55.0 %, then NVDA with 32.9 % and VoiceOver with 6.5 %. 91.8 % also used a screen reader on a phone or tablet, where 72.2 % named VoiceOver and 29.5 % TalkBack (respondents could name more than one). The pairs of screen reader and browser they used most often were these:

Screen reader and browser Respondents
JAWS with Chrome 31.2 %
NVDA with Chrome 17.3 %
JAWS with Edge 17.0 %
NVDA with Firefox 9.1 %
NVDA with Edge 5.4 %
JAWS with Firefox 5.0 %
VoiceOver with Safari 4.3 %

Two habits follow from the table. Test a screen reader and a browser together, because the browser builds the tree that the screen reader reads, and a page can work in one pair and fail in another. And read the survey for what it is: its own report warns that the sample “was not controlled”, so it may not stand for every screen reader user, and 54.1 % of respondents were in North America.

Where respondents live changes the order. In North America, 72.5 % used JAWS first and 15.6 % NVDA. In Europe the two were level, at 42.8 % and 42.3 %. In Asia NVDA led by 77.4 % to 17 %. NVDA is an open-source screen reader from NV Access (NV Access); VoiceOver is built into Apple’s systems (Apple), and TalkBack is the screen reader included on Android devices (TalkBack help).

Checkpoint

Check: What the screen reader survey shows

  1. Question 1 of 2 In the screen reader survey, which screen reader and browser pair did respondents use most often?

    Choose one answer.

    Show the answer: Question 1 of 2

    Answer: JAWS with Chrome, at 31.2 %

    JAWS with Chrome leads the survey's pairs at 31.2 %. The order changes by region, and the survey sample is not controlled.

  2. Question 2 of 2 A colleague says the survey proves that 55 % of the world's screen reader users use JAWS. What is wrong with that?

    Choose one answer.

    Show the answer: Question 2 of 2

    Answer: The sample was not controlled, over half the respondents were in North America, and regions differ a lot

    Quote the survey as describing its respondents, and check the regional figures before applying it to an audience outside North America.

Your audience’s traffic decides what to test first

The survey describes screen reader users who chose to answer it. Your analytics describe your own audience, but they cannot tell which visitors use assistive technology. A practical order of testing uses both: the audience’s traffic splits the effort between desktop and mobile and between Android and iPhone, and the survey splits the desktop share between its most common pairs, adjusted for the audience’s region. The program below does exactly that for two audiences, using only published shares:

The first six screen reader and browser pairs for two audiences JavaScript · test_matrix.mjs
// Which screen reader and browser pairs to test first, for two audiences. A heuristic, not a
// measurement: the audience's traffic splits the effort between desktop and mobile, and
// between Android and iPhone; the WebAIM Screen Reader User Survey #11 splits the desktop
// share between its most common pairs. Every number below is one of those published shares.

// Desktop pairs: % of survey respondents who use each pair.
const desktopPairs = [
  ['JAWS', 'Chrome', 31.2], ['NVDA', 'Chrome', 17.3], ['JAWS', 'Edge', 17.0],
  ['NVDA', 'Firefox', 9.1], ['NVDA', 'Edge', 5.4], ['JAWS', 'Firefox', 5.0],
  ['VoiceOver', 'Safari', 4.3], ['VoiceOver', 'Chrome', 1.6],
];
// Primary desktop screen reader, all respondents and respondents in Asia (%).
const primary = { all: { JAWS: 55.0, NVDA: 32.9 }, asia: { JAWS: 17, NVDA: 77.4 } };

// Traffic shares (%), from StatCounter: platforms, then mobile operating systems.
const audiences = [
  { name: 'Global audience', desktop: 39.26, mobile: 58.99, android: 69.17, ios: 30.81, region: 'all' },
  { name: 'India-first audience', desktop: 22.1, mobile: 77.3, android: 93.89, ios: 6.05, region: 'asia' },
];

function rank(a) {
  // Re-weight JAWS and NVDA by the audience's region; VoiceOver keeps its survey share.
  const scale = (reader) => (reader in primary.all ? primary[a.region][reader] / primary.all[reader] : 1);
  const scaled = desktopPairs.map(([reader, browser, share]) => [reader, browser, share * scale(reader)]);
  const total = scaled.reduce((sum, p) => sum + p[2], 0);
  const traffic = a.desktop + a.mobile;
  const rows = scaled.map(([reader, browser, share]) => [`${reader} + ${browser}`, 'desktop', (a.desktop / traffic) * (share / total)]);
  rows.push(['TalkBack + Chrome', 'Android', (a.mobile / traffic) * (a.android / (a.android + a.ios))]);
  rows.push(['VoiceOver + Safari', 'iPhone', (a.mobile / traffic) * (a.ios / (a.android + a.ios))]);
  return rows.sort((x, y) => y[2] - x[2]);
}

for (const a of audiences) {
  const rows = rank(a);
  console.log(`${a.name}: ${a.mobile} % mobile, ${a.android} % of it Android`);
  rows.slice(0, 6).forEach(([pair, device, weight], i) => {
    console.log(`  ${i + 1}. ${pair.padEnd(20)}${device.padEnd(9)}${(weight * 100).toFixed(1).padStart(5)} %`);
  });
  const covered = rows.slice(0, 6).reduce((sum, r) => sum + r[2], 0);
  console.log(`  The first six rows carry ${(covered * 100).toFixed(1)} % of the weight.`);
  console.log('');
}

Output

Global audience: 58.99 % mobile, 69.17 % of it Android
  1. TalkBack + Chrome   Android   41.5 %
  2. VoiceOver + Safari  iPhone    18.5 %
  3. JAWS + Chrome       desktop   13.7 %
  4. NVDA + Chrome       desktop    7.6 %
  5. JAWS + Edge         desktop    7.5 %
  6. NVDA + Firefox      desktop    4.0 %
  The first six rows carry 92.8 % of the weight.

India-first audience: 77.3 % mobile, 93.89 % of it Android
  1. TalkBack + Chrome   Android   73.1 %
  2. NVDA + Chrome       desktop    9.3 %
  3. NVDA + Firefox      desktop    4.9 %
  4. VoiceOver + Safari  iPhone     4.7 %
  5. NVDA + Edge         desktop    2.9 %
  6. JAWS + Chrome       desktop    2.2 %
  The first six rows carry 97.1 % of the weight.

Recorded with Node.js 24.21.0 on macOS 26 arm64. To run it yourself: mise exec node@24.21.0 -- node test_matrix.mjs

For a global audience, the first row is TalkBack with Chrome at 41.5 % of the weight, because most mobile traffic in the world runs on Android, and VoiceOver with Safari on an iPhone comes second at 18.5 %. Keep both mobile pairs near the top even when your traffic leans one way: among survey respondents, 72.2 % used VoiceOver on mobile. JAWS with Chrome is the first desktop row, and the first six rows carry 92.8 % of the weight. Tablets are left out, as a small share of traffic.

An audience in India

In StatCounter’s figures for India, 77.3 % of page views come from phones, Android runs 93.89 % of them and Chrome has 88.61 % of browser use. With the survey’s Asian figures for desktop, the program puts TalkBack with Chrome first, at 73.1 % of the weight, and NVDA with Chrome second, at 9.3 %. An India-first plan that starts with JAWS and Chrome on a desktop starts with a pair that carries 2.2 % of the weight.

The weights are a starting order, not a measurement of anyone’s users. Replace the audience’s shares with your own analytics and run it again.

Your own audience

Press Edit and give the global audience desktop: 80, mobile: 18, android: 40, ios: 60, then run it. JAWS with Chrome moves to the first row, VoiceOver with Safari on the iPhone drops below three desktop pairs, and TalkBack with Chrome falls to sixth.

A test matrix turns that order into rows a tester can follow, and each row records the screen reader, the browser and the operating system, each with its version, and the device. Screen readers and browsers change with every release, so a result recorded without versions cannot be repeated or compared later.

Checkpoint

Check: Choosing what to test first

  1. Question 1 of 2 An audience has 77.3 % of its traffic on phones, and 93.89 % of those phones run Android. With the lesson's method, which pair goes first in its test matrix?

    Choose one answer.

    Show the answer: Question 1 of 2

    Answer: TalkBack with Chrome on Android

    The traffic splits the effort first: 77.3 % mobile and 93.89 % Android put TalkBack with Chrome at 73.1 %. NVDA with Chrome is the first desktop row, at 9.3 %.

  2. Question 2 of 2 Why does each row of a test matrix record the versions of the screen reader, the browser and the operating system?

    Choose one answer.

    Show the answer: Question 2 of 2

    Answer: Because behaviour changes between releases, so a result without versions cannot be repeated or compared

    Screen readers and browsers change with every release. Recording the versions turns "it failed" into a result someone can reproduce.

Practise: check a draft test matrix

The exercise gives you a draft matrix to check before testing starts: versions on every row, no pair twice, both desktop and mobile covered, and a mobile row first for a mobile-first audience. Its sample tests run in your browser:

Exercise · Easy · JavaScript

Check a draft test matrix before the testing starts

A test matrix lists the screen reader and browser pairs a team will test, in the order it will test them. Write matrixProblems(matrix, audience) in matrix.mjs so that it finds what a draft matrix is missing before anyone starts.

Each row of matrix is an object with these fields, all strings:

  • reader, browser and os: the screen reader, the browser and the operating system, such as 'NVDA', 'Firefox' and 'Windows'.
  • readerVersion, browserVersion and osVersion: the version of each.
  • platform: 'desktop' or 'mobile'.

audience is { mobile }, the audience's share of mobile traffic in percent, such as { mobile: 77.3 }.

Return an array of problems, in this order:

  1. For each row in turn (its index i in matrix): 'versions:i' when any of its three versions is missing, empty or only spaces, then 'duplicate:i' when an earlier row has the same reader, browser and os.
  2. 'no-desktop' when no row has the platform 'desktop', then 'no-mobile' when no row has the platform 'mobile'.
  3. 'mobile-first' when the audience's mobile share is 50 or more and the first row is not a mobile row. An empty matrix has no first row, so this check does not apply to it.

A matrix with no problems returns []. The sample tests import matrixProblems from matrix.mjs and run in your browser.

Starter code · matrix.mjs

/** True when s is a string with something other than spaces in it. */
function filled(s) {
  return typeof s === 'string' && s.trim() !== '';
}

/** The problems of a draft test matrix: 'versions:i', 'duplicate:i', 'no-desktop', 'no-mobile', 'mobile-first'. */
export function matrixProblems(matrix, audience) {
  const problems = [];
  matrix.forEach((row, i) => {
    if (!filled(row.readerVersion) || !filled(row.browserVersion) || !filled(row.osVersion)) problems.push(`versions:${i}`);
    // Add the duplicate check here.
  });
  // Add the platform checks and the mobile-first check here.
  return problems;
}
The sample tests · matrix.test.mjs
import { test, assert } from 'mysmartcopilot:test';
import { matrixProblems } from './matrix.mjs';

// A row with every field filled in; each test changes what it needs.
const row = (reader, browser, os, platform, extra = {}) => ({
  reader, browser, os, platform, readerVersion: '1.0', browserVersion: '2.0', osVersion: '3.0', ...extra,
});

// The lesson's first six rows for an India-first audience.
const indiaFirst = [
  row('TalkBack', 'Chrome', 'Android', 'mobile'),
  row('NVDA', 'Chrome', 'Windows', 'desktop'),
  row('NVDA', 'Firefox', 'Windows', 'desktop'),
  row('VoiceOver', 'Safari', 'iOS', 'mobile'),
  row('NVDA', 'Edge', 'Windows', 'desktop'),
  row('JAWS', 'Chrome', 'Windows', 'desktop'),
];

test('the lesson matrix for a mobile-first audience has no problems', () => {
  assert.deepEqual(matrixProblems(indiaFirst, { mobile: 77.3 }), []);
});

test('a row without one of its versions is reported by its index', () => {
  const m = [row('TalkBack', 'Chrome', 'Android', 'mobile'), row('NVDA', 'Chrome', 'Windows', 'desktop', { browserVersion: '  ' })];
  assert.deepEqual(matrixProblems(m, { mobile: 60 }), ['versions:1']);
});

test('a pair on the same operating system is a duplicate the second time', () => {
  const m = [row('NVDA', 'Chrome', 'Windows', 'desktop'), row('TalkBack', 'Chrome', 'Android', 'mobile'), row('NVDA', 'Chrome', 'Windows', 'desktop')];
  assert.deepEqual(matrixProblems(m, { mobile: 30 }), ['duplicate:2']);
});

test('the same pair on another operating system is not a duplicate', () => {
  const m = [row('VoiceOver', 'Safari', 'macOS', 'desktop'), row('VoiceOver', 'Safari', 'iOS', 'mobile')];
  assert.deepEqual(matrixProblems(m, { mobile: 30 }), []);
});

test('a matrix needs a desktop row and a mobile row', () => {
  assert.deepEqual(matrixProblems([row('JAWS', 'Chrome', 'Windows', 'desktop')], { mobile: 10 }), ['no-mobile']);
  assert.deepEqual(matrixProblems([row('TalkBack', 'Chrome', 'Android', 'mobile')], { mobile: 90 }), ['no-desktop']);
});

test('from 50 % mobile traffic, the first row is a mobile row', () => {
  const desktopFirst = [row('JAWS', 'Chrome', 'Windows', 'desktop'), row('TalkBack', 'Chrome', 'Android', 'mobile')];
  assert.deepEqual(matrixProblems(desktopFirst, { mobile: 50 }), ['mobile-first']);
  assert.deepEqual(matrixProblems(desktopFirst, { mobile: 49.9 }), []);
});

test('problems come in the order of the rules', () => {
  const m = [row('JAWS', 'Chrome', 'Windows', 'desktop', { osVersion: '' }), row('JAWS', 'Chrome', 'Windows', 'desktop', { readerVersion: undefined })];
  assert.deepEqual(matrixProblems(m, { mobile: 80 }), ['versions:0', 'versions:1', 'duplicate:1', 'no-mobile', 'mobile-first']);
});

test('an empty matrix covers neither platform and has no first row', () => {
  assert.deepEqual(matrixProblems([], { mobile: 80 }), ['no-desktop', 'no-mobile']);
});
A hint

Write one helper, filled(s), that is true when s is a string with something other than spaces in it (typeof s === 'string' && s.trim() !== ''). For duplicates, keep a Set of the keys you have seen, such as ` ${row.reader}|${row.browser}|${row.os} `, and check each row's key before you add it.

The sample tests run on this device, in your browser (QuickJS): nothing is sent to mysmartcopilot.com. The first run downloads JavaScript (about 0.6 MB), which is kept for the next runs. A check in your browser is feedback for you, not proof that the code is right for every input.

Then test yourself on the four ideas of this lesson, from who uses which tool to the order of testing:

Practice that adapts to you

Practise this lesson

9 questions about 4 ideas of this lesson. Each answer is explained at once, and what you get right is kept in this browser.

  1. Question 1 of 9 Which tool does W3C's guide list for Deaf and hard of hearing people?

    Choose one answer.

    Show the answer: Question 1 of 9

    Answer: Captions, a text version of the speech and other sounds, in time with them

    The perception tools W3C describes include captions, transcripts and sign language for people who cannot hear the audio.

  2. Question 2 of 9 Which design choice removes a barrier for many people with cognitive and learning disabilities?

    Choose one answer.

    Show the answer: Question 2 of 9

    Answer: Letting a password manager fill in the sign-in form instead of demanding a remembered password typed by hand

    The table names memory tests at sign-in, unexpected changes and dense text as the first barriers for this group.

  3. Question 3 of 9 Can a screen reader announce a button that the page marked up as a div with a click handler and no role?

    Choose one answer.

    Show the answer: Question 3 of 9

    Answer: No, because the accessibility tree holds no button role for it, and the screen reader can only present what the tree holds

    A role and a name come from the markup. Use a button element, and every assistive technology receives both.

  4. Question 4 of 9 A person uses Android's Switch Access with two switches. What does a page need for them to reach an action?

    Choose one answer.

    Show the answer: Question 4 of 9

    Answer: The action must be exposed as an operable control, so the highlight can stop on it and select it

    Like screen readers and voice control, switch software works from what the page exposes, so a control the tree does not hold cannot be reached.

  5. Question 5 of 9 In the screen reader survey, what percentage of respondents also used a screen reader on a phone or tablet?

    Type a number.

    Show the answer: Question 5 of 9

    Answer: 91.8 % (anything from 91.75 to 91.85 counts)

    91.8 % used a mobile screen reader, so mobile testing is not optional even for a desktop product.

  6. Question 6 of 9 Your product's users are mostly in Asia. Which screen reader should lead your desktop testing, going by the survey?

    Choose one answer.

    Show the answer: Question 6 of 9

    Answer: NVDA, which respondents in Asia used first by 77.4 % to JAWS's 17 %

    The survey's overall shares hide large regional differences. Use the region that matches your audience.

  7. Question 7 of 9 For the global audience, what share of the testing weight did the program give TalkBack with Chrome?

    Type a number.

    Show the answer: Question 7 of 9

    Answer: 41.5 % (anything from 41.45 to 41.55 counts)

    58.99 % of global traffic is mobile and 69.17 % of mobile traffic is Android, which gives TalkBack with Chrome 41.5 % of the weight, the first row.

  8. Question 8 of 9 An internal tool is used on office desktops 95 % of the time. How should its first rows differ from the global audience's?

    Choose one answer.

    Show the answer: Question 8 of 9

    Answer: Desktop pairs such as JAWS with Chrome and NVDA with Chrome come first, with one mobile row kept for the rest

    The order follows the audience. Change the shares to the audience's own, and the same method puts desktop pairs first.

  9. Question 9 of 9 Which fields belong in every row of a test matrix?

    Choose every answer that is right.

    Show the answer: Question 9 of 9

    Answer:

    • The screen reader and its version
    • The browser and its version
    • The operating system and its version

    A row names a pair on a platform, each with its version, so a result can be reproduced on the same setup.

Interview questions

Fresher · What is assistive technology? Name three kinds and what each needs from a page.

Assistive technology is software or hardware that disabled people use to perceive and operate a computer or phone. A screen reader, such as NVDA, JAWS, VoiceOver or TalkBack, reads the screen aloud or shows it in braille; it needs real structure, such as headings, and a name and a role on every control. Voice control lets a person say “click Send”; it needs each control’s name to contain the text the control shows. Switch access lets a person with one or two switches move a highlight through the page; it needs every action to be reachable as a control, not hidden behind a mouse gesture. None of them can repair a page: they present only what the browser exposes from the markup.

Two harder questions of this module start from this lesson’s figures:

Model answers open with any pass: ₹79 for 1 week ($2.99), one payment that never renews.

  1. Fresher to mid

    You have two days to test a new checkout with assistive technology, and about 75 % of the traffic comes from Android phones. Which screen reader and browser pairs do you test, in what order, and what do you record for each?

    Model answer, Pro. Model answers open with any pass; prices are in the notice on this page. First step and follow-ups

  2. Mid to senior

    Every developer on your team uses a Mac, so they propose to test accessibility only with VoiceOver and Safari. What do you say, and what would you test instead, with the evidence for each choice?

    Model answer, Pro. First step and follow-ups

Key takeaways

  • Blind, low-vision, Deaf, motor, cognitive and speech-disabled people use different tools, and each group is stopped first by a different decision in the markup, the style, the script or the content.
  • Assistive technology works from the accessibility tree that the browser builds from your markup; a missing role or name breaks screen readers, voice control and switches alike.
  • WebAIM’s survey puts JAWS and NVDA first on desktop and VoiceOver first on mobile, with large regional differences and a sample that is not controlled.
  • Test pairs, not products: your audience’s traffic decides between desktop and mobile, and between Android and iPhone, and the survey orders the desktop pairs.
  • A test matrix records the screen reader, browser and operating system with their versions, or its results cannot be repeated.

Terms in this lesson

accessibility tree
The tree of objects a browser builds from the DOM for assistive technology: one node for each thing a person can perceive or operate, with its role, name, states and value.
assistive technology
Software or hardware that disabled people use to perceive and operate computers and phones, such as screen readers, braille displays, magnifiers, switches and voice control. It works with what the browser exposes from a page.
refreshable braille display
A device with rows of pins that rise and fall to form braille characters, showing a line of the text a screen reader sends to it. Blind and deafblind people read it by touch.
screen magnifier
Software that enlarges part of the screen, often with colour and pointer options, for people with low vision. It shows only a small part of a page at a time, so layout and focus position matter.
screen reader
Software that reads out what is on the screen, or shows it on a braille display, and lets a person move through and operate a page from the keyboard or with touch gestures. NVDA, JAWS, VoiceOver and TalkBack are screen readers.
switch access
A way of operating a device with one or more switches, such as buttons pressed by hand, head or breath. The software highlights items in turn, and a switch press selects the highlighted one.
voice control
Software that lets a person operate a computer or phone by speaking commands, such as saying a control's name to press it. It relies on each control's accessible name containing its visible label.

References

Related tools

Report a problem with this lesson

Quick answers and tool search

Type to search tools or to get a quick answer, for example 18% of 2500. Use the up and down arrow keys to move through the results, Enter to choose, and Escape to close.