WCAG levels A, AA and AAA explained
What the WCAG conformance levels A, AA and AAA mean, why AA is the usual target, which criteria sit at each level, and how page conformance works.
6 min read
Every WCAG success criterion carries one of three levels: A, AA or AAA. The levels are not a quality score or a rating of how accessible a site feels. Each one is a bundle of pass/fail criteria, and a page reaches a level only when it passes every criterion in that bundle and in every bundle below it.
This guide explains what goes into each level, why nearly every team targets AA, which AAA criteria are worth adopting anyway, and what "conformance" means once your product is a multi-step flow with third-party pieces in it. If WCAG itself is new to you, start with what WCAG is.
How criteria end up at a level
When the W3C assigned levels, it weighed factors such as how essential a criterion is for some users, whether it can be met for every kind of content, and how much it constrains visual design and functionality. A useful simplification:
| Level | In practice | Examples |
|---|---|---|
| A | The floor. Failing it usually blocks some people completely | 1.1.1 Non-text Content, 2.1.1 Keyboard, 4.1.2 Name, Role, Value |
| AA | The common target. Removes major barriers and touches visual design | 1.4.3 Contrast (Minimum), 2.4.7 Focus Visible, 2.5.8 Target Size (Minimum) |
| AAA | Enhanced. Valuable, but not achievable for all content | 1.4.6 Contrast (Enhanced), 2.5.5 Target Size (Enhanced), 2.4.13 Focus Appearance |
The levels are cumulative. There is no such thing as meeting AA while skipping an A criterion.
Level A, seen in a dApp
Level A failures tend to stop people outright. Common ones in swap, lending and wallet interfaces:
- 1.1.1 Non-text Content. The round arrow button between the "You pay" and "You receive" fields has no accessible name, so a screen reader announces only "button".
- 1.3.1 Info and Relationships. A token balances list built from generic
divelements, where nothing ties the number "1,204.33" to the "Balance" column or the amount field to its label. - 1.4.1 Use of Color. Price changes shown only in green and red, with no sign or arrow.
- 2.1.1 Keyboard and 2.1.2 No Keyboard Trap. A token selector that opens only on a mouse click, or an embedded widget that captures focus and never lets go.
- 2.4.3 Focus Order. Closing the token selector sends focus back to the top of the page instead of to the button that opened it, a problem commonly flagged under this criterion.
- 2.5.3 Label in Name. A button that visibly says "Max" but has
aria-label="Use full balance". A voice control user says "click Max" and nothing happens, because the accessible name doesn't contain the visible word. - 4.1.2 Name, Role, Value. A custom "Expert mode" toggle that screen readers can't identify as a switch or read as on or off.
WCAG 2.2 also added two Level A criteria: 3.2.6 Consistent Help and 3.3.7 Redundant Entry. The second matters for any flow that asks for the same address or amount twice.
Level AA: the usual target
Three reasons make AA the default goal. Laws, public policies and contracts that cite WCAG typically name Level AA. It is achievable for practically any kind of content. And it covers the problems that dominate real audits, such as low contrast and invisible focus.
The AA criteria that crypto interfaces most often run into:
- 1.4.3 Contrast (Minimum): 4.5:1 for normal text, 3:1 for large text. Muted gray labels on dark cards are the classic failure.
- 1.4.10 Reflow: content works at a width of 320 CSS pixels without scrolling in two directions. Content that needs a two-dimensional layout, such as a wide markets table, is an accepted exception.
- 1.4.11 Non-text Contrast: 3:1 for icons and other graphics needed to understand content, and for component boundaries and states.
- 1.4.13 Content on Hover or Focus: tooltips that explain gas or slippage must be dismissible, hoverable and persistent.
- 2.4.7 Focus Visible and 2.4.11 Focus Not Obscured (Minimum): the focus indicator appears, and a sticky header or banner doesn't completely cover the focused element.
- 2.5.8 Target Size (Minimum): pointer targets of at least 24 by 24 CSS pixels, with exceptions. See target size for clickable icons.
- 4.1.3 Status Messages: "Transaction submitted" and "Confirmed" reach screen reader users without moving their focus, covered in announcing transaction status.
- 3.3.8 Accessible Authentication (Minimum): no memory or puzzle test without an alternative or a helper such as paste and password managers.
Level AAA: pick what fits
The W3C itself advises against requiring Level AAA conformance as a general policy for entire sites, because some content can't satisfy all of it. 3.1.5 Reading Level, for example, asks for supplemental material when text requires reading ability beyond the lower secondary education level. A protocol's documentation about liquidation mechanics may not get there.
That doesn't make AAA irrelevant. Several AAA criteria are cheap to adopt as internal standards without claiming the level:
| Criterion | What it asks | Why it fits crypto UIs |
|---|---|---|
| 1.4.6 Contrast (Enhanced) | 7:1 for normal text, 4.5:1 for large | Long addresses and small numeric text are easier to read. #595959 on white is 7.00:1, just over the line |
| 2.5.5 Target Size (Enhanced) | 44 by 44 CSS pixels | Close to what mobile platform guidelines already recommend |
| 2.3.3 Animation from Interactions | Motion triggered by interaction can be turned off | Scroll effects and confetti on a confirmed swap. See respecting reduced motion |
| 2.4.13 Focus Appearance | A focus indicator of a defined size and 3:1 change | Gives designers a measurable spec for focus rings |
What conformance actually means
WCAG defines five conformance requirements. Three of them change how you plan work:
- Conformance level. Every criterion at the claimed level and below is met, or a conforming alternate version of the page exists.
- Full pages. Conformance is for whole pages. You can't exclude the portfolio chart because it's "just a widget".
- Complete processes. When a page is one step in a process, every page in that process must conform. A swap that goes connect, choose tokens, review and confirm conforms at AA only if all four steps do. One inaccessible review screen takes the whole flow out.
The other two are about technology. Content must use technologies in ways that assistive technology actually supports, and content that doesn't conform must not interfere with the rest. The non-interference criteria (1.4.2 Audio Control, 2.1.2 No Keyboard Trap, 2.3.1 Three Flashes or Below Threshold and 2.2.2 Pause, Stop, Hide) apply to everything on the page, even parts you don't rely on for conformance.
A few consequences follow. A component library can't be "AA compliant" on its own; it can make conforming pages easier to build, but conformance is tested on real pages. A wallet connection library or embedded widget is part of your page, so test it before adopting it. And a page either conforms at a level or it doesn't. "Mostly AA" is a useful progress note, not a claim.
Using levels day to day
Levels are most useful as a triage tool. When you log an issue, record the criterion number and its level, then fix Level A items first because they block people outright. Work through AA next, since that is what any formal claim will be measured against. Add the AAA items from the table above as design system rules where they cost little. Tagging issues this way also tells you, at any moment, how far a release is from AA.