Status Messages and Live Regions
Telling assistive technology that something changed, when focus did not move to say so.
Definition
WCAG 4.1.3 requires that status messages can be presented to assistive technology without receiving focus. ARIA live regions are the mechanism: content inserted into them is announced automatically.
Craft convention. True because the industry converged on it. Breaking it costs familiarity, not correctness.
On this plate
Reach for this when
- Content updates without a page load or focus change.
- Search results, filters, validation and autosave.
Common mistakes
- Region added at the same moment as the message.
- Assertive used for everything.
- Rapidly changing content in a live region.
Politeness levels
| Setting | Behaviour | Use for |
|---|---|---|
| aria-live="polite" | Announced at the next pause | Search result counts, save confirmations, most updates. |
| aria-live="assertive" | Interrupts immediately | Genuine urgency only, such as a session about to expire. |
| role="status" | Implicitly polite | Routine status updates. |
| role="alert" | Implicitly assertive | Errors requiring immediate attention. |
Implementation notes
- The live region must exist in the DOM before the content changes. Adding the region and the message at the same time frequently announces nothing.
- Keep messages short. Long announcements are hard to follow and cannot be re-read.
- Do not use assertive for routine updates. It interrupts whatever the user was listening to.
- Do not put live regions on content that changes constantly, such as a live counter.
- Test with a real screen reader. Live region behaviour varies significantly between implementations.
The region exists first, the message arrives second
<!-- Rendered once, on page load, and left empty -->
<div id="status" role="status" aria-live="polite" class="visually-hidden"></div>
<script>
// Later, in response to something the reader did
function announce(message) {
const region = document.getElementById("status");
region.textContent = ""; // clears a repeated message so it announces again
requestAnimationFrame(() => {
region.textContent = message; // "14 results" or "Draft saved"
});
}
</script>
<!-- visually-hidden: off-screen but not display: none, which would silence it -->The container is rendered empty with the page. Writing text into it later is what triggers the announcement. Creating the container and its content together usually announces nothing.
Announcing change
Do
- Announce anything that changes without focus moving: result counts, autosaves, background completion, validation summaries.
- Keep the message to what changed, in the words the reader would use.
- Use role="alert" only for errors that genuinely interrupt, and role="status" for everything else.
- Announce the outcome of a long operation, since nobody watches a progress bar with a screen reader.
Do not
- Do not put a live region around content that updates continuously, which produces constant speech.
- Do not hide a live region with display: none or the hidden attribute, which stops it announcing entirely.
- Do not announce and move focus for the same event. The reader hears one and loses the other.
- Do not rely on a toast alone. It disappears, and the announcement is gone with it.
Why a correct live region stays silent
Local chart
A11Y·009 · Region V · Grid B4
This entry and the entries it is stated to connect with. Each line is labelled with what the connection means.
Sources
Where a source establishes something narrower than the popular reading of it, the note says so.
- [1]
Continue from here
Each link says what the connection is, so you can tell a principle from an alternative from a thing people mix this up with.
Applies when you are designing
Why this works
The reasoning this entry rests on.
- Selective AttentionPSY·004 · Psychology
A message outside the area of focus is routinely missed, which is why confirmation belongs where the action happened.
Relied on by
Entries that assume this is already in place.
- Alert and Inline MessageCMP·015 · Component
- ToastCMP·014 · Component
- Loading StatesPAT·011 · Pattern
- NotificationsPAT·015 · Pattern
- SearchPAT·002 · Pattern
- Settings and PreferencesPAT·025 · Pattern
Short definition
The one-paragraph version, for when that is all you need.
- ARIATERM·074 · Term
- Live RegionTERM·079 · Term
- ToastTERM·049 · Term
Related concept
Connected closely enough to change how you apply this.
- Error Identification and SuggestionA11Y·016 · Accessibility
- Focus ManagementA11Y·004 · Accessibility
- Screen ReadersA11Y·005 · Accessibility
- Visibility of System StatusHEUR·001 · Heuristic
- Loading and Progress CopyWRT·011 · UX writing