Spinners
Border spinner
Use the border spinners for a lightweight loading indicator.
<div class="spinner-border" role="status">
<span class="visually-hidden">Loading...</span>
</div>
Colors
You can use any of our text color utilities on the standard spinner.
<div class="spinner-border text-primary" role="status"></div>
<div class="spinner-border text-secondary" role="status"></div>
<div class="spinner-border text-success" role="status"></div>
<div class="spinner-border text-danger" role="status"></div>
<div class="spinner-border text-warning" role="status"></div>
<div class="spinner-border text-info" role="status"></div>
<div class="spinner-border text-light" role="status"></div>
<div class="spinner-border text-dark" role="status"></div>
Alignment
Use flexbox utilities, float utilities, or text alignment utilities to place spinners exactly where you need them in any situation.
<div class="d-flex justify-content-center">
<div class="spinner-border" role="status"></div>
</div>
Size
Add .spinner-border-sm
and .spinner-border.avatar-**
to make a smaller spinner that can quickly be used within other components.
<!-- Large -->
<div class="spinner-border avatar-lg text-primary" role="status"></div>
<div class="spinner-grow avatar-lg text-secondary" role="status"></div>
<!--Medium -->
<div class="spinner-border avatar-md text-primary" role="status"></div>
<div class="spinner-grow avatar-md text-secondary" role="status"></div>
<!--Small -->
<div class="spinner-border avatar-sm text-primary" role="status"></div>
<div class="spinner-grow avatar-sm text-secondary" role="status"></div>
<!--Extra Small -->
<div class="spinner-border spinner-border-sm" role="status"></div>
<div class="spinner-grow spinner-grow-sm" role="status"></div>
Growing spinner
If you don’t fancy a border spinner, switch to the grow spinner. While it doesn’t technically spin, it does repeatedly grow!
<div class="spinner-grow" role="status">
<span class="visually-hidden">Loading...</span>
</div>
Color Growing spinner
You can use any of our text color utilities on the standard spinner.
<div class="spinner-grow text-primary" role="status"></div>
<div class="spinner-grow text-secondary" role="status"></div>
<div class="spinner-grow text-success" role="status"></div>
<div class="spinner-grow text-danger" role="status"></div>
<div class="spinner-grow text-warning" role="status"></div>
<div class="spinner-grow text-info" role="status"></div>
<div class="spinner-grow text-light" role="status"></div>
<div class="spinner-grow text-dark" role="status"></div>
Placement
Use flexbox utilities
, float utilities
, or text alignment
utilities to place spinners exactly where you need them in any situation.
<div class="d-flex align-items-center">
<strong>Loading...</strong>
<div class="spinner-border ms-auto" role="status" aria-hidden="true"></div>
</div>
Buttons spinner
Use spinners within buttons to indicate an action is currently processing or taking place. You may also swap the text out of the spinner element and utilize button text as needed.
<!-- Border Spinner -->
<button class="btn btn-primary" type="button" disabled>
<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span><span class="visually-hidden">Loading...</span>
</button>
<button class="btn btn-primary" type="button" disabled>
<span class="spinner-border spinner-border-sm me-1" role="status" aria-hidden="true"></span>
Loading...
</button>
<!-- Growing Spinner -->
<button class="btn btn-primary" type="button" disabled>
<span class="spinner-grow spinner-grow-sm" role="status" aria-hidden="true"></span> <span class="visually-hidden">Loading...</span>
</button>
<button class="btn btn-primary" type="button" disabled>
<span class="spinner-grow spinner-grow-sm me-1" role="status" aria-hidden="true"></span>
Loading...
</button>