Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

For Bootstrap 5.3, put the progress-bar semantics on the outer .progress element and use the inner .progress-bar for the visual fill. Give the indicator an accessible name and expose its current value and range; changing the bar’s width alone is not enough.

Bootstrap 5.3 progress bar: basic markup

This example follows Bootstrap 5.3’s current structure. The wrapper carries the progressbar role and ARIA values; the nested element displays the fill and its label.

<div class="progress" role="progressbar" aria-label="Upload progress" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">
  <div class="progress-bar" style="width: 25%">25%</div>
</div>

The percentage in the style controls the visual width. Keep it in sync with aria-valuenow and any visible percentage. In a real application, update all three from the same progress value rather than maintaining separate hard-coded numbers.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Bootstrap’s documentation describes the wrapper as indicating the maximum and the inner bar as indicating progress visually. See the Bootstrap 5.3 progress component documentation.

Bootstrap versions use different progress-bar markup

Do not copy an older Bootstrap snippet into a 5.3 project without checking its structure. Bootstrap introduced the new progress markup in v5.3.0 and says the previous structure is deprecated but will continue to work until v6. Bootstrap 5.2 documents that earlier structure, where the inner .progress-bar carries the role and ARIA values.

Bootstrap version Where progressbar semantics go Reference
5.3 On the outer .progress wrapper Bootstrap 5.3 documentation
5.2 On the inner .progress-bar Bootstrap 5.2 documentation

Use the markup documented for your project’s Bootstrap version; do not mix the 5.2 and 5.3 patterns in one example. Bootstrap’s 5.3 page identifies the change as “New markup in v5.3.0” and explains that the earlier HTML structure was replaced with a more accessible one.

Make the progress understandable without relying on color

Name the indicator and expose its value

Each progressbar needs an accessible name, supplied here by aria-label. You can also label it with aria-labelledby when a visible heading or text already names the task. Expose the current value with aria-valuenow. Bootstrap’s example pattern also sets aria-valuemin and aria-valuemax; WAI-ARIA guidance says those two properties only need explicit values when the minimum differs from 0 or the maximum differs from 100. See the WAI-ARIA Authoring Practices guidance on range properties.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Keep labels legible

A label inside a short fill can be clipped or lack sufficient contrast against the fill or track. If it will not fit clearly, place the text outside the bar. Do not use color as the only signal for a status such as success, warning, or failure; include words or another non-color cue as well. Bootstrap calls out both label contrast and clipping concerns in its progress component guidance.

Choose a visual treatment without changing the meaning

Bootstrap 5.3 documents width and height sizing, labels, contextual background colors, striped and animated backgrounds, and stacked progress bars. These change presentation, not the need to provide an accessible name and value.

  • Width: Set the fill width to match the current progress value.
  • Height: Adjust the bar’s height to suit the surrounding layout; check that any internal label remains readable.
  • Color: Use contextual background colors for visual emphasis, but pair them with text or another cue so color is not the only carrier of meaning.
  • Stripes and animation: Use these as visual treatments, not as substitutes for an exposed value or status.
  • Stacked bars: Bootstrap’s stacked pattern applies segment widths to individual .progress elements inside .progress-stacked. Make the meaning of each segment clear to users who cannot distinguish the colors.

For the exact classes and examples supported by your Bootstrap version, consult the official Bootstrap 5.3 component page.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Announce changing progress during an operation

ARIA values make the current progress available, but changing aria-valuenow does not by itself guarantee that assistive technology will announce every update. For a running task, consider pairing the indicator with a live region that communicates status changes. W3C’s ARIA25 technique demonstrates using a live region for this purpose. Keep announcements useful rather than flooding users with every tiny increment.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Quick implementation checklist

  • Confirm the project’s Bootstrap version and use its matching markup.
  • For Bootstrap 5.3, put role="progressbar", the accessible name, and the value attributes on .progress.
  • Keep the visual width, visible label, and exposed current value consistent.
  • Check label clipping and contrast at the actual bar height and fill width.
  • Communicate status through more than color, and consider a live region when progress changes during a task.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.