Overview
Touch target sizing is one of the most common accessibility failures on mobile — and one of the easiest to fix. WCAG 2.2 introduced Success Criterion 2.5.8 Target Size (Minimum) at the AA level, requiring interactive targets to be at least 24x24 CSS pixels, or to have sufficient spacing so the target plus its surrounding unoccupied space reaches that threshold. Apple’s Human Interface Guidelines and Google’s Material Design both recommend a minimum of 44x44px for comfortable touch targets. Default browser checkboxes and radio buttons are only 13-16px, making them too small for many users with motor impairments, tremors, or limited dexterity.
WCAG Criteria:
- 2.5.8 Target Size (Minimum) — interactive targets must be at least 24x24 CSS pixels, or have sufficient spacing to reach an equivalent area (Level AA, WCAG 2.2)
- 2.5.5 Target Size (Enhanced) — interactive targets should be at least 44x44 CSS pixels (Level AAA)
Key requirements:
- All interactive elements must be at least 24x24 CSS pixels (AA) or 44x44 CSS pixels (AAA)
- If the target itself is smaller than 24px, its surrounding unoccupied spacing must compensate
- Apple and Google both recommend 44x44px minimum for mobile touch targets
- Default browser checkboxes and radio buttons (13-16px) fail the minimum requirement
- Inline links within text are exempt from 2.5.8, but standalone icon buttons are not
Touch Target Sizing
Tiny Packed Buttons vs. Properly Sized Touch Targets
<!-- Tiny 16x16px buttons packed together — fails WCAG 2.5.8 -->
<div style="display: flex; gap: 2px;">
<button
style="width: 16px; height: 16px; padding: 0;"
aria-label="Close item 1"
>
×
</button>
<button
style="width: 16px; height: 16px; padding: 0;"
aria-label="Close item 2"
>
×
</button>
<button
style="width: 16px; height: 16px; padding: 0;"
aria-label="Close item 3"
>
×
</button>
</div>Close these items:
Each button is 16×16px with 2px gap. Extremely difficult to tap accurately on mobile.
<!-- 44x44px buttons with adequate spacing — meets WCAG 2.5.5 (AAA) -->
<div style="display: flex; gap: 8px;">
<button
style="
min-width: 44px;
min-height: 44px;
padding: 12px;
"
aria-label="Close item 1"
>
×
</button>
<button
style="
min-width: 44px;
min-height: 44px;
padding: 12px;
"
aria-label="Close item 2"
>
×
</button>
<button
style="
min-width: 44px;
min-height: 44px;
padding: 12px;
"
aria-label="Close item 3"
>
×
</button>
</div>Close these items:
Each button is 44×44px with 8px gap. Comfortable to tap on any device.
What’s wrong with the tiny packed buttons?
- Each button is only 16x16px — well below the 24px AA minimum and the 44px AAA recommendation
- The 2px gap means there is almost no unoccupied space between targets, so mis-taps are extremely likely
- Users with motor impairments, tremors, or limited dexterity will struggle to hit the correct button
- On mobile devices, a fingertip covers roughly 40-50px, making 16px targets nearly impossible to tap accurately
What the properly sized buttons provide:
min-width: 44px; min-height: 44pxmeets the AAA (enhanced) target size recommendationpadding: 12pxensures the tap area extends well beyond the visible icon- 8px gap between buttons adds additional spacing to prevent accidental activation of adjacent targets
- Comfortable for users on touch devices, with motor impairments, and for all pointer types
What the screen reader announces:
| Version | Announcement |
|---|---|
| Tiny buttons (16x16px) | “Close item 1, button” — announced correctly, but physically impossible to activate reliably on touch |
| Sized buttons (44x44px) | “Close item 1, button” — same announcement, but the target is large enough to activate comfortably |
Common target sizing failures:
- Default checkboxes and radio buttons (13-16px) without enlarged click/tap areas
- Icon-only toolbar buttons without padding
- Close/dismiss buttons on toasts, modals, and banners
- Pagination links and breadcrumb items on mobile layouts
- Social media icon rows in footers