aria-live Announcements Debugger
Live regions fire silently — you can't tell if, what, or when a screen reader will
announce a change. This tool hooks a MutationObserver into your markup and
turns every announcement into a visible, timestamped log with its politeness level.
Tool interface
Live preview & screen reader log
Detected live regions
Screen reader log
Introduction
Dynamic UIs (toasts, validation messages, dashboards) rely on live regions. When they misfire, screen-reader users miss critical information. This debugger makes the invisible announcement stream visible.
How it works
- Your HTML (and optional JS) runs in a sandboxed iframe.
- An injected
MutationObserverwatches live regions and posts each change to the parent. - The parent renders a timestamped log with politeness, role, and exact text.
- "Simulate update" injects a change to demo the log without writing JS.
Privacy
The iframe is sandboxed (allow-scripts only) and communicates via postMessage. No upload, no account, no API key.
Limitations
- Simulates triggers, not actual speech synthesis.
- Does not model vendor-specific announcement queueing or deduplication.
FAQ
Why isn't my toast announced?
Common causes: the live region is created at the same time as its content (create the empty region first), or the region is removed too quickly.
Is my code uploaded?
No. It runs sandboxed in your browser.