name thatuiuser interface
spinner“still working, no idea how long”
progress ring“the ring that fills up”
0%
progress bartrack behind, fill on top

Progress Ring vs. Spinner vs. Progress Bar

/ <progress> · ProgressView /

also called circular progress indicator, loading spinner, determinate progress indicator, linear progress indicator

A spinner loops without showing how much work remains. A determinate progress ring fills an arc around a circle, while a linear progress bar fills across a track; both represent a known value. A percentage label can make that value exact, but it must agree with the indicator's accessible progress value.

Anatomy — every part, named

  1. 1
    Indeterminate spinnerrole="progressbar"

    The spinning circle that keeps looping is an indeterminate spinner: it says work is happening, not how much is left.

  2. 2
    Determinate progress ringaria-valuenow

    “The ring that fills up” is a determinate progress ring: its circular arc represents a known completion value.

  3. 3
    Linear progress bar<progress>

    The bar that fills from one side to the other is a linear progress bar; use <progress> when its value is known.

  4. 4
    Progress track<progress>

    The unfilled rail behind a progress ring or bar is the track; it shows the indicator's full range.

  5. 5
    Percentage labelaria-valuenow

    The number beside or inside the indicator is the percentage label, a readable statement of the current progress value.

Prompt — paste into your agent

Use the correct Progress Indicator: an indeterminate spinner when the remaining work is unknown, a determinate progress ring when a compact circular arc should fill toward completion, or an HTML <progress> linear bar when there is room for a readable track. For a custom indicator use role="progressbar" with aria-valuenow, and expose any visible percentage as the same accessible value; SwiftUI's cousin is ProgressView.

In code

The exact names this thing goes by in code — each row is one framework’s word for it. Use the row that matches your project (or paste it into your prompt).

HTML<progress>
SwiftUIProgressView
ARIArole="progressbar"
ARIAaria-valuenow

See also

Search

Describe the UI element you're thinking of