4.1.3 Status Messages
Level AA · added in WCAG 2.1
Status messages must be marked up so assistive technology can announce them without moving focus to them. A status message tells users about success, results, waiting, progress or errors, and does not change the context.
Who it helps
Screen reader users do not see text that appears elsewhere on the page, such as "Item added to cart" or "No results found". Without a live region they never learn the action worked. Screen magnifier users who see only part of the screen benefit when their software can announce it.
How to meet it
- Put success and result messages, such as "Saved" or "12 results", in an element with role="status" (polite announcement).
- Use role="alert" for important, time-sensitive messages such as an error that blocks submitting.
- Use role="log" for streams of updates such as chat, and role="progressbar" for progress.
- Add the live region to the page when it loads, then change its text; regions inserted along with their text are often not announced.
- Do not move focus to the message; if you do move focus on purpose, 4.1.3 no longer applies, but the move must make sense.
Examples
<button type="button" onclick="document.getElementById('msg').textContent = 'Added to cart'">
Add to cart
</button>
<div id="msg"></div><label for="q">Search products</label>
<input id="q" type="search">
<p id="count">24 results</p><button type="button" onclick="document.getElementById('msg').textContent = 'Added to cart'">
Add to cart
</button>
<div id="msg" role="status"></div><label for="q">Search products</label>
<input id="q" type="search">
<p id="count" role="status">24 results</p>Can a scanner detect this?
No
axe-core has no rule for this criterion. It checks that ARIA live attributes are valid, but it cannot tell which text changes are status messages. A person must trigger each message and confirm a screen reader announces it without focus moving.
No automated rule tests this criterion. Check it by hand.
Common mistakes
- Showing toast notifications in plain divs that screen readers never announce.
- Using role="alert" for every minor message, which interrupts users constantly.
- Creating the live region in the same moment as its text, so many screen readers miss it.
- Moving focus to a success message, which pulls users away from where they were working.
Related criteria
Check your own page
See which automated WCAG checks your page fails, with the failing elements and how to fix them.
Reviewed November 2, 2026