JavaScript Element ariaBusy Property

Beginner
⏱️ 11 min read
📚 Updated: Jul 2026
🎯 5 Examples
🚀 5 Try-it labs
Baseline
Instance property

What You’ll Learn

Element.ariaBusy is an instance property that reflects the aria-busy attribute. Learn the "true" / "false" strings, how busy signals an in-progress update for assistive technologies, and how to get or set the property from JavaScript—with five examples and try-it labs.

01

Kind

Instance property

02

Type

String

03

Values

"true" · "false"

04

Reflects

aria-busy

05

Status

Baseline widely

06

Used with

Live regions

Introduction

When a live region is mid-update—loading data, rewriting several nodes, refreshing a clock—you may not want assistive technologies to announce every half-finished change.

aria-busy marks that an element is being modified. The DOM property ariaBusy lets you read and update that flag from JavaScript.

JavaScript
const el = document.getElementById("clock");
console.log(el.ariaBusy); // "false"
el.ariaBusy = "true";
💡
Beginner tip

Use the strings "true" and "false", not boolean true / false. Always clear busy when the update finishes.

Understanding the Property

MDN: the ariaBusy property of the Element interface reflects the value of the aria-busy attribute, which indicates whether an element is being modified, as assistive technologies may want to wait until the modifications are complete before exposing them to the user.

  • Reflected attribute — mirrors aria-busy.
  • Get / set — readable and writable string.
  • Two tokens"true" or "false".
  • Baseline — widely available since October 2023 (MDN).

📝 Syntax

JavaScript
ariaBusy

Value

A string with one of the following values:

ValueMeaning (MDN)
"true"The element is being updated.
"false"There are no expected updates for the element.

📢 Pairing with Live Region Attributes

MDN’s example uses a timer live region. Busy marks that an update is in progress; live / atomic control how announcements work when changes are exposed.

JavaScript
<div
  id="clock"
  role="timer"
  aria-live="polite"
  aria-atomic="true"
  aria-busy="false"></div>
Attribute / propertyRole
aria-liveOff / polite / assertive announcement policy
ariaAtomicHow much of a change is presented
ariaBusyWhether an update is currently in progress

See also ariaAtomic for the atomic half of this pattern.

⚡ Quick Reference

GoalCode / note
Readel.ariaBusy
Mark busyel.ariaBusy = "true"
Clear busyel.ariaBusy = "false"
Typical flowbusy true → update DOM → busy false
MDN statusBaseline Widely available

🔍 At a Glance

Four facts about Element.ariaBusy.

Kind
get / set

Instance

Type
string

true / false

Reflects
aria-busy

Attribute

Baseline
widely

Oct 2023+

Examples Gallery

Examples follow MDN Element: ariaBusy. Labs use a timer live region so you can safely read and write the property.

📚 Getting Started

Read the reflected value and follow MDN’s clock update.

Example 1 — Read ariaBusy

Log the current busy flag from a timer region.

JavaScript
const el = document.getElementById("clock");
console.log(el.ariaBusy);

// HTML includes: aria-busy="false"
Try It Yourself

How It Works

The property returns the attribute string. If the attribute is missing, many browsers return null.

Example 2 — MDN Update to "true"

MDN: read "false", then set "true".

JavaScript
let el = document.getElementById("clock");
console.log(el.ariaBusy); // false
el.ariaBusy = "true";
console.log(el.ariaBusy); // true
Try It Yourself

How It Works

Setting "true" signals that modifications are in progress. Remember to set "false" again when the update is complete.

📈 Busy Flow, Attribute Sync & Snapshot

Practice a full update cycle and verify reflection.

Example 3 — Busy → Update → Clear

Typical pattern while rewriting a live region.

JavaScript
const clock = document.getElementById("clock");
const steps = [];

clock.ariaBusy = "true";
steps.push("busy: " + clock.ariaBusy);
clock.textContent = "12:00";
steps.push("content: " + clock.textContent);
clock.ariaBusy = "false";
steps.push("busy: " + clock.ariaBusy);

console.log(steps.join("\n"));
Try It Yourself

How It Works

Assistive technologies may wait while busy is true, then expose the finished content after you clear it.

Example 4 — Property vs getAttribute

Confirm the attribute stays in sync after a write.

JavaScript
const el = document.createElement("div");
el.setAttribute("aria-busy", "false");
document.body.appendChild(el);

el.ariaBusy = "true";
console.log({
  fromProperty: el.ariaBusy,
  fromAttribute: el.getAttribute("aria-busy"),
  same: el.ariaBusy === el.getAttribute("aria-busy")
});
Try It Yourself

