Skip to main content

Accessibility Glossary

WCAG criteria, patterns, and standards — with interactive demos, detection methods, and audit data.

Common interface components (tabs, modals, carousels). Each has an accessible recipe — and well-known ways to get it wrong.

16 terms

Accordion

Use <details>/<summary> or button + aria-expanded + aria-controls. Arrow keys optional. Content panel must be associated with its trigger.

UI Patterns

Breadcrumb

Use nav with aria-label='Breadcrumb', an ordered list, and aria-current='page' on the last item. Separators should be decorative (CSS or aria-hidden). Helps orientation for all users.

UI Patterns

Carousel / Slider

Provide pause/stop controls. Support keyboard navigation (arrows for slides). Role='group' on each slide with aria-roledescription='slide'. Auto-rotation must respect prefers-reduced-motion.

UI Patterns

Combobox / Autocomplete

A text input with a popup list of options. One of the hardest ARIA patterns: role='combobox' + aria-expanded + aria-activedescendant + listbox. Broken implementations are everywhere — test with screen readers.

UI Patterns

Data Table

Use <th> with scope='col'/'row'. Add <caption> or aria-labelledby. Never use tables for layout. Only 19% of observed tables had valid markup in the 2026 WebAIM Million.

UI Patterns

Data Visualization

Charts and graphs need a text alternative — a short summary, a data table, or both. Don't tell data series apart by color alone; add labels, patterns, or direct annotations. Bars, lines, and segments must meet 3:1 non-text contrast.

UI Patterns

Date Picker

Notoriously inaccessible. Must support keyboard navigation (arrow keys for days, page up/down for months). Always provide a text input alternative. Native <input type='date'> is often the best option.

UI Patterns

Dialog / Modal

65% fail

Focus trap inside, Escape to close, focus returns to trigger on dismiss. Use <dialog> or role='dialog' + aria-modal='true'. One of the most commonly broken patterns.

Essential UI Patterns

Form Input Labels

49% fail

Every input needs a visible, programmatically associated <label for='id'>. Placeholder is not a label. Found missing on 49% of homepages. The second most common WCAG failure after contrast.

Essential UI Patterns 1.3.1

Input Purpose / Autocomplete

Inputs collecting personal data (name, email, address, credit card) must have autocomplete attributes. Helps autofill and assistive tech identify fields: autocomplete='email', 'given-name', etc.

UI Patterns 1.3.5

Mobile Navigation

Hamburger menus need: button trigger (not div) with aria-expanded, focus trap when open, Escape to close, focus returns to trigger. Content behind the menu should be inert when open.

UI Patterns

Pagination

Wrap in nav with aria-label='Pagination'. Mark current page with aria-current='page'. Use meaningful link text ('Page 3') not just numbers. Previous/Next need clear labels, not just arrows.

UI Patterns

Tabs

role='tablist' → role='tab' → role='tabpanel'. Arrow keys move between tabs, Tab moves into the panel. aria-selected on active tab. One of the trickiest ARIA patterns to get right.

UI Patterns

Toast / Notification

Transient messages must use role='status' or aria-live='polite' so screen readers announce them. Must not auto-dismiss too quickly (<5s minimum). Must be dismissible. Must not steal focus from the user's task.

UI Patterns

Tooltip

Must be triggerable by focus (not just hover). Dismissible with Escape. Persistent while hovering over it. Use aria-describedby to associate with trigger. Avoid for critical information.

UI Patterns

Video Player

All controls keyboard-accessible. Captions toggle visible and labeled. Volume, play/pause, seek, fullscreen all need accessible names. Captions must be synchronized. Provide transcript link nearby.

UI Patterns