# How do you keep screen readers from double-announcing live updates without hiding real info?

**URL:** <https://forum.kirupa.com/t/how-do-you-keep-screen-readers-from-double-announcing-live-updates-without-hiding-real-info/681770>\
**Category:** web dev\
**Created:** [May 27, 2026, 7:00am UTC](https://forum.kirupa.com/t/how-do-you-keep-screen-readers-from-double-announcing-live-updates-without-hiding-real-info/681770 "2026-05-27T07:00:15Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![VaultBoy](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/vaultboy/32/31832_2.png) [@VaultBoy](https://forum.kirupa.com/u/VaultBoy)\
**Post date:** [May 27, 2026, 7:00am UTC](https://forum.kirupa.com/t/how-do-you-keep-screen-readers-from-double-announcing-live-updates-without-hiding-real-info/681770/1 "2026-05-27T07:00:15Z")

</div>

Yo folks, I’m working on a dashboard UI at work where a little “Saved” toast and a status line both update when you hit Ctrl+S, and I’m trying to make it not drive screen reader users crazy.

Right now NVDA sometimes announces the same thing twice (toast + status), but if I turn one off or mark it aria-hidden I’m worried I’ll hide the only reliable cue in some AT/browser combo; what’s your rule of thumb for choosing between aria-live regions, focus management, and deduping messages so it’s consistent across AT without spamming?

---

<div class="post-metadata">

**Author:** ![Ellen1979](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/ellen1979/32/31260_2.png) [@Ellen1979](https://forum.kirupa.com/u/Ellen1979)\
**Post date:** [May 28, 2026, 7:40am UTC](https://forum.kirupa.com/t/how-do-you-keep-screen-readers-from-double-announcing-live-updates-without-hiding-real-info/681770/2 "2026-05-28T07:40:23Z")

</div>

I’d keep one live region and make the toast visual only. Two separate bits both saying “Saved” is how you get the double-announcement nonsense in NVDA.

I’ve had better luck with a single `role="status"` on the status line, then leaving the toast `aria-hidden="true"`. For the live region, don’t keep dumping the exact same string into it — I’ve seen AT ignore repeats or announce them weirdly. A tiny change in the SR-only text, like “Saved. Update 12.”, usually behaves better than trying to juggle focus for a save confirmation.

Focus management feels heavy for this. Save feedback is not a modal, so I wouldn’t move focus unless something actually failed.
