← design

Accessibility (a11y) — a working reference

A reference for anyone building web and mobile apps. Last updated June 2026.

Accessibility — often abbreviated a11y (an “a”, eleven letters, then a “y”) — is the practice of building products that people with disabilities can perceive, understand, navigate and use on equal terms with everyone else. It is part craft, part law, and almost entirely a matter of not accidentally locking people out of things you built for them.

This page is a single-sitting reference: what a11y is and who it serves, the WCAG standard explained from the top (its versions, the four principles, and the A / AA / AAA conformance levels), the practical techniques that matter most, what each major market requires legally, what changes on mobile, and how to test. It leans on examples throughout — the fastest way to understand and to share this stuff is a good story.

Why it matters

There are three honest answers, and you don’t have to choose between them.

It’s a lot of people. The WHO estimates that around 1.3 billion people — roughly one in six of us — live with a significant disability. That number is not a niche; it is larger than China. And it is not static: everyone who lives long enough acquires impairments — vision, hearing, dexterity, memory — so designing for disability is, in the long run, designing for your future self.

It’s the right thing. A digital service that can’t be used by a blind person is, in 2026, the equivalent of a shop with a step at the door and no ramp. Most of us would rather not build the step.

It’s good business and increasingly the law. Accessible products reach more customers, rank better in search (much of accessibility is just clean, semantic, well-labelled markup), and keep you on the right side of a fast-tightening body of regulation. The same work pays off three ways.

Fun example

Captions were invented for Deaf viewers. Today most short-form video on social platforms is watched with the sound off — on trains, in open-plan offices, next to a sleeping baby — so captions are now a mainstream growth feature. The accessibility fix became the default experience.

Who it's for

“Disability” covers a wide range, and good design has to hold all of it in mind at once. A useful way to think about it (from Microsoft’s Inclusive Design work) is that every impairment comes in three flavours: permanent, temporary and situational. One arm might be amputated, in a cast, or simply holding a baby — and a one-handed interface helps all three.

Worth sharing

Disability is often situational and temporary. Over a year, far more people benefit from your one-handed checkout flow because they were carrying shopping than because they have a permanent motor impairment. You are almost never designing for “them”; you are designing for everyone, on their worst day.

The curb-cut effect

The curb cut — the little ramp where a pavement meets the road — was fought for by wheelchair users in 1970s Berkeley. Once installed, it turned out to help everyone: parents with prams, travellers with wheeled luggage, delivery workers with trolleys, cyclists, kids on scooters. Accessibility researchers call this the curb-cut effect: a feature built for a disabled minority routinely becomes a convenience for the whole population.

A raised pavement with a sloped curb cut down to the road. A wheelchair, a pram and a wheeled suitcase line up to roll down the same ramp. road level pavement
The curb cut was won by wheelchair users in 1970s Berkeley — and now the pram, the wheeled suitcase, the delivery trolley and the cyclist all take the same ramp. Build the ramp once; everyone rolls down it.

The digital world is full of curb cuts that you already rely on:

The lesson for a builder: accessibility isn’t a tax on the “normal” product. Done well, it is the better product.

WCAG, the standard

When people ask “is this accessible?” the answer almost always routes through one document: the Web Content Accessibility Guidelines (WCAG, pronounced “wuh-cag”), published by the W3C’s Web Accessibility Initiative (WAI). WCAG is the de-facto global standard; nearly every accessibility law in the world either references it directly or copies its requirements.

WCAG is structured as a tree, and it pays to know the four words:

WCAG's structure as a funnel: 4 principles, then 13 guidelines, then 86 testable success criteria graded A/AA/AAA — the level you conform to — and finally optional advisory techniques. 4 Principles Perceivable · Operable · Understandable · Robust 13 Guidelines broad goals — not themselves testable 86 Success criteria testable rules, each Level A / AA / AAA ▲ what you actually conform to Techniques — advisory recipes, optional
The shape of the standard. You meet WCAG by satisfying its success criteria at your target level; principles and guidelines organise them, and techniques are just known-good ways to get there.

Crucially, WCAG is technology-agnostic and outcome-based. It almost never says “use this HTML element”; it says “the information must be available to assistive technology.” That’s why the same standard governs websites, native mobile apps, PDFs and kiosks.

WCAG versions

WCAG has evolved, and which version you must meet depends on your jurisdiction. The versions are additive: 2.2 contains everything in 2.1, which contains everything in 2.0. Targeting the newest version you can is the safe move.

