Spinners

Indicate the loading state of a component or page with Bootstrap spinners, built entirely with HTML, CSS, and no JavaScript.

Border spinner #

Use the border spinners for a lightweight loading indicator.

Example
Loading...
<div class="spinner-border d-block" role="status">
    <span class="visually-hidden">Loading...</span>
</div>

Colors #

The border spinner uses currentColor for its border-color , meaning you can customize the color with text color utilities . You can use any of our text color utilities on the standard spinner.

Example
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
<div class="row g-3">
    <div class="col-auto">
        <div class="spinner-border d-block text-primary" role="status">
            <span class="visually-hidden">Loading...</span>
        </div>
    </div>
    <div class="col-auto">
        <div class="spinner-border d-block text-secondary" role="status">
            <span class="visually-hidden">Loading...</span>
        </div>
    </div>
    <div class="col-auto">
        <div class="spinner-border d-block text-success" role="status">
            <span class="visually-hidden">Loading...</span>
        </div>
    </div>
    <div class="col-auto">
        <div class="spinner-border d-block text-danger" role="status">
            <span class="visually-hidden">Loading...</span>
        </div>
    </div>
    <div class="col-auto">
        <div class="spinner-border d-block text-warning" role="status">
            <span class="visually-hidden">Loading...</span>
        </div>
    </div>
    <div class="col-auto">
        <div class="spinner-border d-block text-info" role="status">
            <span class="visually-hidden">Loading...</span>
        </div>
    </div>
    <div class="col-auto">
        <div class="spinner-border d-block text-light" role="status">
            <span class="visually-hidden">Loading...</span>
        </div>
    </div>
    <div class="col-auto">
        <div class="spinner-border d-block text-dark" role="status">
            <span class="visually-hidden">Loading...</span>
        </div>
    </div>
</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!

Example
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
<div class="row g-3">
    <div class="col-auto">
        <div class="spinner-grow d-block text-primary" role="status">
            <span class="visually-hidden">Loading...</span>
        </div>
    </div>
    <div class="col-auto">
        <div class="spinner-grow d-block text-secondary" role="status">
            <span class="visually-hidden">Loading...</span>
        </div>
    </div>
    <div class="col-auto">
        <div class="spinner-grow d-block text-success" role="status">
            <span class="visually-hidden">Loading...</span>
        </div>
    </div>
    <div class="col-auto">
        <div class="spinner-grow d-block text-danger" role="status">
            <span class="visually-hidden">Loading...</span>
        </div>
    </div>
    <div class="col-auto">
        <div class="spinner-grow d-block text-warning" role="status">
            <span class="visually-hidden">Loading...</span>
        </div>
    </div>
    <div class="col-auto">
        <div class="spinner-grow d-block text-info" role="status">
            <span class="visually-hidden">Loading...</span>
        </div>
    </div>
    <div class="col-auto">
        <div class="spinner-grow d-block text-light" role="status">
            <span class="visually-hidden">Loading...</span>
        </div>
    </div>
    <div class="col-auto">
        <div class="spinner-grow d-block text-dark" role="status">
            <span class="visually-hidden">Loading...</span>
        </div>
    </div>
</div>

Alignment #

Use flexbox utilities , float utilities , or text alignment utilities to place spinners exactly where you need them in any situation.

Example
Loading...
<div class="d-flex align-items-center">
    <div class="text-muted">Loading...</div>
    <div class="spinner-border ms-auto" role="status" aria-hidden="true"></div>
</div>

Size #

Add .spinner-border-sm and .spinner-grow-sm to make a smaller spinner that can quickly be used within other components.

Example
Loading...
Loading...
<div class="row g-3">
    <div class="col-auto">
        <div class="spinner-border spinner-border-sm d-block" role="status">
            <span class="visually-hidden">Loading...</span>
        </div>
    </div>
    <div class="col-auto">
        <div class="spinner-grow spinner-grow-sm d-block" role="status">
            <span class="visually-hidden">Loading...</span>
        </div>
    </div>
</div>

Buttons #

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.

Example
<div class="row g-3">
    <div class="col-auto">
        <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>
    </div>
    <div class="col-auto">
        <button class="btn btn-primary" type="button" disabled="">
            <span
                class="spinner-border spinner-border-sm me-3"
                role="status"
                aria-hidden="true"
            ></span
            >Loading...
        </button>
    </div>
    <div class="col-auto">
        <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>
    </div>
    <div class="col-auto">
        <button class="btn btn-primary" type="button" disabled="">
            <span
                class="spinner-grow spinner-grow-sm me-3"
                role="status"
                aria-hidden="true"
            ></span
            >Loading...
        </button>
    </div>
</div>