wA11y Academy

Learn accessibility
your way.

An adaptive learning platform that teaches digital accessibility in a way that fits your role, learning style, and access needs.

wA11y Academy logo wA11y
Accessibility Preferences
📖 Dyslexia-friendly font Switches to Arial for readability
🌿 Reduced motion Removes transitions & animations
🔆 High contrast Increases border and text contrast
⌨️ Keyboard shortcuts Shows shortcut hints inline
AI Learning Assistant
● Active · Lesson-scoped
⚡ Low-energy mode — responses will be shorter and easier to scan.
✦ AI Response
🎨 Designer View Foundational 🎯 Guided · 15 min

Accessible Buttons 101

Buttons are everywhere — and one of the most commonly broken accessibility elements in digital products. This lesson teaches what makes a button truly accessible, and how to apply that in your role.

🌿 Accessibility Tip
Accessible buttons benefit everyone — not just users with disabilities. Clear labels, visible focus, and adequate touch targets improve usability for keyboard users, mobile users, and anyone in a hurry.
📘 WCAG Coverage
This lesson covers Success Criteria 1.4.3 (Contrast), 2.1.1 (Keyboard), 2.4.7 (Focus Visible), and 4.1.2 (Name, Role, Value) — all Level AA requirements.

The Anatomy of an Accessible Button

Every accessible button shares five core properties regardless of how it looks: a visible label, all interactive states defined, adequate touch target size, sufficient contrast, and a visible focus indicator.

Default
Secondary
Disabled
Destructive

Try tabbing through the buttons above — the focus ring uses the wA11y orange

⚠ Common Mistake
Focus rings are often removed with outline: none to "look cleaner." This breaks keyboard navigation. Use :focus-visible instead — it shows focus rings for keyboard users only.

The 5 essentials

1. Visible labelDescriptive text conveying purpose
2. All states definedDefault, hover, focus, active, disabled
3. 44×44px minimumTouch target per WCAG 2.5.5
4. 4.5:1 contrastText vs button background ratio
5. Visible focus ringMinimum 3px outline-offset, never outline:none

The Most Common Accessible Button Failures

These patterns appear across nearly every product — all are preventable at the design or code stage.

⚠ Failure #1 — The div button
Using <div> or <span> styled to look like a button. Not keyboard-focusable, not announced as a button, doesn't respond to Enter or Space. Fix: always use <button>.
⚠ Failure #2 — Invisible focus ring
outline: none removes the focus indicator. WCAG 2.4.7 failure. Use :focus-visible to preserve focus rings for keyboard users only.
⚠ Failure #3 — Icon-only button with no label
Button with only an icon fails WCAG 4.1.2. Screen readers announce "button" with no context. Fix: add aria-label="Close dialog" or a visually hidden <span>.
⚠ Failure #4 — Vague labels
"Click here", "Submit", "OK" repeated across a page give screen reader users no context. Use action + object: "Save payment method", "Download Q4 report".
🌿 Quick win
Run your page through the axe DevTools browser extension. Failing buttons are flagged with WCAG references and fixes. It catches ~40% of issues automatically — manual testing catches the rest.

Quiz Checkpoint

Three questions to test what you've learned.

Question 1 of 3
A designer removes focus rings with outline: none. Which WCAG criterion does this violate?
Question 2 of 3
A button shows only a trash icon with no text. What is the minimum accessible fix?
Question 3 of 3
Which button label best follows accessible naming conventions?

You completed Accessible Buttons 101

Great work. You've finished this foundational accessibility lesson.

✓ Lesson complete 🎨 Designer 🎯 Guided
Your learning recap

Recommended next lesson
Up next
Accessible Forms
Foundational · 20 min