1.3.6 Identify Purpose
WCAG 2.2 · 1.3.6 AAA Perceivable
What it requires
In content built with markup languages, the purpose of user-interface components, icons, and regions can be programmatically determined. Where 1.3.5 Input Purpose (AA) covers only the autocomplete purpose of fields that collect information about the user, 1.3.6 is broader: it asks you to expose the role and meaning of things like navigation, search, buttons (next, close, help), and recurring regions in a machine-readable way. The goal is to let assistive technology and personalization tools adapt the interface — swapping in familiar symbols, simplifying layouts, or hiding non-essential regions — to a user's specific needs.
- People with cognitive and learning disabilities who rely on symbol sets or simplified, decluttered views to understand and operate a page.
- Users of personalization extensions (such as those built on the WAI ARIA / Personalization Semantics work) that need machine-readable purpose to add familiar icons or remove distractions.
- Screen-reader and other AT users who benefit when regions, controls, and icons carry a programmatically determinable role and purpose rather than relying on visual presentation.
How to detect it
| Check | What to look for |
|---|---|
| Regions | Landmarks use native elements or ARIA roles (nav, search,
main, complementary) so each region's purpose is exposed. |
| Controls | Common controls expose purpose programmatically — e.g. links/buttons with clear
roles and accessible names, fields with autocomplete tokens. |
| Icons | Icon-only controls carry an accessible name and, where supported, semantics that identify their well-known purpose (close, menu, search). |
| Screen reader | Navigate by landmarks/regions: each is announced with a meaningful purpose, not generic "region". |
| Automated | Tools like axe can flag missing landmarks, names, and roles, but cannot fully verify that every component's purpose is identified — manual review is required. |
How to fix it
- Use native HTML landmarks (
header,nav,main,aside,footer) or ARIA roles so each region's purpose is programmatically determinable. - Give icon-only controls an accessible name and an appropriate role so their purpose is exposed, not implied by the glyph alone.
- Add
autocompletetokens to inputs that collect user information. - Where you use ARIA/personalization semantics, apply them consistently so personalization tools can map controls to familiar symbols.
<nav aria-label="Primary"> … </nav>
<button type="button" aria-label="Close dialog">
<svg aria-hidden="true" focusable="false">…</svg>
</button>
<input type="email" name="email" autocomplete="email">
Copy-paste tests
Automated coverage
There is no fully automated axe-core rule for 1.3.6 Identify Purpose: tools can detect missing autocomplete tokens, but only a human can confirm the purpose of icons, regions, and links is programmatically identifiable. Treat this as a manual review using the console check and steps below.
Run this in the browser console
// Read-only: surfaces inputs and icon-only controls for manual review.
const inputs = [...document.querySelectorAll('input, select, textarea')]
.filter(el => !el.getAttribute('autocomplete'));
const iconControls = [...document.querySelectorAll('button, a')]
.filter(el => !el.textContent.trim() && el.querySelector('svg, img, [class*="icon"]'));
console.table(inputs.map(el => ({ tag: el.tagName, name: el.name, type: el.type })));
console.log('Icon-only controls (need a purpose label):', iconControls);
[...inputs, ...iconControls].forEach(el => el.style.outline = '2px solid orange');
What to check manually: confirm each outlined input that collects user info carries the correct HTML autocomplete token, and verify icons and regions expose a recognisable name or role so their purpose is programmatically determinable.