VersionReleasedWhat it added
WCAG 1.0 1999 Historic. Tied to specific HTML techniques; superseded and not used for compliance today.
WCAG 2.0 2008 The foundation still in force. Introduced the POUR principles and A/AA/AAA levels (61 success criteria). Adopted as international standard ISO/IEC 40500. Still the baseline that US Section 508 references.
WCAG 2.1 2018 Added 17 criteria (78 total) for mobile/touch, low vision and cognitive needs — reflow, orientation, pointer gestures, text spacing, non-text contrast. The most common legal target worldwide.
WCAG 2.2 2023 Added 9 criteria (focus appearance, dragging movements, a 24 px minimum target size, consistent help, accessible authentication, redundant entry) and retired the old 4.1.1 “Parsing”. The current recommendation — aim here for new work.
WCAG 3.0 Draft A ground-up redesign (once code-named “Silver”). Replaces pass/fail with a graded scoring model (bronze/silver/gold) and broadens scope. Years from being a finished standard — do not build to it yet, but know it’s coming.

Rule of thumb: build to WCAG 2.2 AA. It satisfies almost every current law (most of which still say 2.1 AA or 2.0 AA) and future-proofs you for the rest.

The POUR principles

Everything in WCAG hangs off four principles. If content fails any one of them, some group of people simply can’t use it. The mnemonic is POUR:

Four pillars labelled P, O, U and R — Perceivable, Operable, Understandable, Robust — holding up a lintel reading 'an accessible experience'. An accessible experience P Perceivable sense it O Operable drive it U Understandable grasp it R Robust trust it
Four pillars holding up the experience — lose any one and someone is locked out. Perceivable (can they sense it?), Operable (can they drive it?), Understandable (can they grasp it?), Robust (will their tools cope?).
Mnemonic

Perceivable, Operable, Understandable, Robust. If a design decision doesn’t obviously serve one of those four, you can usually stop arguing about it.

Conformance: A, AA, AAA

Every success criterion carries a level, and the levels are cumulative: to claim AA you must meet all of A and AA.

Three rising steps: Level A (essential) at the bottom, Level AA (the real-world target, highlighted) in the middle, and Level AAA (gold standard) at the top, each tier including the ones below it. A essential — the floor AA the real-world target ◀ aim here AAA gold — where you can cumulative: AAA includes AA includes A
The levels stack. To claim AA you meet every A and AA criterion; AAA adds the strictest tier on top. Almost every law and contract means AA.
Contrast, the three tiers, made concrete

Body text on background must hit a contrast ratio of 4.5:1 for AA and 7:1 for AAA. Large text (≥ 24 px, or 18.66 px bold) gets a break: 3:1 for AA, 4.5:1 for AAA. That fashionable light-grey-on-white placeholder text? Almost certainly failing even Level A of common sense, let alone AA.

Key success criteria

WCAG 2.2 has 86 success criteria; you don’t need them memorised, but a working developer should recognise the heavy hitters. These are the ones that catch the most users and show up most in audits and lawsuits.

CriterionLevelIn plain English
1.1.1 Non-text ContentAEvery image, icon and control has a text alternative (or is marked decorative).
1.2.2 CaptionsAPre-recorded video has synchronised captions.
1.3.1 Info & RelationshipsAStructure is in the markup — real headings, lists, labels, table headers — not faked with styling.
1.4.1 Use of ColorAColour is never the only way information is conveyed.
1.4.3 Contrast (Minimum)AAText contrast ≥ 4.5:1 (3:1 for large text).
1.4.4 Resize TextAAText can zoom to 200% without breaking the layout or losing content.
1.4.10 ReflowAAContent reflows to a single column at 320 px-wide / 400% zoom — no two-way scrolling.
1.4.11 Non-text ContrastAAUI components and graphics (button borders, icons, focus rings) hit 3:1.
2.1.1 KeyboardAEverything works with a keyboard alone.
2.1.2 No Keyboard TrapAYou can tab out of any component you tabbed into.
2.3.1 Three FlashesANothing flashes more than 3× per second (seizure safety).
2.4.3 Focus OrderATab order follows a sensible, meaningful sequence.
2.4.4 Link PurposeALink text makes sense out of context (kill “click here”).
2.4.7 Focus VisibleAAThe keyboard focus indicator is always visible.
2.5.3 Label in NameAA control’s visible label is part of its accessible name (so voice control can target it).
2.5.8 Target Size (Min)AANew in 2.2. Touch/click targets are at least 24×24 px (with spacing exceptions).
3.1.1 Language of PageA<html lang> is set so screen readers use the right voice.
3.3.1 Error IdentificationAForm errors are described in text, not just a red glow.
3.3.2 Labels or InstructionsAEvery input has a programmatic label.
3.3.8 Accessible AuthenticationAANew in 2.2. No cognitive puzzle (e.g. transcribe a CAPTCHA, remember a code) required to log in.
4.1.2 Name, Role, ValueACustom components expose what they are, what they’re called and their state to assistive tech.

