live role
role="status"
A message worth announcing that is not urgent enough to interrupt what somebody is doing.
What role="status" means, and when to use it
Use status for a message worth hearing that is not worth interrupting for. Saved, four results, added to cart. It is polite and atomic already, so the whole region is read when any of it changes.
The HTML element behind role="status"
An output element is a status region, and it comes with the live settings applied.
Live region roles announce changes nobody navigated to
A live region tells assistive technology to announce a change the user never went looking for. A validation error, a save confirmation, a count going up.
The container has to be in the page before the message arrives in it. Build the region and its text in the same step and the browser has nothing to compare against, so there is no change to detect and nothing is announced. Two of these roles also arrive with settings already applied. status is polite and atomic, and log is polite.
That timing mistake is invisible to a scanner, which sees a correctly built live region and reports no problem. It only shows up when somebody triggers the update for real with a screen reader running.
Where role="status" sits in the model
- The name can come from
- aria-labelledby or aria-label. Its own text does not become the name, so text inside it will not be read as one.
- More specific roles below it
timer
The normative definition stays with the W3C, so it cannot go stale here. status in the ARIA specification.
How a checker tests role="status"
This role carries no obligation of its own, so what a checker looks at is whether the role is a real one and whether it belongs on the element carrying it. These are the published test rules that apply.
The other live roles
All 94 ARIA roles · ARIA explained · How accessible names are computed · Scan your own pages