2.2.1 Level A Guideline 2.2 Enough Time Added in WCAG 2.0 Not detectable automatically

Timing Adjustable

For each time limit, the user can turn it off, adjust it to at least ten times the default, or extend it with a simple action after a warning with at least 20 seconds to respond.

Who this affects

Users who read slowly, type slowly, use a screen reader to review a form, or need to consult someone before submitting. A silent session timeout that discards a half-completed form is a hard failure.

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.1

Open the failing example in a new tab

fail.html — the problem

<h1>Complete your booking</h1>

<!-- FAILURE: a hard time limit with
       - no way to turn it off
       - no way to extend it
       - no warning before it expires
       - and the user's entered data discarded when it does.

     Twenty seconds is compressed for the demo; in the wild this is a
     ten-minute checkout hold or a fifteen-minute session timeout. The effect
     is identical for anyone who reads slowly, types slowly, navigates by
     screen reader, or has to step away - all of whom are disproportionately
     disabled users. -->
<p>Your seats are held for <span class="timer" id="t">20</span> seconds.</p>

<form id="f">
  <div class="field">
    <label for="nm">Name on booking</label>
    <input type="text" id="nm" autocomplete="name">
  </div>
  <div class="field">
    <label for="rq">Any access requirements?</label>
    <textarea id="rq"></textarea>
  </div>
  <button type="submit" class="button">Confirm booking</button>
</form>

<p id="msg" role="status"></p>

Meets 2.2.1

Open the passing example in a new tab

pass.html — the fix

<h1>Complete your booking</h1>

<!-- FIX: 2.2.1 is satisfied by ANY ONE of three routes. This example takes the
     third, which is the one most real systems can implement:

       1. Turn it off      - let the user remove the limit entirely, or
       2. Adjust it        - let them set it to at least ten times the default
                             BEFORE it starts, or
       3. Extend it        - warn them at least 20 seconds before it expires
                             and let them extend with a simple action.

     The warning is announced through a live region, so a screen reader user
     hears it without having to be looking at the timer. -->
<p>Your seats are held for <span class="timer" id="t">30</span> seconds.
   <button type="button" class="button button--secondary" id="off">Remove the time limit</button></p>

<div class="warn" id="warn" role="alert" hidden>
  <p>Your booking will expire in <span id="w">20</span> seconds.
     <button type="button" class="button" id="more">Give me more time</button></p>
</div>

<form id="f">
  <div class="field">
    <label for="nm">Name on booking</label>
    <input type="text" id="nm" autocomplete="name">
  </div>
  <div class="field">
    <label for="rq">Any access requirements?</label>
    <textarea id="rq"></textarea>
  </div>
  <button type="submit" class="button">Confirm booking</button>
</form>

<p id="msg" role="status"></p>

<!-- Exceptions worth knowing: 2.2.1 does not apply where the time limit is
     essential and extending it would invalidate the activity - a live auction,
     a timed exam - or where the limit is longer than 20 hours. -->

How to test it

Find every timer — session timeouts, checkout holds, auto-advancing carousels with forms, quiz timers. Confirm a warning appears with at least 20 seconds to act and a way to extend.

  • Automated

    Requires waiting out real timers and observing the warning behaviour.

    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.

In the specification