Skip to content
中文
Sign in

CSS Loading Spinners

18 pure-CSS loading spinners — rings, dots, bars, pulse, ripple, skeleton shimmer — with colour, size and speed controls and copyable HTML + CSS.

FreeRuns in your browserNo sign-up

Loaders

Settings

Colour
Track / second colour
Preview background
Size 48px
Thickness 5px
Duration 1.0s
Accessibility

—

HTML


CSS


Related tools

CSS & design

How to build a CSS loading spinner

  1. Pick a loader from the gallery — rings, dots, bars, pulses, a skeleton shimmer and an indeterminate progress bar are all there.
  2. Set the colour, the track colour, the size, the stroke thickness and the duration; the stage shows the animation at full size.
  3. Copy the HTML and the CSS (or both at once) and paste them into your project — no images, no JavaScript, no library.

FAQ

Do these need JavaScript?

No. Every loader here is one element (sometimes with a few empty spans) plus CSS keyframes. Show and hide it however your app already does.

What is the reduced-motion fallback for?

Some people set “reduce motion” in their OS. The optional block wraps the animation in @media (prefers-reduced-motion: reduce) and slows or stops it, which keeps the loader accessible without removing it.

Can I use these inside a button?

Yes — pick a small size (16–24px), set the colour to currentColor in the copied CSS and drop the element next to the label. It will inherit the button's text colour.

Something missing or broken?

Request a tool, report a bug or share a tip with other users.