Back to compare picker

Step progress vs Step navigation / step indicator vs Progress bar vs Meter

Use step progress when users need a live status readout of step completion inside a workflow; use step navigation for moving through pages, progress bar for measurable system work, and meter for a read-only bounded scalar value.

Learn the decision

Match the interaction to the person's task

Use step progress when users need a live status readout of step completion inside a workflow; use step navigation for moving through pages, progress bar for measurable system work, and meter for a read-only bounded scalar value.

Step progress

Use it when: A workflow has several named stages and users need to understand current, completed, pending, blocked, failed, waiting, or skipped status.

Make this state clear: Current stage with aria-current step or equivalent current-step semantics.

Observe the result: After the user uploads a document, Documents changes to Waiting for review instead of Complete until the file scan and reviewer check pass.

Study the full pattern →

Step navigation / step indicator

Use it when: A linear form, application, checkout, or setup flow has three or more meaningful steps.

Make this state clear: Default state with completed, current, and upcoming steps.

Observe the result: After a user enters valid contact details and continues, Contact details becomes complete and Documents becomes current.

Study the full pattern →

Progress bar

Use it when: A system operation has a measurable total or bounded progress value.

Make this state clear: Idle state before the operation starts.

Observe the result: A user uploads evidence.zip, sees progress move from 12% to 64%, cancels before commit, retries after a network error, and gets a completed receipt only after server processing succeeds.

Study the full pattern →

Meter

Use it when: A current value exists inside a meaningful known range.

Make this state clear: Normal state inside the acceptable band.

Observe the result: A user sees storage at 86 of 100 GB, understands the account is in the critical band, opens Manage storage, and deletes old exports before uploads are blocked.

Study the full pattern →

Practice the judgment: Imagine this situation: A checkout says Payment is complete because the user opened the page, but the card authorization failed. Write the person's goal, choose one of these patterns, and show the state that helps the person continue. Use the decision rules and source trail below to explain your choice.

Review the underlying principle →

Decision dimensions

Dimension Step progressStep navigation / step indicatorProgress barMeter
UI or UX UI + UX - Workflow-stage status indicatorUI + UX - Linear multistep task progress indicatorUI + UX - Measurable system-operation progress indicatorUI + UX - Read-only scalar value gauge within a known range
UI guidance Show a compact ordered status readout for named stages with distinct completed, current, pending, blocked, skipped, waiting, and failed treatments that include text or icon cues beyond color.Show a compact ordered list of named steps near the task heading, with visually distinct completed, current, upcoming, optional, and error states.Show a labeled bar with a track, filled value, and nearby helper text that reports the measurable unit such as percent, bytes, rows, files, records, or stages.Use native meter semantics or equivalent read-only meter attributes, and pair color bands with text such as Healthy, Warning, Critical, Low, Normal, High, or Over limit.
UX guidance Use step progress when users need to monitor how a workflow is advancing across named stages and which proof event changed each stage, especially when some stages depend on validation, review, upload, or approval.Use step navigation to reduce uncertainty in long linear tasks by showing where users are, what is done, and what remains.Use a progress bar when the system can honestly report movement toward a known finish and users need to decide whether to wait, cancel, retry, continue elsewhere, or return later.Explain whether higher, lower, or middle values are better, what threshold the current value crosses, and what action is available when the meter enters a warning or critical range.
Good UI An onboarding status strip shows Profile completed, Documents current, Compliance waiting, Review blocked, and Finish locked with text labels for each state.A five-step application shows Eligibility complete, Contact details current, Documents upcoming, Review upcoming, and Submit upcoming, with the current step emphasized and a matching page heading.A document upload card says Uploading evidence.zip, shows 64%, 32 of 50 MB, a Cancel action, and keeps the rest of the form usable.An account storage card says 86 GB of 100 GB used, marks 70 GB as warning and 90 GB as critical, and labels the current state Critical.
Bad UI All visited steps turn green even though required documents failed server validation.All future steps look clickable and complete even though required earlier fields are blank.A progress bar reads 100% complete while virus scanning and server acceptance are still pending.A progress bar for uploading evidence.zip is implemented as a meter, so task completion and capacity status are confused.
Good UX After the user uploads a document, Documents changes to Waiting for review instead of Complete until the file scan and reviewer check pass.After a user enters valid contact details and continues, Contact details becomes complete and Documents becomes current.A user uploads evidence.zip, sees progress move from 12% to 64%, cancels before commit, retries after a network error, and gets a completed receipt only after server processing succeeds.A user sees storage at 86 of 100 GB, understands the account is in the critical band, opens Manage storage, and deletes old exports before uploads are blocked.
Bad UX The step progress says Review ready while the address step contains unsaved edits that would change shipping tax.The indicator says Step 4 of 5 while the page content and route still show Step 2.Users leave after 100% transfer even though server processing later rejects the file.Users mistake quota level for upload completion because the meter animates like progress.
Best fit A workflow has several named stages and users need to understand current, completed, pending, blocked, failed, waiting, or skipped status.A linear form, application, checkout, or setup flow has three or more meaningful steps.A system operation has a measurable total or bounded progress value.A current value exists inside a meaningful known range.
Avoid when Users need a full navigation component for moving between pages rather than a status readout.The journey has only one or two screens.The wait is short and only needs scoped activity feedback.The value represents task completion or loading progress.
Required state Current stage with aria-current step or equivalent current-step semantics.Default state with completed, current, and upcoming steps.Idle state before the operation starts.Normal state inside the acceptable band.
Accessibility burden Expose the current stage with aria-current="step" or equivalent platform semantics and mark only one step current.Use aria-current on the current labeled step and include hidden or visible status text for completed, current, upcoming, optional, and error states.Provide an accessible name that identifies the operation and affected object.Prefer the native meter element where possible because it carries the correct read-only meter semantics.
Common misuse Treating visited pages as completed stages.Using a step indicator as breadcrumbs, tabs, side navigation, or pagination.Fabricating progress values just to make users feel movement.Using a meter to show task progress such as upload completion.

