The classic single-element CSS spinner: a faint circular track with one colored arc that rotates. One div, one keyframe, works everywhere.
ring · spinner · minimal · tailwind
Two opposing arcs spin around an invisible track. A slightly more energetic take on the ring spinner that still needs only a single element.
ring · spinner
A dashed circular border that rotates slowly. Reads as 'working' without the urgency of a solid arc, so it suits background sync and autosave indicators.
ring · spinner · subtle
A conic gradient masked into a ring, so the arc fades from transparent to full color like a comet tail. Modern, single element, no extra markup.
ring · spinner · gradient
Three dots bounce up and down in a staggered rhythm. The friendliest loader in the set, and the one most people picture when they say 'loading dots'.
dots · playful · tailwind
Three dots grow and shrink in sequence. Calmer than bouncing dots because nothing changes position, only scale.
dots · subtle
Three dots fade in and out one after another. Nothing moves or resizes, which makes this the safest dots loader for dense UI and tiny inline spots.
dots · minimal · inline · tailwind
The chat-app 'someone is typing' bubble: three small dots lifting in turn inside a rounded pill. Use it for streaming AI responses and message threads.
dots · chat · inline · tailwind
Five dots ripple upward in a smooth sine-like wave. A wider, more graceful sibling of the bouncing dots that fills a horizontal space nicely.
dots · playful
Five vertical bars stretch and shrink like an audio equalizer. Great for media players, voice input, and anything that is 'processing' rather than 'fetching'.
bars · audio
Two rings expand outward and fade, like drops hitting water. A calm, spacious loader for empty states and full-screen waits.
ring · subtle
A solid dot that throbs while a soft halo expands away from it. The 'ping' pattern from status indicators, turned into a loader.
dots · subtle · minimal · tailwind
A small planet circles a faint orbit ring. Playful without being loud, and it stays readable at very small sizes.
ring · playful
Eight rounded spokes fade in turn around a center point, the pattern iOS and macOS use for activity indicators. Rotation is faked with opacity, so it is very cheap to render.
spinner · ios · minimal
A square flips over on the X axis, then the Y axis, with a little perspective. The 'rotating plane' from SpinKit, in one element.
shapes · 3d
A square rotates while its corners round off into a circle and back. Two properties, one keyframe, and a lot of personality.
shapes · playful
A three-by-three grid of squares that collapse and reappear in a diagonal sweep. Dense and satisfying, best at medium sizes where the grid is legible.
shapes · grid
Four rounded squares orbit a shared center while each one breathes in and out. Feels like a logo mark coming together, so it works well as a brand loader.
shapes · playful
Three placeholder lines with a light band sweeping across them. The skeleton screen pattern: show the shape of the content before the content arrives.
skeleton · placeholder · subtle · tailwind
A thin track with a bar that slides across it endlessly. Use it when you have no idea how long the wait is, at the top of a page or under a form.
bars · progress · minimal
A ball drops onto a soft shadow, squashes, and springs back up. A little Disney squash-and-stretch goes a long way toward making a wait feel shorter.
playful · shapes
A clock face whose hands sweep round at different speeds. A literal metaphor that suits scheduling, timers, and 'this may take a minute' waits.
playful · ring
A CSS-drawn heart that beats with a double thump. Built from two rotated pseudo-elements, no SVG or icon font required.
playful · shapes
Two triangles form an hourglass that pauses, then flips with a quick spin. The pause is what sells it, so keep the timing if you retint it.
playful · shapes
The word 'Loading' followed by three dots that appear one at a time. Change the text to anything: Saving, Thinking, Generating.
text · inline · minimal
A disabled button with a small spinner beside its label, for form submits and 'Save' actions. The spinner inherits the button's text color so it works on any brand color.
button · spinner · inline · tailwind
A translucent, blurred overlay with a spinner and a message, for the moment between a route change and its data. Swap absolute for fixed to cover the whole viewport.
overlay · spinner · page
The thin glowing bar that runs along the top of the page while a route loads, the way YouTube and GitHub do it. Swap absolute for fixed to pin it to the viewport.
bars · progress · page · minimal
The Android and Google-apps spinner: an arc that grows and shrinks while the whole ring rotates. An SVG circle with an animated dash, styled entirely from CSS.
spinner · ring · material · svg
Five dots chase each other around a circle, bunching up on the slow side and spreading out on the fast side, the way the Windows boot and loading indicator does.
spinner · dots · windows
A ring that fills clockwise while the number in the middle counts up to 100%. The counter is pure CSS using a registered custom property, so there is no JavaScript to wire up.
progress · ring · text
A card-shaped placeholder with an avatar, two lines of text and an image block, all shimmering. Drop it in wherever a feed item, product card or comment is about to appear.
skeleton · placeholder · subtle · tailwind
A band of light sweeps through the word 'Thinking…', the status line every AI chat app shows while a model is working. Text stays selectable and screen-reader friendly.
text · ai · inline · subtle
A block cursor blinking after a word, the terminal-style 'waiting for output' signal that streaming AI interfaces have adopted. Uses steps() so the blink is crisp, not a fade.
text · ai · inline · minimal
A half ring with a soft outer glow and an inner bloom, like a neon tube. Best on a dark background, where the glow has somewhere to go.
ring · spinner · glow · dark
A real six-faced cube turning in 3D space with translucent faces, so you can see the back edges through the front. Uses preserve-3d and a perspective on the parent.
3d · shapes
A coin with a rim and a highlight, flipping on its vertical axis with perspective. Natural for payments, checkout and anything that involves money.
3d · playful · shapes
Five hanging balls where the outer ones swing out and knock back in, one side then the other. A desk-toy loader for pages that want a little wit.
playful · physics
Two strands of dots weave past each other, shrinking as they pass behind and growing as they come to the front. Eight columns, two pseudo-elements each, no SVG.
dots · science · playful
A circle slowly fills with liquid whose surface rocks like real water. Two rotating rounded squares, clipped by the circle, make the wave.
ring · playful · physics
Three blobs stretch apart and snap back together like mercury, using an SVG goo filter that works on any background. The filter is inline, so it still needs no external assets.
dots · playful · physics · svg
A sweeping beam circles a ringed radar screen and lights up a blip as it passes. A natural fit for search, scanning, syncing and 'looking for devices' states.
ring · scan · playful
A single toothed gear turning steadily. Drawn with a repeating conic gradient and a radial mask, so it stays razor sharp at any size and needs no icon.
shapes · spinner · settings
A stroke chases itself around an infinity symbol on top of a faint track. The SVG path uses pathLength so the dash math is in round numbers.
svg · minimal · shapes
Eight dots around a circle swell and fade in sequence, giving a rotation without anything actually rotating. Very cheap to render and reads well even at 16px.
dots · spinner · minimal
A chomping Pac-Man eats a trail of dots that drift toward its mouth. Two rotating half-circles and three fading dots, all CSS.
playful · retro
A glowing sun with two planets on faint orbits, spinning at different speeds and in opposite directions. Slow and calm enough for a long wait.
ring · playful · science
The letters of 'Loading' hop one after another in a wave. One span per letter, one keyframe, staggered delays. Swap the letters for your own word.
text · playful
A battery outline that fills from empty to full, then resets. Good for uploads, installs and anything with a clear 'done' at the end.
progress · playful · shapes
A spinner whose color slides through the whole spectrum as it turns, using a hue-rotate filter on top of your accent color. Set the accent and it cycles from there.
ring · spinner · colorful
Three signal arcs light up outward from a dot, over and over, the universal 'connecting…' symbol. Good for reconnect states, pairing and network checks.
network · shapes · minimal
Twelve segments arranged in a ring, advancing one tick at a time with steps() instead of gliding. A mechanical, clockwork feel that suits dashboards and dev tools.
ring · spinner · minimal
Open any loader, copy the HTML into your markup and the CSS into your stylesheet. Nothing else is required: no JavaScript, no icon fonts, no SVG. Each loader's classes are prefixed with its own name so several can share a page.
To change the color, set --ldr-color on the loader or any ancestor.
To change the size, set --ldr-size. Everything inside scales from
those two values, so a 16px inline spinner and a 96px page loader are the same
snippet.
Every snippet ships with a prefers-reduced-motion rule that slows the
animation for people who have asked their OS for less motion. Keep it.