EN
My tools

CSS Loader Generator (Spinners)

Make a pure CSS loading spinner: ring, dual ring, bouncing dots, bars, pulse, ripple or segmented. Set color, size, thickness and speed; copy accessible HTML and CSS.

The faint full circle behind the ring spinner.
Ring, ripple and segment width.
My tools →
Advertisement

A CSS loader shows that something is happening without a GIF or a JavaScript library: a few lines of HTML and a keyframe animation that the browser runs smoothly on its compositor. This generator writes seven common designs — ring, dual ring, bouncing dots, bars, pulse, ripple and the 12-line segmented spinner — in your color, size, thickness and speed, with an accessible status label and a reduced-motion rule. The preview is an animated SVG drawn from the same CSS.

How to use this tool

  1. Pick a loader type.
  2. Set the color (and the track color for the ring), size, thickness and the duration of one cycle.
  3. Change the class name if "loader" clashes with your own CSS.
  4. Copy the HTML where the loader should appear and the CSS into your stylesheet.

Formula

ring: border-top in the color, other borders in the track color, rotate(360deg) every cycle · dots: size ÷ 4 per dot, gap = size ÷ 8, delays −0.32 and −0.16 of a cycle · segments: 12 lines rotated 30° apart, each fading one twelfth of a cycle after the last

Only transform and opacity are animated, which browsers can run without re-laying out the page. Negative delays start each part mid-cycle so the loader looks in motion from the first frame.

Example

The defaults make a 48 px ring with a 6 px #e5e7eb track and a #2563eb arc, turning once per second: border: 6px solid #e5e7eb; border-top-color: #2563eb; animation: loader-ring 1s linear infinite;. Bouncing dots at 48 px use three 12 px dots 6 px apart; at a 1.5 s cycle their delays are −0.48 s and −0.24 s.

Frequently asked questions

Are CSS loaders accessible?

The animation alone says nothing to a screen reader, so the HTML includes role="status" and a visually hidden "Loading…" text. Remove the loader or update the text when the content arrives.

Why slow the animation down for reduced motion instead of stopping it?

A loader that stops looks like a frozen page. A slower spin keeps the message "still working" while moving far less, which is the usual compromise for progress indicators.

Do CSS loaders slow the page down?

No — animating transform and opacity is cheap. Remember to remove the loader when it is hidden, as an endlessly running animation still uses some power.

Sources

Last updated:

Cite or embed this tool
APA

kakaoCalc. (2026, November 8). CSS Loader Generator (Spinners). https://kakao.mobile/tools/css-loader-generator/

MLA

“CSS Loader Generator (Spinners).” kakaoCalc, 8 Nov. 2026, kakao.mobile/tools/css-loader-generator/.

Paste this code into your page. The widget runs in your visitors' browsers, shows no ads and keeps a link back to this page. Embedding terms

Advertisement