The rest of this page walks through the techniques behind these, grouped the way you actually build.

Semantic HTML first

The single highest-leverage accessibility habit costs nothing and is faster to write: use the right HTML element. Native elements come with keyboard behaviour, focus management, roles and states already wired up, for free, in every browser and screen reader. The moment you rebuild a button out of a <div>, you sign up to re-implement all of that by hand — and you will forget some of it.

Don't A “button” the keyboard can’t reach and screen readers don’t announce:
<div class="btn"
  onclick="buy()">Buy</div>
Do A real button — focusable, Enter/Space work, announced as “Buy, button”:
<button type="button"
  onclick="buy()">Buy</button>

The same goes for <a> for navigation, <nav>, <main>, <header> and <footer> landmarks (screen-reader users jump between them), one <h1> per page with a logical heading outline (they navigate by heading, like a table of contents), real <ul>/<ol> lists, and <label> tied to every input. Markup is the accessibility layer.

Try this

Turn on your screen reader (see testing) and press the key that lists all headings. On a well-built page you get a clean outline you can leap around. On a page that styled <div>s to look like headings, you get nothing — the user is stuck reading top to bottom, like being handed a book with no chapters.

A handy diagnostic is the “skip link.” The first focusable thing on many good sites is a hidden “Skip to main content” link that appears when you Tab to it — it lets keyboard and screen-reader users jump past the navigation they’ve heard fifty times. Small touch, big relief.

Fun example — write for the ear

Screen readers read literally, so the words you author matter too. The promo hashtag #susanalbumparty (“Susan Album Party”) became infamous when read aloud as something far ruder; capitalising each word — #SusanAlbumParty — makes the reader say it correctly. Emoji are the same: a cheery 🎉🎉🎉 is announced “party popper, party popper, party popper,” and I ❤️ NY becomes “I red-heart N Y.” CamelCase your hashtags, and use emoji in moderation.

Alternative text

alt text is the text a screen reader speaks (and search engines read, and that shows when an image fails to load) in place of an image. Getting it right is a craft: describe the function or meaning in context, not every pixel.

Don't Useless or redundant:
<img src="ceo.jpg" alt="image">
<img src="ceo.jpg" alt="ceo.jpg">
<img src="ceo.jpg"
  alt="Photo of a photo of...">
Do Convey the meaning that matters here:
<img src="ceo.jpg"
  alt="Asha Rao, CEO,
       speaking at the 2026 keynote">

The rules that cover almost every case:

Fun example — the cat photo

Same picture, three contexts, three correct alts. On a pet-adoption page: “Tabby kitten with one white paw, about eight weeks old.” In an article about pupil dilation: “Close-up of a cat’s eye with a fully dilated round pupil.” As the clickable site logo: “Catpix — home.” The right alt text isn’t a description of the image; it’s a description of why the image is there.

Colour & contrast

Two separate rules, often confused:

1. Don’t rely on colour alone (SC 1.4.1). Roughly 1 in 12 men can’t reliably tell red from green. So a form field that goes red on error, a “required” label that’s just a red asterisk, or a chart with red and green lines and no other cue, all fail people who can’t see the difference.

Don't Status by colour only:
<span style="color:red">●</span> Failed
<span style="color:green">●</span> Passed
Do Colour plus text or shape:
✗ Failed  (red)
✓ Passed  (green)

2. Make contrast sufficient (SC 1.4.3 / 1.4.11). Text needs 4.5:1 against its background (3:1 if large); non-text essentials — an input’s border, an icon that carries meaning, the focus ring — need 3:1. A contrast checker takes the guesswork out; you give it two colours and it tells you the ratio and which levels it passes.

Four samples of grey text on white at increasing darkness: 1.9 to 1 fails, 3.0 to 1 passes for large text only, 4.5 to 1 passes AA, and near-black 21 to 1 passes AAA. Text 1.9:1 ✗ fails Text 3.0:1 large text only Text 4.5:1 ✓ AA Text 21:1 ✓ AAA
The same word, darkening left to right, on white. Light-grey body text is the most common contrast failure on the web — and the easiest to fix. Aim for 4.5:1 on normal text.
Worth sharing

The most common single failure in automated scans, year after year, is low-contrast text — usually grey placeholder or caption text that a designer loved on a calibrated monitor in a dark studio, and that vanishes on a cheap phone in daylight. It is also one of the easiest things to fix: darken the grey.

Keyboard & focus

