Bootstrap 5 Progress Steps
Progress Steps (also called a step indicator or wizard progress bar) is a multi-stage navigation component that shows users exactly where they are in a sequential process, how many steps remain, and which steps are already complete. Bootstrap 5 does not ship a dedicated progress steps component out of the box, so it is typically built using a combination of flexbox utilities, the .nav or .list-group classes, custom CSS for connectors, and badge or icon elements for step markers. Use it whenever a task spans multiple distinct phases and abandonment risk increases without clear orientation cues.
Primary Class
.progress-stepsCommon Use Cases
- →E-commerce checkout flows showing Cart, Shipping, Payment, and Confirmation stages so customers know exactly how many screens remain before their order is placed
- →SaaS onboarding wizards guiding new users through Account Setup, Team Invite, Integration, and Go Live steps to reduce drop-off during first-run experiences
- →Multi-page insurance or loan application forms where applicants must complete Personal Details, Financial Info, Document Upload, and Review sections in a fixed order
- →Software installation wizards on documentation or download pages that walk users through License Agreement, Choose Directory, Install Options, and Finish stages
Variants & Classes
| Variant | Description |
|---|---|
| Progress Steps Default | Standard progress steps with Bootstrap's default styling. |
| Progress Steps Responsive | Responsive variant that adapts to different screen sizes. |
Code Example
<div class="d-flex align-items-center justify-content-between mb-4" aria-label="Checkout progress">
<!-- Step 1: Complete -->
<div class="d-flex flex-column align-items-center">
<div class="rounded-circle bg-success text-white d-flex align-items-center justify-content-center mb-1" style="width:40px;height:40px;">
<i class="bi bi-check-lg"></i>
</div>
<small class="text-success fw-semibold">Cart</small>
</div>
<!-- Connector -->
<div class="flex-grow-1 border-top border-success mx-2" style="height:2px;"></div>
<!-- Step 2: Active -->
<div class="d-flex flex-column align-items-center">
<div class="rounded-circle bg-primary text-white d-flex align-items-center justify-content-center mb-1" style="width:40px;height:40px;">
<span class="fw-bold">2</span>
</div>
<small class="text-primary fw-semibold">Shipping</small>
</div>
<!-- Connector -->
<div class="flex-grow-1 border-top border-secondary mx-2" style="height:2px;"></div>
<!-- Step 3: Upcoming -->
<div class="d-flex flex-column align-items-center">
<div class="rounded-circle bg-secondary text-white d-flex align-items-center justify-content-center mb-1" style="width:40px;height:40px;">
<span class="fw-bold">3</span>
</div>
<small class="text-secondary">Payment</small>
</div>
<!-- Connector -->
<div class="flex-grow-1 border-top border-secondary mx-2" style="height:2px;"></div>
<!-- Step 4: Upcoming -->
<div class="d-flex flex-column align-items-center">
<div class="rounded-circle bg-secondary text-white d-flex align-items-center justify-content-center mb-1" style="width:40px;height:40px;">
<span class="fw-bold">4</span>
</div>
<small class="text-secondary">Confirm</small>
</div>
</div>Live Examples
Basic Progress Steps
Canvas Framework Variants
The Canvas template extends Bootstrap 5 with 1,658+ component variants. Generate any of these using Canvas Builder:
- ✓Canvas Builder generated progress steps with custom colours
- ✓Progress Steps with interactive states
- ✓Responsive progress steps for all screen sizes
Best Practices
Use aria-current for accessibility
Add aria-current="step" to the active step's wrapper element so screen readers can announce the current position in the sequence. Pair it with aria-label on the outer container naming the process (for example, 'Checkout progress') to give assistive technology full context.
Collapse labels on small screens
Use Bootstrap's responsive display utilities such as d-none d-sm-block on the step label text so the indicator stays usable on narrow mobile viewports without labels overflowing. Keeping the numbered circles always visible is enough orientation on small screens.
Distinguish complete, active, and upcoming states visually
Apply bg-success with a checkmark icon for completed steps, bg-primary for the current step, and bg-secondary or border-only circles for upcoming steps. This three-state visual vocabulary prevents users from confusing where they are with where they have already been.
Make connectors scale with step count
Use flex-grow-1 on connector divs rather than fixed widths so the spacing between circles automatically redistributes when you add or remove steps. Hard-coded pixel widths break layouts as soon as the step count changes.