Element.ariaNotify() is an instance method that queues text for a screen reader to announce. Learn priorities, how it compares to ARIA live regions, feature detection, and five try-it labs. Support is Limited availability (not Baseline yet).
01
Kind
Instance method
02
Announces
Screen reader text
03
Priority
normal / high
04
Returns
undefined
05
vs live
No DOM change needed
06
Status
Limited availability
Fundamentals
Introduction
Classic accessible status updates often use an ARIA live region: put aria-live on an element and change its text so assistive tech announces it. That only works when the DOM content changes—and many apps hide extra nodes just to trigger speech.
ariaNotify() lets you request an announcement directly from JavaScript, with a message that can be independent of what is visible on the page. It is part of the WAI-ARIA ARIANotifyMixin (also available on Document).
💡
Beginner tip
You will only hear announcements if a screen reader (or similar AT) is active. Always feature-detect, and keep an aria-live fallback for browsers without the method.
announcement — a string specifying the text to be announced.
options (optional) — an object that may include:
priority — "normal" (default: spoken after the current announcement) or "high" (interrupt and speak immediately).
Return value
None (undefined).
Priority vs live regions (MDN)
priority: "high" ≈ aria-live="assertive"
priority: "normal" ≈ aria-live="polite"
Existing aria-live announcements still take priority over ariaNotify().
Common patterns
JavaScript
btn.ariaNotify("Saved successfully.");
btn.ariaNotify("Error: try again.", { priority: "high" });
// Prefer one combined message
btn.ariaNotify("Hello there. The time is now 8 o'clock.");
if (typeof el.ariaNotify === "function") {
el.ariaNotify("Ready");
}
Cheat Sheet
⚡ Quick Reference
Goal
Code
Announce text
el.ariaNotify("Done")
Urgent interrupt
el.ariaNotify(msg, { priority: "high" })
Feature-detect
typeof el.ariaNotify === "function"
Fallback
Update an aria-live region
Language voice
Set lang on el or an ancestor
MDN / BCD status
Limited availability; not Deprecated / Experimental / Non-standard
Snapshot
🔍 At a Glance
Four facts to remember about Element.ariaNotify().
Returns
undefined
Queues speech only
Availability
limited
Not Baseline yet
Needs AT?
yes
Screen reader hears it
DOM change?
not required
Unlike live regions
Compare
📋 ariaNotify() vs ARIA live regions
el.ariaNotify(msg)
aria-live region
Trigger
Any time from JS
After DOM content changes
Message source
Argument string
Updated node text / content
Hidden live node hack
Not needed
Often used as a workaround
Urgency
priority normal / high
polite / assertive
Browser support
Limited / rolling out
Widely available
Best for
JS events without DOM text updates
Cross-browser status text today
Hands-On
Examples Gallery
Examples follow MDN Element.ariaNotify() patterns. Use a screen reader in supporting browsers to hear announcements. View Output shows what the script does on screen.
📚 Getting Started
MDN-style button announce, plus safe feature detection.
Example 1 — Basic ariaNotify() (MDN)
Click a button to queue a screen reader announcement on itself.
JavaScript
document.querySelector("button").addEventListener("click", () => {
document.querySelector("button").ariaNotify("You ain't seen me, right?");
});
(click Press — screen readers may announce: You ain't seen me, right?)
How It Works
The announcement is queued from the button element. Visible UI does not need to change for AT to speak the string (when the API and a screen reader are available).
Example 2 — Feature Detection
Always check the method exists before calling it.
JavaScript
const btn = document.querySelector("button");
if (typeof btn.ariaNotify === "function") {
btn.ariaNotify("Notification sent.");
console.log("ariaNotify supported");
} else {
console.log("ariaNotify not supported — use aria-live fallback");
}
(submit — may announce with high priority: Error: email is required.)
How It Works
High priority aims to speak immediately. Use sparingly so you do not constantly interrupt the user.
Example 4 — Combine Messages (MDN Advice)
Prefer one string over back-to-back calls.
JavaScript
const status = document.getElementById("status");
// Less reliable across AT:
// status.ariaNotify("Hello there.");
// status.ariaNotify("The time is now 8 o'clock.");
// Better — one announcement
if (typeof status.ariaNotify === "function") {
status.ariaNotify("Hello there. The time is now 8 o'clock.");
}
MDN notes that some screen readers may only speak the latest call. Combining keeps the full message together.
Example 5 — Live Region Fallback
Progressive enhancement when ariaNotify is missing.
JavaScript
function announce(el, message) {
if (typeof el.ariaNotify === "function") {
el.ariaNotify(message);
return;
}
const live = document.getElementById("live");
live.textContent = "";
// Force a change so polite live regions re-announce
requestAnimationFrame(() => {
live.textContent = message;
});
}
announce(document.getElementById("action"), "Item added to cart.");
Element.ariaNotify() is Limited availability on MDN (not Baseline). Logos use the shared browser-image-sprite.png sprite from this project. Support is rolling out (for example full support in recent Firefox; partial in some Chromium builds). Always feature-detect.
✓ Limited availability · Not Baseline
Element.ariaNotify()
Standard-track accessibility API. Keep an aria-live fallback until Baseline coverage improves.
LimitedNot Baseline yet
Mozilla FirefoxSupported (from 150+)
Yes
Google ChromePartial / platform-dependent
Partial
Microsoft EdgePartial (Chromium mirror)
Partial
OperaPartial (Chromium mirror)
Partial
Apple SafariNot supported (check updates)
No
Internet ExplorerNot supported
No
ariaNotify()Growing
Bottom line: Use ariaNotify() where supported for JS-driven announcements. Feature-detect and fall back to ARIA live regions for broad compatibility.
Wrap Up
Conclusion
Element.ariaNotify() queues screen reader announcements without requiring a DOM text change. Prefer combined messages, use high priority sparingly, and always feature-detect with an aria-live fallback while support remains limited.
Test with a real screen reader in supporting browsers
❌ Don’t
Spam users with frequent high-priority notifies
Assume every browser supports the API yet
Rely on multiple rapid calls being spoken in order
Expect a return value or promise
Ignore Permissions Policy aria-notify blocks
Summary
Key Takeaways
Knowledge Unlocked
Five things to remember about Element.ariaNotify()
Queue AT speech from JS—feature-detect and fall back.
5
Core concepts
📝01
Returns
undefined
API
🔊02
Queues
AT speech
A11y
⚡03
Priority
normal / high
Urgency
🔍04
Support
limited
Status
✅05
Fallback
aria-live
Safe
❓ Frequently Asked Questions
It queues a string of text for a screen reader to announce. You can call it at any time — announcements do not require a DOM content change like classic ARIA live regions.
No. MDN browser-compat marks it standard_track with experimental: false and deprecated: false. It is Limited availability (not Baseline yet) — support is still rolling out across browsers.
undefined. There is no promise or status object. Feature-detect the method, then call it; blocked Permissions Policy usage fails silently.
For urgent interruptions, similar to aria-live="assertive". Prefer priority: normal (default, like polite) for most status updates so you do not interrupt the user constantly.
MDN notes that some screen readers may only speak the most recent ariaNotify() call. Combining messages into one string is more reliable than firing several calls in a row.
Fall back to an ARIA live region (update textContent on an aria-live element) or another accessible pattern. Always feature-detect typeof el.ariaNotify === "function".
Did you know?
The same mixin powers Document.ariaNotify(). MDN’s shopping-list demo works the same if you call the method on an element reference instead of the document—choose the landmark that best matches the context of the announcement.