A large group never touches a mouse: blind users (a screen reader is driven by the keyboard), people with motor impairments using switches or alternative keyboards, and plenty of power users. If it works with a keyboard, it works for them. The test is simple and you can do it right now: put the mouse away and Tab through your page.

Don't Strip the focus ring because it’s “ugly”:
:focus { outline: none; }
Do Style a clear one (and only for keyboard users):
:focus-visible {
  outline: 2px solid #5b4636;
  outline-offset: 2px;
}

For modals and menus you do have to manage focus deliberately: move focus into the dialog when it opens, keep Tab cycling within it while it’s open (a focus trap, the good kind), and return focus to the element that opened it on close. This is exactly the plumbing native <dialog> now gives you for free — another argument for semantics first.

Forms & errors

Forms are where accessibility most often makes or breaks a transaction — sign-up, checkout, booking. The essentials:

Don't Placeholder-as-label:
<input type="text"
  placeholder="Email">
Do Visible, linked label and hints:
<label for="email">Email</label>
<input id="email" type="email"
  autocomplete="email"
  aria-describedby="email-hint">
<p id="email-hint">We’ll only use this
  to send your receipt.</p>
Fun example — the CAPTCHA tax

“Type the wavy letters” CAPTCHAs are unsolvable for many blind users, and image grids (“select all the traffic lights”) are a barrier for low-vision and some cognitive users. WCAG 2.2 added SC 3.3.8 Accessible Authentication partly for this: don’t make logging in a puzzle. Prefer passkeys, “magic links,” or at least an audio alternative and a way through that doesn’t test eyesight or memory.

ARIA, used sparingly

ARIA (Accessible Rich Internet Applications) is a set of HTML attributes — role, aria-label, aria-expanded, aria-live and friends — that describe the role, name and state of an element to assistive technology. It is powerful and necessary for genuinely custom widgets (tabs, comboboxes, tree-views, live-updating regions). It is also the most misused tool in the kit.

The first rule of ARIA: don’t use ARIA. If a native HTML element or attribute does what you need, use it instead — you’ll get the behaviour for free and you can’t get it wrong.

The reason for the warning: ARIA changes only what assistive tech announces — it adds no behaviour. Put role="button" on a <div> and a screen reader will say “button,” but it still won’t be focusable or respond to Enter unless you add all of that yourself. So a bad ARIA attribute is worse than none: it actively lies to the user. Used well, ARIA shines for things HTML can’t express:

For full custom widgets, follow the ARIA Authoring Practices Guide (APG) patterns rather than improvising — they spell out the exact roles, states and keyboard interactions expected.

Media: captions & more

Audio and video carry obligations that scale with how much information lives in them:

Worth sharing

Captions are the textbook curb cut: invaluable to Deaf viewers, and used by a huge silent-scrolling majority, language learners, and anyone watching a thick accent or a mumbled line. Auto-captions have gotten good — but “good enough to be funny” isn’t good enough to rely on; a human pass still matters for names, jargon and homophones.

Motion & seizures

Two distinct risks live here, and one of them is a genuine safety issue.

Seizures (SC 2.3.1). Content must not flash more than three times in any one second. Rapid, high-contrast flashing — especially red — can trigger seizures in people with photosensitive epilepsy. This is not theoretical: a 1997 Pokémon episode with a few seconds of flashing red-and-blue sent hundreds of Japanese children to hospital. Avoid flashing; if you must, keep it slow, small and low-contrast.

Vestibular disorders. Large parallax effects, zooming transitions, and big sliding animations can cause real nausea, dizziness and migraine for people with vestibular sensitivity. The fix is built into the platform: honour the user’s prefers-reduced-motion setting (SC 2.3.3 is the AAA criterion, but respecting it is simply good manners at any level):

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}

Let big motion be opt-in, keep essential motion subtle, and never tie meaning to an animation a user has asked you to switch off.

Mobile apps

WCAG applies to native mobile apps too — you map its outcomes onto platform APIs instead of HTML — and the EU’s EN 301 549 explicitly covers mobile software. The principles are identical; the mechanics differ.

What changes on mobile:

Three tap targets to scale — 24px (WCAG minimum), 44pt (Apple) and 48dp (Android) — each with a translucent fingertip overlaid; the fingertip overspills the smallest target. 24 px WCAG 2.5.8 min 44 pt Apple 48 dp Android translucent circle ≈ an adult fingertip (~9–10 mm)
Drawn to scale. A fingertip is bigger than a 24 px target, which is why the platform sizes — 44 pt on iOS, 48 dp on Android — are the comfortable goal, not just the WCAG floor.