How It Works

Prefer ariaBusy in script; keep the attribute for HTML markup.

Example 5 — Support Snapshot

Feature-detect and list the allowed tokens.

JavaScript
console.log({
  supported: "ariaBusy" in Element.prototype,
  allowed: ["true", "false"],
  tip: "Set true while updating, false when finished",
  status: "Baseline Widely available (MDN)"
});
Try It Yourself

How It Works

Leaving busy stuck on "true" can suppress useful announcements—always clear it.

🚀 Common Use Cases

  • Live clocks / timers that rewrite content in steps.
  • Status panels loading remote data into a live region.
  • Batch DOM updates where intermediate states should not be announced.
  • Keeping script and markup aligned without manual setAttribute.
  • Pairing with aria-live and ariaAtomic.

🔧 How It Works

1

Update is about to start

You are about to change a live region’s contents.

Start
2

Set ariaBusy = "true"

AT may wait before exposing changes.

Busy
3

Finish the DOM update

Rewrite nodes, then clear the flag.

Update
4

Set ariaBusy = "false"

AT can expose the completed content.

📝 Notes

Browser Support

Element.ariaBusy is Baseline Widely available (MDN: across browsers since October 2023). Logos use the shared browser-image-sprite.png sprite from this project.

Baseline Widely available

Element.ariaBusy

String "true" / "false" — reflects aria-busy for in-progress updates.

Baseline Widely available
Google Chrome Supported (ARIA reflection)
Yes
Microsoft Edge Supported (ARIA reflection)
Yes
Mozilla Firefox Supported (ARIA reflection)
Yes
Apple Safari Supported (ARIA reflection)
Yes
Opera Follow Chromium support
Yes
Internet Explorer No ariaBusy IDL — use setAttribute
No
ariaBusy Baseline

Bottom line: Use ariaBusy to get/set aria-busy. Set "true" while modifying a live region, then "false" when finished. Pair with aria-live and ariaAtomic as needed.

Conclusion

ariaBusy reflects aria-busy so you can tell assistive technologies that an element is mid-update. Use "true" while changing content and "false" when done, especially on live regions paired with aria-live and ariaAtomic.

Continue with ariaChecked, ariaAtomic, EventTarget, or the JavaScript hub.

💡 Best Practices

✅ Do

  • Set "true" before multi-step live updates
  • Clear to "false" when finished
  • Pair with aria-live / ariaAtomic thoughtfully
  • Use the string tokens, not booleans
  • Test with a screen reader when possible

❌ Don’t

  • Leave busy stuck on "true"
  • Assign boolean true / false expecting ARIA strings
  • Mark every tiny text tweak as busy without need
  • Forget error paths that must clear busy
  • Confuse busy with loading spinners alone (a11y needs the attribute)

Key Takeaways

Knowledge Unlocked

Five things to remember about ariaBusy

Reflected aria-busy string for in-progress updates.

5
Core concepts
📝 02

Two values

true / false strings

Tokens
🔍 03

Live regions

wait during updates

Use
04

Baseline

widely available

Status
🎯 05

Clear busy

always finish

Rule

❓ Frequently Asked Questions

It reflects the aria-busy attribute as a string ("true" or "false"), telling assistive technologies whether an element is being modified so they may wait before exposing changes.
No. MDN marks Element.ariaBusy as Baseline Widely available (since October 2023). It is not Deprecated, Experimental, or Non-standard.
The strings "true" (element is being updated) or "false" (no expected updates).
In JavaScript you assign the strings "true" and "false", not the boolean literals true/false. The property reflects the ARIA attribute value.
aria-live controls whether/how updates are announced. ariaAtomic controls how much of a change is spoken. ariaBusy marks that an update is in progress so AT may wait until busy clears.
Yes. Reading and writing ariaBusy updates the reflected aria-busy attribute. Set "true" while updating, then "false" when finished.
Did you know?

MDN’s clock demo pairs aria-busy with role="timer", aria-live="polite", and aria-atomic="true"—a compact live-region toolkit for time updates.

Next: Element ariaChecked

Learn the reflected aria-checked property for checkboxes and related widgets.

ariaChecked →

About the author

Mari Selvan M P
Mari Selvan M P 🔗

Developer, cloud engineer, and technical writer

  • Experience 12 years building web and cloud systems
  • Focus Full Stack Development, AWS, and Developer Education

I write practical tutorials so students and working developers can learn by doing—from databases and APIs to deployment on AWS.

5 people found this page helpful