No Timing
Timing is not an essential part of the event or activity presented, except for non-interactive synchronised media and real-time events.
Who this affects
Users who need unlimited time. At AAA the standard removes time pressure entirely rather than merely making it adjustable.
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 2.2.3
Open the failing example in a new tab
fail.html — the problem
<h1>Membership quiz</h1>
<!-- This page satisfies 2.2.1 Timing Adjustable at Level A: the user is warned
well before the limit expires and can extend it with one action.
It still fails 2.2.3 at AAA, which does not accept an adjustable limit -
it requires that timing is NOT AN ESSENTIAL PART of the activity at all.
A countdown that can be extended is still a countdown, and it still
imposes pressure on someone who reads slowly, uses a screen reader, or
needs to think. -->
<p>Time remaining: <span class="timer" id="t">45</span> seconds
<button type="button" class="button button--secondary" id="more">Give me more time</button></p>
<div class="warn" role="status" id="warn" hidden>
<p>Less than 20 seconds remaining.</p>
</div>
<form>
<fieldset>
<legend>Which year did Riverline Books open?</legend>
<p><input type="radio" id="y1" name="y"><label for="y1">1988</label></p>
<p><input type="radio" id="y2" name="y"><label for="y2">1998</label></p>
<p><input type="radio" id="y3" name="y"><label for="y3">2008</label></p>
</fieldset>
<button type="submit" class="button">Submit answer</button>
</form>
Meets 2.2.3
Open the passing example in a new tab
pass.html — the fix
<h1>Membership quiz</h1>
<!-- FIX: there is no timer. Nothing counts down, nothing expires, and the
user's answers are saved as they go, so leaving and coming back later
loses nothing.
Ask what the time limit was actually FOR. Most of them exist for one of
three reasons, and none survives scrutiny:
- "to stop cheating" -> a timer does not stop cheating
- "to free up inventory" -> hold stock differently, or extend generously
- "the framework does it" -> configure the framework -->
<p>Take as long as you like. Your answers are saved automatically.</p>
<form>
<fieldset>
<legend>Which year did Riverline Books open?</legend>
<p><input type="radio" id="y1" name="y"><label for="y1">1988</label></p>
<p><input type="radio" id="y2" name="y"><label for="y2">1998</label></p>
<p><input type="radio" id="y3" name="y"><label for="y3">2008</label></p>
</fieldset>
<button type="submit" class="button">Submit answer</button>
</form>
<p id="saved" role="status"></p>
<!-- The exceptions 2.2.3 allows:
- real-time events, such as a live auction or a live broadcast
- non-interactive synchronised media: a video is allowed to have a
duration
Everything else must have no essential timing.
Where timing genuinely IS essential - a timed exam, an auction - you
cannot meet 2.2.3, and that is expected. AAA is not meant to be achievable
for all content; W3C says so explicitly. Meet 2.2.1 at Level A properly
and document why 2.2.3 does not apply. -->
How to test it
Confirm no time limits exist at all, other than the permitted exceptions.
-
Automated
Requires reviewing the whole flow for time dependencies.
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 2.2.3 No Timing — the W3C explanation, intent and exceptions
- 2.2.3 in the WCAG 2.2 Recommendation — the normative wording
WCAG 2.2 Demo Suite