Both platforms publish accessibility guidance worth bookmarking: Apple’s Human Interface Guidelines → Accessibility and Google’s Material / Android accessibility docs. They also ship excellent testing tools (Xcode’s Accessibility Inspector; Android’s Accessibility Scanner).

Try this

Turn on VoiceOver (iOS: triple-click the side button once you’ve set the shortcut) or TalkBack (Android: hold both volume keys) for five minutes and try to complete one task in your own app with the screen off. It is the single most clarifying thing a mobile developer can do — uncomfortable, and worth it.

Assistive technologies

Knowing the tools your users actually use makes abstract criteria concrete.

The law, market by market

Accessibility is increasingly a legal requirement, not a nicety — and the obligations are tightening fast. Almost every regime below points back at WCAG, which is why building to WCAG 2.1/2.2 AA covers most of the planet at once. The table is an orientation map, not legal advice (see the note below it); confirm the current rule for your sector and country.

MarketKey law(s)What & who
United States ADA; Section 508; ACAA; CVAA The ADA (1990) is read by courts to cover websites/apps of “public accommodations” — the engine behind thousands of lawsuits a year. A 2024 DOJ rule requires state & local government (ADA Title II) to meet WCAG 2.1 AA by 2026/2027. Section 508 binds federal agencies (WCAG 2.0 AA). ACAA covers airline sites; CVAA covers communications/video.
European Union EAA (2019/882); Web Accessibility Directive; EN 301 549 The European Accessibility Act applies from 28 June 2025 to many private-sector products & services — e-commerce, banking, ticketing, e-books, transport. The Web Accessibility Directive (2016) already covers public-sector sites and apps. The harmonised standard EN 301 549 (which incorporates WCAG, currently 2.1 AA, and covers web, mobile, software, hardware and docs) is how you demonstrate conformance.
United Kingdom Equality Act 2010; PSBAR 2018 The Equality Act requires “reasonable adjustments” — broad, and applies to private business. The Public Sector Bodies Accessibility Regulations require WCAG 2.1 AA plus a published accessibility statement. UK firms selling into the EU still face the EAA.
Canada ACA 2019; AODA (Ontario); provincial acts The federal Accessible Canada Act targets a barrier-free Canada by 2040. Ontario’s AODA requires WCAG 2.0 AA for many organisations; Manitoba, BC and Quebec have their own.
Australia Disability Discrimination Act 1992 The DDA makes inaccessible services unlawful; government mandates WCAG 2.x AA. The landmark Maguire v SOCOG (2000) found the Sydney Olympics website unlawfully inaccessible.
Elsewhere Israel; Japan; South Korea; India; … Most have WCAG-based law or standards — Israel’s IS 5568 (WCAG 2.0 AA), Japan’s JIS X 8341-3, South Korea’s KWCAG, India’s RPwD Act 2016 + GIGW. The pattern is global convergence on WCAG AA.

Not legal advice. Laws, versions and deadlines change and vary by sector and sub-jurisdiction. Treat this as a starting map and verify the current requirement with a qualified source before relying on it.

Fun example — the pizza that went to the Supreme Court

In Robles v. Domino’s Pizza, a blind customer couldn’t complete an order on Domino’s website or app with his screen reader. Domino’s argued the ADA shouldn’t apply to a website at all; the Ninth Circuit disagreed, and in 2019 the US Supreme Court declined to hear the appeal — letting that ruling stand. The takeaway businesses remember: “we’re just a website” is not a defence, and retrofitting after a lawsuit costs far more than building it in.

Requirements checker

Pick what you’re building and where it ships, and this tool sketches the standard to target, the laws likely to apply and a starter checklist — then the built-in AI can tailor it to your specific project. It’s here to give you an idea of scope, not a ruling: general guidance, not legal advice.

Markets you serve

How to test

No single tool finds everything. Automated scanners reliably catch only a minority of issues (industry estimates hover around 30–40%); the rest need a human. Use all three layers:

Cheap, fast smoke test

Three things, two minutes, no tools: (1) Tab through the page — can you reach and see everything? (2) Zoom to 200% — does it still work? (3) Read every link out loud with your eyes shut — do they still make sense? If all three pass, you’ve already cleared the bar that most sites fail.

Myths & mistakes

Resources

The whole field reduces to one habit: build with the grain of the platform — real elements, real labels, enough contrast, keyboard operable, motion optional — and test with the tools your users actually use. Do that, and accessibility stops being a checklist you dread and becomes just… building things properly.

Some of the figures in the charts and tables on this page were compiled with the help of AI tools and may contain errors or be out of date. They are shared in good faith for general interest only — not as professional, financial, investment or purchasing advice — and should be checked against the cited primary sources before you rely on them.