Progress Steps

A progress step helps users track their place in a short process by breaking it into clear, simple steps. This makes flows like setup or onboarding easier to follow and finish.

Default markup

Use .progress-steps as the container and .progress-steps-item for each segment. These two classes are enough to create the base component structure.

<ol class="progress-steps" aria-label="Onboarding progress">
  <li class="progress-steps-item"></li>
  <li class="progress-steps-item"></li>
  <li class="progress-steps-item"></li>
</ol>

The example below shows the default progress step structure.

<ol class="progress-steps" aria-label="Onboarding progress">
  <li class="progress-steps-item"></li>
  <li class="progress-steps-item"></li>
  <li class="progress-steps-item"></li>
  <li class="progress-steps-item"></li>
</ol>

Variants

Current and completed step

Use color classes to mark completed steps. Set aria-current="step" on the current item.

  1. Step 1
  2. Step 2
  3. Step 3
  4. Step 4
<ol class="progress-steps" aria-label="Setup progress">
  <li class="progress-steps-item bg-primary">
    <span class="visually-hidden">
      Step 1
    </span>
  </li>

  <li class="progress-steps-item bg-primary" aria-current="step">
    <span class="visually-hidden">
      Step 2
    </span>
  </li>

  <li class="progress-steps-item">
    <span class="visually-hidden">
      Step 3
    </span>
  </li>

  <li class="progress-steps-item">
    <span class="visually-hidden">
      Step 4
    </span>
  </li>

</ol>

Custom labels

Use hidden labels so assistive technologies can announce meaningful step names.

  1. Account
  2. Profile
  3. Billing
  4. Review
<ol class="progress-steps" aria-label="Checkout progress">
  <li class="progress-steps-item bg-primary">
    <span class="visually-hidden">
      Account
    </span>
  </li>

  <li class="progress-steps-item bg-primary">
    <span class="visually-hidden">
      Profile
    </span>
  </li>

  <li class="progress-steps-item bg-primary" aria-current="step">
    <span class="visually-hidden">
      Billing
    </span>
  </li>

  <li class="progress-steps-item">
    <span class="visually-hidden">
      Review
    </span>
  </li>

</ol>

Color state

Use contextual background classes on completed and current items. This helps match state color to your flow semantics.

  1. Step 1
  2. Step 2
  1. Step 1
  2. Step 2
  1. Step 1
  2. Step 2
<div class="mb-2">
  <ol class="progress-steps" aria-label="Green progress">
    <li class="progress-steps-item bg-green" aria-current="step">
      <span class="visually-hidden">Step 1</span>
    </li>
    <li class="progress-steps-item">
      <span class="visually-hidden">Step 2</span>
    </li>
  </ol>
</div>

<div class="mb-2">
  <ol class="progress-steps" aria-label="Orange progress">
    <li class="progress-steps-item bg-orange" aria-current="step">
      <span class="visually-hidden">Step 1</span>
    </li>
    <li class="progress-steps-item">
      <span class="visually-hidden">Step 2</span>
    </li>
  </ol>
</div>

<div>
  <ol class="progress-steps" aria-label="Red progress">
    <li class="progress-steps-item bg-red" aria-current="step">
      <span class="visually-hidden">Step 1</span>
    </li>
    <li class="progress-steps-item">
      <span class="visually-hidden">Step 2</span>
    </li>
  </ol>
</div>

Width and layout utilities

Use utility classes on .progress-steps to control width and placement in layouts.

  1. Step 1
  2. Step 2
  3. Step 3
  4. Step 4
  5. Step 5
<ol class="progress-steps w-50" id="profile-progress"
  aria-label="Profile completion">
  <li class="progress-steps-item bg-primary" aria-current="step">
    <span class="visually-hidden">
      Step 1
    </span>
  </li>

  <li class="progress-steps-item">
    <span class="visually-hidden">
      Step 2
    </span>
  </li>

  <li class="progress-steps-item">
    <span class="visually-hidden">
      Step 3
    </span>
  </li>

  <li class="progress-steps-item">
    <span class="visually-hidden">
      Step 4
    </span>
  </li>

  <li class="progress-steps-item">
    <span class="visually-hidden">
      Step 5
    </span>
  </li>

</ol>
© 2026 Tabler. All rights reserved.