Spinner
Component preview
A compact animated indicator for work whose completion amount is unknown, paired with a meaningful busy status.
Build pack
Choose the task and destination. Technical names stay in English.
In your own words
Documented aliases: loading spinner, activity indicator, busy indicator
Try it
Compare all three behaviors
Shared comparison scenario: A workspace waits for content or an operation to finish and communicates only the progress it can measure honestly.
This context stays fixed. Switch concepts to observe the mission, edge case, and specimen specific to each behavior.
Spinner
Spinner communicates an indeterminate wait; Progress bar shows measurable completion, while Skeleton previews the shape of content still loading.
Your task
Start saving, verify duplicate activation is blocked, enable reduced motion, and wait for the final status.
Edge case to verify
After a long threshold, the interface adds explanatory text and a cancel or retry path instead of spinning forever.
Mission
Start saving, verify duplicate activation is blocked, enable reduced motion, and wait for the final status.
Select a marker directly on the specimen, or use the list below, to see its role. Hide the markers to operate the lab without obstruction.
Status icon
A redundant visual cue for the message type, never the only cue.
Mark the region busy
The content region exposes its busy state while a separate visual indicator remains redundant.
Announce meaningful changes
A live region announces new status only when the update is important and not already focused.
Task idle
Task idle
Task loading
Task loading
Task taking longer than expected
Task taking longer than expected
Task cancelled
Task cancelled
Task done
Task done
Task idle → Task loading
An operation with unknown remaining duration starts and marks its region busy.
Task loading → Task taking longer than expected
After the long-wait threshold, explanatory text and a Cancel action appear while saving continues.
Task taking longer than expected → Task done
The save finishes, removes the spinner, and exposes the final Saved status with no further activation.
Task taking longer than expected → Task cancelled
Activating Cancel stops the pending save and exposes Retry without losing the document.
Task cancelled → Task loading
Activating Retry starts one new save and hides the prior cancellation status.
Task done → Task idle
Reset restores the replayable save example to its initial ready state.
status text plus decorative indicator
Equivalence caveat: The animated mark is visual only. The busy region and a meaningful textual status carry the accessible state.
Verify binding sourceW3C WAI · standard · 2026-07-16
Claim covered: Spinner: normative aria-busy state used to expose an updating region without announcing incomplete content.
W3C WAI · standard · 2026-07-16
Claim covered: Spinner: WCAG status-message requirements used to qualify non-focus-moving announcements.
Verified on 2026-07-16 · rev. 1