Skip to content
easeweb
Search topics

Countdown timers that screen readers keep reading out

A sale countdown sits in an aria-live="assertive" region, so a screen reader reads a new time after every line, or cuts the line off to say it, and nothing on the page stops it.

WCAG 2.2
SC 4.1.3AA· new in 2.1SC 2.2.2A
Required by
Section 508 · EN 301 549 (EU)
Broken <p class="sale-banner" aria-live="assertive">
The accessibility problem illustrated: No vision:How do I make the clock stop talking?
01

The problem

Screen reader users can't read the product page through, because a new time is read after every line or cuts the line off, and people distracted by the ticking have no way to stop it.

02

Try it

Press Read next line, as a screen reader user presses the Down arrow, and read the product while the sale counts down.

The clock starts when you start reading. The panel shows what the screen reader says, as JAWS, NVDA and Narrator read it; on the page, the words read so far are highlighted. What comes after each line? Switch to VoiceOver to see it cut the lines off, and look for a way to stop the clock.

Broken Can you fix this?

BrokenA countdown in an assertive live region
Screen reader (simulated):

Sale ends in 02:14:09

Linen tea towel

Hand-woven linen tea towel, washed for a soft feel from the first use.

Each towel is woven on a narrow loom, so the edges never fray.

Machine wash at 40 degrees, and dry on the line.

$18 each, or three for $45 during the sale.

Screen reader says:

(Press Read next line)

A recreated demo. The broken version is intentionally inaccessible.

03

The fix

Show the end time, or keep the countdown silent with role="timer" and a button that stops it.

  1. 1Never put a clock, score or counter that changes by itself in an assertive live region.
  2. 2Give text that changes by itself a button that stops it, or show a fixed time instead.
  3. 3Say the time left at most at a milestone, once, in a status region.
Before A countdown in an assertive live region
<p class="sale-banner" aria-live="assertive">  Sale ends in <span id="sale-clock">02:14:09</span></p>
After

The end time, written once

<p class="sale-banner">  Sale ends <time id="sale-end" datetime="2026-10-31T23:59:00Z">31 October at 23:59</time></p>

Fixing this with an AI coding assistant? Get this guide as Markdown, or get every guide in your coding agent.

04

Design ideas

A sale’s end has more than one look.

Five more ways to show when the autumn sale ends, in the shop’s own colours. Three tell people the time without ticking; two keep changing by themselves, and nothing beside them stops them.

In the design file

  • Write when the sale ends as a date and a time, wherever the design would show a countdown.
  • If the design keeps a ticking countdown, draw a Stop countdown button before it, and the banner once it is pressed, with the end time in place of the clock.
  • Mark the countdown as never read aloud as it changes, since a screen reader reads it once, when someone reaches it.

Passes

  • End-time pill A soft pill with a calendar icon, the day and the time. Nothing changes after the page loads, so there is nothing to stop, and a screen reader reads it once, like any other line.
  • Days-left bar “2 days left” over a thin bar of the sale so far. It is set once, when the page loads, and never moves while it is open; the words carry the number, so the bar needs no live region.
  • Last-day ribbon A ribbon that appears only on the final day, with the closing time in it. The urgency comes from the word “last”, not from a clock, and it changes at most once a day, when a page is loaded.

Fails

  • Flip-clock countdownWCAG 2.2.2 Each second flips over like a station board, which is lively, and it never stops: there is no button to pause, stop or hide it. The sample stops after four flips; the pattern does not.
  • Minutes-only countdownWCAG 2.2.2 “Sale ends in 2 h 14 min” looks calm, but it still changes by itself, once a minute, beside the product, and 2.2.2 gives auto-updating content no allowance for being slow. It needs the same Stop button as a clock that ticks by the second.
05

Verify the fix

4 checks, no mouse.

Test with: Screen reader, Keyboard

0 of 4 checked

Record the OS, browser and assistive-technology versions, the build, the date, and the actual result of each step. Repeat after the banner, its script or the sale component changes.

Limits

Live regions behave differently across screen readers and browsers, and from one version to the next: what this guide describes is how the releases current in 2026 behaved. Understanding 4.1.3 also notes that, depending on the user's preferences, assistive technology may delay, suppress or transform status messages. This guide covers a countdown beside other content, on one page. Whether the updating is essential to an activity, as an auction's clock may be, is a judgement for the team, and 2.2.2 does not ask for a way to stop it then; even so, the clock does not need to announce every second. Test with the screen readers your users use.

This is a recreated teaching example, not a finding about a named client. The code is a starting pattern: test it in your own product. No completed assistive-technology test is claimed here.

Keep this fixed as your code changes.

Turn guides like this into rules your coding agents and CI follow, then have the result retested with a keyboard and screen readers.

How retests work