Progress bar
Component preview
A visual and semantic indicator that shows a current completion value within a known range.
Build pack
Choose the task and destination. Technical names stay in English.
In your own words
Documented aliases: completion bar, determinate progress, upload progress
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.
Progress bar
Progress bar requires a meaningful measurable value; Spinner is for unknown completion, while Skeleton represents the eventual content layout.
Your task
Start the upload, observe a mid-progress value, cancel, restart, and reach the completed state.
Edge case to verify
If the server stops providing reliable values, the UI switches honestly to an indeterminate busy state instead of faking progress.
Mission
Start the upload, observe a mid-progress value, cancel, restart, and reach the completed state.
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.
Label
The persistent text that names a control or field.
Update measurable progress
The current value advances within a known minimum and maximum without excessive announcements.
Mark the region busy
The content region exposes its busy state while a separate visual indicator remains redundant.
Upload idle
Upload idle
Upload with measured progress
Upload with measured progress
Upload without a reliable estimate
Upload without a reliable estimate
Upload cancelled
Upload cancelled
Upload complete
Upload complete
Upload idle → Upload with measured progress
Start upload initializes the measured example at 25 percent of 20 MB.
Upload with measured progress → Upload complete
Complete sets the measured value to 100 percent and announces the finished upload.
Upload with measured progress → Upload without a reliable estimate
Simulate unavailable estimate removes the progress value while keeping the upload active.
Upload without a reliable estimate → Upload with measured progress
Restore estimate returns to the preserved measured value.
Upload with measured progress → Upload cancelled
Cancel stops the measured upload and exposes Restart.
Upload without a reliable estimate → Upload cancelled
Cancel stops the upload even when no reliable estimate is available.
Upload cancelled → Upload with measured progress
Restart begins the measured example again at 25 percent.
Upload without a reliable estimate → Upload complete
Complete finishes the upload and reports 100 percent even after the estimate became unavailable.
Upload complete → Upload idle
Reset restores the replayable upload example to zero.
progress
Equivalence caveat: Use a determinate progress element only when a meaningful current value and maximum are known; otherwise expose an indeterminate busy state.
Verify binding sourceWHATWG · standard · 2026-07-16
Claim covered: Progress bar: native progress value, maximum, determinate state, and indeterminate state semantics.
W3C WAI · standard · 2026-07-16
Claim covered: Progress bar: WCAG status-message requirements used to qualify non-focus-moving announcements.
Verified on 2026-07-16 · rev. 1