Step progress

UI or UX
UI + UX - Workflow-stage status indicator
UI guidance
Show a compact ordered status readout for named stages with distinct completed, current, pending, blocked, skipped, waiting, and failed treatments that include text or icon cues beyond color.
UX guidance
Use step progress when users need to monitor how a workflow is advancing across named stages and which proof event changed each stage, especially when some stages depend on validation, review, upload, or approval.
Good UI
An onboarding status strip shows Profile completed, Documents current, Compliance waiting, Review blocked, and Finish locked with text labels for each state.
Bad UI
All visited steps turn green even though required documents failed server validation.
Good UX
After the user uploads a document, Documents changes to Waiting for review instead of Complete until the file scan and reviewer check pass.
Bad UX
The step progress says Review ready while the address step contains unsaved edits that would change shipping tax.
Best fit
A workflow has several named stages and users need to understand current, completed, pending, blocked, failed, waiting, or skipped status.
Avoid when
Users need a full navigation component for moving between pages rather than a status readout.
Required state
Current stage with aria-current step or equivalent current-step semantics.
Accessibility burden
Expose the current stage with aria-current="step" or equivalent platform semantics and mark only one step current.
Common misuse
Treating visited pages as completed stages.

Step navigation / step indicator

UI or UX
UI + UX - Linear multistep task progress indicator
UI guidance
Show a compact ordered list of named steps near the task heading, with visually distinct completed, current, upcoming, optional, and error states.
UX guidance
Use step navigation to reduce uncertainty in long linear tasks by showing where users are, what is done, and what remains.
Good UI
A five-step application shows Eligibility complete, Contact details current, Documents upcoming, Review upcoming, and Submit upcoming, with the current step emphasized and a matching page heading.
Bad UI
All future steps look clickable and complete even though required earlier fields are blank.
Good UX
After a user enters valid contact details and continues, Contact details becomes complete and Documents becomes current.
Bad UX
The indicator says Step 4 of 5 while the page content and route still show Step 2.
Best fit
A linear form, application, checkout, or setup flow has three or more meaningful steps.
Avoid when
The journey has only one or two screens.
Required state
Default state with completed, current, and upcoming steps.
Accessibility burden
Use aria-current on the current labeled step and include hidden or visible status text for completed, current, upcoming, optional, and error states.
Common misuse
Using a step indicator as breadcrumbs, tabs, side navigation, or pagination.

