Accessible Authentication (Enhanced)
A cognitive function test is not required for any authentication step, with the object-recognition and personal-content exceptions of 3.3.8 removed.
Who this affects
Users with cognitive disabilities, held to the strictest standard — even "select all the images with a bus" is disallowed.
The failure and the fix
Each example below is a self-contained page, loaded in a frame so its markup cannot affect this page. Open either one on its own to test it with a keyboard or screen reader.
Fails 3.3.9
Open the failing example in a new tab
fail.html — the problem
<h1>Sign in</h1>
<!-- This page satisfies 3.3.8 at AA:
- autocomplete tokens are present, so a password manager can fill the form
- paste is not blocked
- the CAPTCHA is OBJECT RECOGNITION, which 3.3.8 explicitly permits
3.3.9 at AAA removes the object-recognition exception, and the
personal-content exception with it. "Select every image with a book" is
still a cognitive function test: it requires the user to perceive images,
categorise them, and hold the instruction in working memory. -->
<form>
<div class="field">
<label for="u">Email address</label>
<input type="email" id="u" autocomplete="username">
</div>
<div class="field">
<label for="p">Password</label>
<input type="password" id="p" autocomplete="current-password">
</div>
<fieldset>
<legend>Select every image that shows a book</legend>
<div class="grid">
<button type="button" class="cell" aria-pressed="false" aria-label="Image 1: a book">📕</button>
<button type="button" class="cell" aria-pressed="false" aria-label="Image 2: a cup">☕</button>
<button type="button" class="cell" aria-pressed="false" aria-label="Image 3: a book">📗</button>
<button type="button" class="cell" aria-pressed="false" aria-label="Image 4: a tree">🌳</button>
<button type="button" class="cell" aria-pressed="false" aria-label="Image 5: a book">📘</button>
<button type="button" class="cell" aria-pressed="false" aria-label="Image 6: a car">🚗</button>
</div>
</fieldset>
<button type="submit" class="button">Sign in</button>
</form>
Meets 3.3.9
Open the passing example in a new tab
pass.html — the fix
<h1>Sign in</h1>
<!-- FIX 1: a passkey. The user proves who they are with their device -
fingerprint, face, or a hardware key. Nothing is recalled, transcribed or
solved, so there is no cognitive function test at any point. This is the
cleanest way to satisfy 3.3.9, and it is also more secure than a password. -->
<div class="opt">
<h2>Sign in with a passkey</h2>
<p>Use your device's fingerprint, face recognition or security key. Nothing to
remember and nothing to type.</p>
<button type="button" class="button">Continue with a passkey</button>
</div>
<!-- FIX 2: a one-time sign-in link by email. The user clicks a link; they do
not transcribe a code, which would itself be a cognitive function test
unless it can be pasted. -->
<div class="opt">
<h2>Sign in with an email link</h2>
<p>We will email you a link that signs you in. No password, no code to copy.</p>
<div class="field">
<label for="e">Email address</label>
<input type="email" id="e" autocomplete="username">
</div>
<button type="button" class="button button--secondary">Email me a sign-in link</button>
</div>
<!-- FIX 3: the password route remains for people who prefer it, with paste
allowed and correct autocomplete tokens so a password manager does the
remembering. Keeping this option is important: removing choice is its own
accessibility problem. -->
<div class="opt">
<h2>Sign in with a password</h2>
<div class="field">
<label for="u">Email address</label>
<input type="email" id="u" autocomplete="username">
</div>
<div class="field">
<label for="p">Password</label>
<input type="password" id="p" autocomplete="current-password">
</div>
<button type="submit" class="button">Sign in</button>
</div>
<!-- No CAPTCHA of any kind. Where you need bot protection without a cognitive
function test: server-side risk scoring, rate limiting, proof-of-work
challenges the browser solves invisibly, or a hardware factor.
How the two criteria differ:
3.3.8 (AA) no cognitive function test, EXCEPT object recognition or
identifying non-text content the user provided
3.3.9 (AAA) no cognitive function test, no exceptions
And remember what 3.3.8 already establishes: "remember your password" IS a
cognitive function test. It is only permitted at AA because password
managers exist - which is precisely why blocking paste breaks conformance. -->
How to test it
Confirm authentication relies on something other than recall or puzzle solving: a passkey, a hardware token, an email or SMS link, or biometrics.
-
Automated
Requires assessing the authentication mechanisms offered.
No axe rule maps to this criterion. It has to be checked by a person.
-
Keyboard
Unplug the mouse. Move through the page with Tab, Shift+Tab, Enter, Space and the arrow keys. See the keyboard testing script.
-
Screen reader
Listen to both examples with NVDA, JAWS, VoiceOver or TalkBack and compare what is announced. See the screen reader cheat sheets.
-
Visual
Zoom to 200% and 400%, narrow the viewport to 320 px, and apply the text-spacing overrides. See the visual testing procedures.
Related criteria
In the specification
- Understanding 3.3.9 Accessible Authentication (Enhanced) — the W3C explanation, intent and exceptions
- 3.3.9 in the WCAG 2.2 Recommendation — the normative wording
WCAG 2.2 Demo Suite