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.
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
- Pick a loader type.
- Set the color (and the track color for the ring), size, thickness and the duration of one cycle.
- Change the class name if "loader" clashes with your own CSS.
- 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:
Page address with these inputs: https://kakao.mobile/tools/css-loader-generator/
Cite or embed this tool
kakaoCalc. (2026, November 8). CSS Loader Generator (Spinners). https://kakao.mobile/tools/css-loader-generator/
“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