Progress bar

UI or UX
UI + UX - Measurable system-operation progress indicator
UI guidance
Show a labeled bar with a track, filled value, and nearby helper text that reports the measurable unit such as percent, bytes, rows, files, records, or stages.
UX guidance
Use a progress bar when the system can honestly report movement toward a known finish and users need to decide whether to wait, cancel, retry, continue elsewhere, or return later.
Good UI
A document upload card says Uploading evidence.zip, shows 64%, 32 of 50 MB, a Cancel action, and keeps the rest of the form usable.
Bad UI
A progress bar reads 100% complete while virus scanning and server acceptance are still pending.
Good UX
A user uploads evidence.zip, sees progress move from 12% to 64%, cancels before commit, retries after a network error, and gets a completed receipt only after server processing succeeds.
Bad UX
Users leave after 100% transfer even though server processing later rejects the file.
Best fit
A system operation has a measurable total or bounded progress value.
Avoid when
The wait is short and only needs scoped activity feedback.
Required state
Idle state before the operation starts.
Accessibility burden
Provide an accessible name that identifies the operation and affected object.
Common misuse
Fabricating progress values just to make users feel movement.

Meter

UI or UX
UI + UX - Read-only scalar value gauge within a known range
UI guidance
Use native meter semantics or equivalent read-only meter attributes, and pair color bands with text such as Healthy, Warning, Critical, Low, Normal, High, or Over limit.
UX guidance
Explain whether higher, lower, or middle values are better, what threshold the current value crosses, and what action is available when the meter enters a warning or critical range.
Good UI
An account storage card says 86 GB of 100 GB used, marks 70 GB as warning and 90 GB as critical, and labels the current state Critical.
Bad UI
A progress bar for uploading evidence.zip is implemented as a meter, so task completion and capacity status are confused.
Good UX
A user sees storage at 86 of 100 GB, understands the account is in the critical band, opens Manage storage, and deletes old exports before uploads are blocked.
Bad UX
Users mistake quota level for upload completion because the meter animates like progress.
Best fit
A current value exists inside a meaningful known range.
Avoid when
The value represents task completion or loading progress.
Required state
Normal state inside the acceptable band.
Accessibility burden
Prefer the native meter element where possible because it carries the correct read-only meter semantics.
Common misuse
Using a meter to show task progress such as upload completion.
Decision rules
  • Choose step progress when the main question is which workflow stages are complete, current, blocked, skipped, failed, or waiting after validation or system checks.
  • Choose step navigation when the step indicator also represents the user's page position and supports moving through a linear multistep form or task route.
  • Choose progress bar when the system can report a numeric value for upload, download, import, validation, export, or processing completion.
  • Choose meter when the value is a current read-only measurement inside a meaningful known range, such as storage usage, battery, risk, or quota.
  • Do not mark a workflow stage complete because the user visited it; completion needs saved answers, accepted documents, passed checks, or another authoritative proof event.
  • Use blocked, cannot start, skipped, waiting, failed, and retry labels when a stage is not simply pending, and explain what event will change that state.
  • Keep step progress read-only unless the product intentionally combines it with step navigation; if users can activate segments, the availability and focus behavior must match the navigation contract.
  • Do not use a percent bar for workflow stages unless the unit is actually numeric system work; five named stages are not the same as 60 percent complete.
Inspect live examples
Failure modes
  • A checkout says Payment is complete because the user opened the page, but the card authorization failed.
  • A step strip shows five green segments while the current route, heading, and saved state still belong to the second step.
  • A dynamic dependent review step is counted in the total before the user triggers it, so later progress appears to move backward.
  • A progress bar is used for application steps, hiding which stage is blocked and what validation is needed.
  • A step progress display is styled as clickable navigation even though future stages cannot be opened.
  • A failed background check appears only as a red segment with no text, retry, or affected-step explanation.

Saved items