2.2.3 No Timing

WCAG 2.2 · 2.2.3 AAA Operable

What it requires

Timing must not be an essential part of the event or activity the content presents, with two exceptions: non-interactive synchronised media (such as a video with audio) and real-time events (such as a live auction or webinar). Outside those cases, users must be able to complete any task at their own pace — there can be no time limit on reading, responding, interacting, or finishing.

This is the stricter, Level AAA companion to 2.2.1 Timing Adjustable (Level A): rather than letting users turn off, adjust, or extend a limit, 2.2.3 removes time-dependence from the activity altogether.

  • People with cognitive, language, or learning disabilities who need more time to read, comprehend, and decide.
  • People with motor disabilities who interact slowly with a keyboard, switch, or other assistive device.
  • Blind and low-vision users navigating with a screen reader or magnifier, where every step takes longer.
  • Anyone who is interrupted mid-task — a forced timeout discards their progress and can lock them out entirely.

How to detect it

Concrete checks for No Timing
Check How What fails
Find time limits Review the content for any countdown, session timeout, quiz timer, or auto-advancing step. A task ends, resets, or logs you out after a fixed period.
Slow-path test Leave a form or flow idle, then resume; complete it deliberately slowly with the keyboard or a screen reader. Progress is lost or the action is rejected because you took too long.
Confirm exceptions Check whether any genuine limit is purely a live event or non-interactive media. A non-real-time, interactive task still depends on timing.
Automated tools Run axe or similar. Cannot detect this — time limits are behavioural; manual testing is required.

How to fix it

  1. Remove the time limit so the task can be finished whenever the user is ready.
  2. Where state matters, persist progress (save drafts, server-side state) instead of expiring it.
  3. If a limit is unavoidable, confirm it is a true real-time event or non-interactive media — otherwise it is in scope and must go.
  4. Avoid meta refresh redirects and auto-advancing carousels or steps that move on before the user acts.
  5. Never end a session with no warning; for any retained limit, at minimum meet 2.2.1.

Replace an auto-refreshing page with an explicit, user-triggered control:

<!-- No timed redirect; the user decides when to reload -->
<p>Results may have changed.</p>
<button type="button" onclick="location.reload()">Refresh results</button>

Copy-paste tests

Automated coverage

There is no fully automated axe-core rule that proves 2.2.3 No Timing. Timing is a behavioural property, so this criterion needs manual review using the console check and steps below.

Run this in the browser console

no-timing-check.js
// Read-only: surface elements that may impose timing for manual review.
const suspects = [
  ...document.querySelectorAll('meta[http-equiv="refresh" i]'),
  ...document.querySelectorAll('[aria-live]'),
  ...document.querySelectorAll('marquee, [data-timeout], [data-countdown], [data-auto-refresh]'),
];
suspects.forEach(el => { el.style.outline = '2px solid orange'; });
console.table(suspects.map(el => ({
  tag: el.tagName,
  content: (el.getAttribute('content') || el.textContent || '').slice(0, 60),
})));
console.log('Suspect timing elements:', suspects);

What to check manually: watch the page for at least a minute without interacting and confirm no content auto-advances, refreshes, or times out; and verify any countdown or session limit is essential or can be turned off, adjusted, or extended.