The Screen Reader Announcement Simulator gives developers a fast preview of how JAWS or NVDA would speak each interactive element, landmark, and heading in a block of HTML. It will not replace testing with a real screen reader, but it catches the most common announcement bugs — missing names, wrong roles, and meaningless link text — before you ever open one.
How it works
- Parse and select. The HTML is parsed and the tool walks every focusable control, landmark element, heading, image, and element carrying an explicit
role. - Compute the role. Each element gets a role: an explicit
roleattribute if present, otherwise the implicit role from its tag and type (ana[href]is a link, aninput[type=checkbox]is a checkbox, anavis a navigation landmark, and so on). - Compute the accessible name. Following a subset of the accessible name algorithm —
aria-labelledby, thenaria-label, then associatedlabel/alt/ text content — the tool derives the name the reader would speak. - Assemble the announcement. Name, role, and state (checked, pressed, expanded, disabled, heading level) are combined into the spoken string, and any problems are flagged.
Example
The markup <button aria-pressed="true">Mute</button> is announced as “Mute, button, pressed”, while <img src="logo.png" alt=""> is silent because an empty alt marks it decorative.
Tips and notes
- An element announced as “(no accessible name), button” needs an
aria-labelor visible text before it is usable. - Replace generic link text with something descriptive — “Read the accessibility report” rather than “Read more”.
- Verbosity settings change what real readers speak; use this as a structural check, then confirm the live experience with NVDA, JAWS, or VoiceOver.