Web Accessibility Vocabulary

24 accessibility (a11y) terms in plain English — what each one means, a code example, and the gotcha worth knowing.

Last reviewed:

Sections

Core concepts

a11y

A numeronym for "accessibility" — the "11" counts the letters between the first "a" and the last "y".

# same pattern as i18n (internationalization), l10n (localization)

💡 Purely a typing shortcut, not a different concept — used constantly in issue titles and PR labels.

WCAG

Web Content Accessibility Guidelines — the internationally recognised standard defining what "accessible" means for web content.

# WCAG 2.2 has three conformance levels: A, AA, AAA

💡 Pronounced "wuh-cag" or "wu-cag" — most legal/compliance requirements target level AA, not the strictest AAA.

assistive technology

Any software or hardware a person uses to interact with content differently than the default — screen readers, switch devices, magnifiers.

# screen readers, screen magnifiers, voice control, switch access, braille displays

💡 Often abbreviated "AT" in accessibility docs and tickets.

POUR principles

The four pillars WCAG is built on: content must be Perceivable, Operable, Understandable, and Robust.

# "not perceivable": an image with no alt text
# "not operable": a menu only openable by mouse hover

💡 A useful mental checklist when reviewing a new feature for accessibility gaps.

Semantic markup

semantic HTML

Using HTML elements for their actual meaning (<button>, <nav>, <h1>) instead of generic <div>/<span> styled to look the part.

<!-- Bad -->
<div onclick="submit()">Submit</div>
<!-- Good -->
<button type="submit">Submit</button>

💡 A real <button> gets keyboard focus, Enter/Space activation, and screen-reader announcement for free — a styled <div> gets none of it.

ARIA

Accessible Rich Internet Applications — a set of HTML attributes that fill accessibility gaps for custom, non-native widgets.

<div role="tablist">
  <button role="tab" aria-selected="true">Tab 1</button>
</div>

💡 The "first rule of ARIA" is: don't use ARIA if a native HTML element already does the job.

alt text

A text alternative for an image, read aloud by screen readers and shown if the image fails to load.

<img src="chart.png" alt="Revenue grew 40% year over year">

💡 A purely decorative image should use alt="" (empty, not omitted) so screen readers skip it entirely.

landmark region

A semantic region (<nav>, <main>, <header>, <footer>, <aside>) that lets assistive tech users jump directly to a section of the page.

<header>...</header>
<nav>...</nav>
<main>...</main>
<footer>...</footer>

💡 Screen reader users commonly navigate by landmark first, rather than reading the whole page top to bottom.

aria-label

Provides an accessible name for an element when there's no visible text to use — common on icon-only buttons.

<button aria-label="Close dialog">✕</button>

💡 Overrides any visible text for screen readers — use aria-label carefully, since it can hide real text from AT if applied wrongly.

Assistive technology

screen reader

Software that reads on-screen content aloud (or to a braille display) for users who are blind or have low vision.

# common ones: VoiceOver (macOS/iOS), NVDA/JAWS (Windows), TalkBack (Android)

💡 Screen reader users often navigate by heading, landmark, or link list — not by reading everything sequentially.

accessible name

The text a screen reader actually announces for an element — computed from visible text, alt, aria-label, or aria-labelledby, in a defined priority order.

<button aria-label="Delete item">🗑</button>
<!-- accessible name = "Delete item", not the emoji -->

💡 A missing or wrong accessible name is the single most common accessibility bug in custom components.

live region

A region marked so screen readers automatically announce content changes inside it, without the user needing to navigate there.

<div aria-live="polite">3 items added to cart</div>

💡 "polite" waits for a pause before announcing; "assertive" interrupts immediately — reserve assertive for urgent alerts only.

switch access

A method for operating a device using one or a few physical switches instead of a touchscreen or mouse, scanning through options sequentially.

# used by people with limited fine motor control

💡 Depends entirely on every interactive element being properly focusable and operable by keyboard equivalents.

Visual accessibility

color contrast ratio

A measured ratio between text color and background color — WCAG AA requires at least 4.5:1 for normal text, 3:1 for large text.

# black on white = 21:1 (max possible)
# light gray on white = often below 4.5:1 — fails AA

💡 A common failure: gray placeholder text or "subtle" secondary text that looks fine to a designer but fails the measured ratio.

reflow

Content reorganizing itself to remain usable at 400% zoom without horizontal scrolling — a WCAG 2.1 AA requirement.

# a two-column layout should stack into one column when zoomed heavily

💡 Fixed-width layouts and horizontal-scroll-only tables are the classic reflow failures.

focus indicator

A visible outline or highlight showing which element currently has keyboard focus.

button:focus-visible {
  outline: 2px solid #2563eb;
}

💡 "outline: none" without a replacement is one of the most common and most damaging accessibility mistakes in CSS resets.

prefers-reduced-motion

A CSS media feature that detects a user's OS-level preference to minimize animations, for users with vestibular disorders.

@media (prefers-reduced-motion: reduce) {
  .animation { animation: none; }
}

💡 Should disable or shorten parallax, auto-play carousels, and large motion effects, not just decorative transitions.

Interaction & keyboard

keyboard navigable

Every interactive element on the page can be reached and operated using only the keyboard (Tab, Shift+Tab, Enter, Space, arrow keys).

# test: unplug your mouse and try to complete the task

💡 The single fastest, no-tool-needed accessibility audit anyone can run themselves.

focus trap

Keeping keyboard focus contained within an open modal or dialog, so Tab doesn't silently move focus to content hidden behind it.

# focus cycles: last focusable element -> Tab -> back to first focusable element

💡 A missing focus trap is why some modals let you "tab into" content you can't see, which is deeply disorienting for screen reader users.

skip link

A hidden link, revealed on keyboard focus, that lets a user jump straight past repeated navigation to the main content.

<a href="#main" class="skip-link">Skip to main content</a>

💡 Usually the very first focusable element on the page, visually hidden until it receives keyboard focus.

tab order

The sequence in which elements receive focus when pressing Tab — should match the visual/logical reading order.

<!-- tabindex="0" adds to natural order; positive tabindex values are almost always a bug -->
<div tabindex="0">Focusable div</div>

💡 A positive tabindex value hijacks the natural order and is considered an anti-pattern in almost every real case.

Testing

axe / accessibility linter

Automated tools that scan a page for common accessibility violations — missing alt text, low contrast, missing labels.

npx @axe-core/cli https://example.com

💡 Automated tools catch roughly 30-40% of real issues — manual keyboard and screen-reader testing is still required.

manual accessibility audit

Testing a page by hand — keyboard-only navigation, an actual screen reader, and zoomed-in reflow checks — rather than relying on automated tools alone.

# checklist: tab through the page, then re-do the flow with VoiceOver/NVDA turned on

💡 The only way to catch issues automated scanners fundamentally can't detect, like a confusing reading order or a misleading accessible name.

accessibility conformance level

How closely a page or product meets WCAG — Level A (minimum), AA (the common legal/compliance target), or AAA (the strictest, rarely required in full).

# "WCAG 2.2 Level AA compliant" is the most common compliance claim

💡 Claiming AAA compliance for an entire site is unusual — some AAA success criteria are intentionally very hard to satisfy universally.

English phrases engineers use

  • "That icon button is missing an accessible name — add an aria-label."
  • "This text fails color contrast — bump the gray a couple shades darker."
  • "Can you tab through this flow before we ship it?"
  • "The modal needs a focus trap — right now Tab escapes behind it."
  • "Don't set outline: none without a real focus indicator to replace it."
  • "Let's run this through axe before the PR, then do a manual pass."