Progress bar

A visual indication that progress is occurring.

Description

A typical progress bar

Design Problem

When a process takes longer than 0.5 seconds to complete a user needs reassurance the system is responding to their input.

If a process takes, or is expected to take, longer than about 3 seconds then the user also needs reassurance that progress is being made. Without this they are more likely to become frustrated and abandon the process.

Description

A progress bar shows the total amount of work needing to be done (the length of the bar), the amount already done (the coloured part of the bar), and the rate at which it's being completed (the speed the coloured section is growing).

The amount of work can be expressed in various ways:

The most useful of these is generally expected duration, since that tells the user how long they will need to wait.

Indicating units of work can provide useful confirmation that all necessary units are being processed. If the user expected 100 units to be processed, but it's showing 50, they may want to abort and check the work to be done.

An arbitrary scale, with percentage complete is the least useful, since it provides no information about the amount of work being done and only the rate of the progress bar's movement indicates how long the user is likely to have to wait. But for short durations that works perfectly well.

Task names on the left and time remaining or progress on the right

When to use

Progress bars work best when the duration of the task is between 3 seconds and roughly 15 minutes.

If the duration of the task is less than 3s then the progress bar will fill so fast it's almost redundant.

If the duration is longer than about 15 minutes then the progress becomes slow enough that it's almost imperceptible, which means it fails to reassure the user that progress is being made. 15 minutes is 900 seconds, so at 1px per second a progress bar would be 900px wide.

Implementations Variations & AlternativesVariations

If the underlying process is not able to provide feedback about progress then best the UI can do is indicate that a long running process is running.

If this is expected to be a few seconds, rather than minutes or longer an indeterminate progress bar could be used.

An indeterminate progress bar

The progress bar is available in two sizes, regular and small. Typically you would use the regular progress bar, but the small if you need a progress bar in small container, such as a in a table, or popup where the width is also restricted.

Alternatives

If none of the above is working for you, here are some other options.

Dev docsAccessibility

Implementations should take care that users with visual impairments can still be informed of updates to progress. They should be actively tested using screen readers.

See the following resources:

A11y ImplementationAccessibility Implementation

Implementations should take care that users with visual impairments can still be informed of updates to progress. They should be actively tested using screen readers.

See the following resources:

Built in Accessibility features of semantic elements