CSS spinners

Rotating loaders built from borders, conic gradients and dots.

Nearly every spinner here is one element: a transparent border with one coloured side, or a conic gradient masked into a ring, rotated forever. That matters more than it sounds — a spinner is what renders while the rest of the page is still arriving, so it cannot depend on anything that has not arrived yet.

45 matching44 effects1 primitiveFree to copy

The timeless rotating-border spinner, refined with a subtle base ring for depth.

A saturated conic wheel of seven colors that rotates continuously — striking as a hero panel backdrop.

Classic norm rotating ring spinner in blue.

Two concentric rings spinning in opposite directions in ocean colors.

Avatar wrapped in a rotating ocean conic ring — the "story" ring pattern, in pure CSS.

Thin ocean arc spinner — one element, drawn by a conic gradient and cut to a ring with a radial mask.

Four CSS triangles hinged at a shared base and splayed by quarter turns, tilted so the solid closes rather than reading as loose fins.

A lime coin with a visible rim built from stacked discs spins on its vertical axis and speeds up on hover.

Twelve radial ticks around a circle, each fading out in turn so a bright head appears to sweep the dial.

Delivery tracker whose spine fills from the scroller’s own scroll timeline while each milestone dot lights on its own view timeline as it crosses the dashed read line pinned across the pane.

The pending state a submit button needs: blue tint, inline spinner, progress cursor.

Busy-state ocean button with an inline ring spinner and a breathing label.

Conic ocean sweep punched into a ring by a radial mask — one element, no border tricks.

Three ocean satellites parked at 120-degree intervals and rotated as one group, so the ring keeps its spacing at any speed.

Quantity control with the field flanked by its own increment buttons, in tabular figures so the box does not resize between 9 and 10.

Toggle whose knob carries a spinner once flipped, for settings that persist over the network and are not actually on until the server says so.

Two gapped arcs cut from one conic gradient with border-drawn heads at each opening, the whole glyph spinning on an ease that speeds through the middle of each turn.

Single dot traced around a lemniscate in eight keyframe stations, crossing at the waist so the two lobes read as one continuous circuit rather than two orbits.

Four quadrants hinged at the shared centre corner, each folding in on X and out on Y a beat after the last so the square appears to turn itself inside out.

A gold coin with two different faces spins continuously around its vertical axis.

Setup checklist where each step carries its own time estimate and the running step spins a partial ring instead of a tick.

Compact cassette with a written label and a window onto two spoked hubs that turn continuously while the wound tape thickens on one reel and thins on the other.

Draft editor with a blinking caret and a green saved stamp in its header that swaps for a spinning saving indicator the moment the field is touched.

A conic gradient masked into a thin ring that rotates — a more colorful alternative to the classic spinner.

Showing 24 of 44. Search the rest →

Primitives1

See all →

Questions about css spinners

How do I stop these for people who get motion sick?
Wrap the animation in `@media (prefers-reduced-motion: no-preference)`, which is what every spinner here does. The fallback is a static ring, so the element still communicates "busy" without moving.
Does a spinner need an ARIA role?
The spinner itself should be `aria-hidden`, with the live region on the thing it is standing in for — `role="status"` on the container and a short "Loading results" inside it. A rotating div announced as an image helps nobody.
Are these css spinners free to use?
All 45 are free to copy and use in your own projects, including commercial ones. A Pro licence exists for redistribution — shipping them inside a product other people buy — and the full terms are on the licence page.
How do I add one to my project?
Copy the CSS and the markup from the artifact's page — there is nothing to install, no runtime and no build step. The CLI (`npx hoverlab add`) is there for the component tiers above these, where a file gets written rather than pasted.
Why does this page mix components and whole pages?
Because the phrase does. The same search covers 44 CSS effects and 1 primitive — one of them is the right size for what you are building, and which one depends on how much of the screen you still have to write.