Spinners

Indicate the loading state of a component with pure HTML & CSS spinners.

Spinners can be used to show a loading state. They’re built using pure HTML & CSS, requiring no JavaScript.

For accessibility purposes, each loader here includes a role="status" and a nested <span class="sr-only”>Loading…</span>.

Spinners

Border spinner

A simple spinning border.

Loading...

<div class="spinner-border" role="status">
  <span class="sr-only">Loading...</span>
</div>

Growing spinner

A simple growing dot.

Loading...

<div class="spinner-grow" role="status">
  <span class="sr-only">Loading...</span>
</div>

Customizing spinners

Colours

Simply add a .text-{COLOR} class to set the colour of a spinner.

Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

<div class="spinner-border text-primary" role="status">
	<span class="sr-only">Loading...</span>
</div>
<div class="spinner-border text-secondary" role="status">
	<span class="sr-only">Loading...</span>
</div>
<div class="spinner-border text-success" role="status">
	<span class="sr-only">Loading...</span>
</div>
<div class="spinner-grow text-danger" role="status">
	<span class="sr-only">Loading...</span>
</div>
<div class="spinner-grow text-warning" role="status">
	<span class="sr-only">Loading...</span>
</div>
<div class="spinner-grow text-info" role="status">
	<span class="sr-only">Loading...</span>
</div>

Alignment

Simply use margin utilities, flex styling or text align to influence the placement of the spinner.

Loading...
Loading...

<div class="d-flex justify-content-center">
	<div class="spinner-border m-3" role="status">
		<span class="sr-only">Loading...</span>
	</div>
</div>

<div class="text-center">
	<div class="spinner-border m-3" role="status">
		<span class="sr-only">Loading...</span>
	</div>
</div>

Size

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

Loading...
Loading...

<div class="spinner-border spinner-border-sm" role="status">
  <span class="sr-only">Loading...</span>
</div>
<div class="spinner-grow spinner-grow-sm" role="status">
  <span class="sr-only">Loading...</span>
</div>

Or, use custom CSS or inline styles to change the dimensions as needed.

Loading...
Loading...

<div class="spinner-border" style="width: 3rem; height: 3rem;" role="status">
  <span class="sr-only">Loading...</span>
</div>
<div class="spinner-grow" style="width: 3rem; height: 3rem;" role="status">
  <span class="sr-only">Loading...</span>
</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.


<button class="btn btn-primary" type="button" disabled>
  <span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>
  <span class="sr-only">Loading...</span>
</button>
<button class="btn btn-primary" type="button" disabled>
  <span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>
  Loading...
</button>


<button class="btn btn-primary" type="button" disabled>
  <span class="spinner-grow spinner-grow-sm" role="status" aria-hidden="true"></span>
  <span class="sr-only">Loading...</span>
</button>
<button class="btn btn-primary" type="button" disabled>
  <span class="spinner-grow spinner-grow-sm" role="status" aria-hidden="true"></span>
  Loading...
</button>

Read more