Designer
All toolsCSS Loader Generator
Generate pure CSS spinners and loading animations to copy.
Preview
CSS
<div class="loader"></div>
.loader {
width: 48px;
height: 48px;
border: 4.8px solid #3b82f633;
border-top-color: #3b82f6;
border-radius: 50%;
animation: spin 1s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }Frequently asked questions
- When should I show a loader vs a skeleton screen?
- Use a loader (spinner) for actions that finish in 1-10 seconds, like form submissions. Use skeleton screens for content that will fill the layout, since they show structure and feel faster perceptually.
- How long should a spinner spin before something changes?
- If a task takes longer than about 4 seconds, swap the spinner for a progress indicator or status message. Indefinite spinners make users wonder if the app froze.
- Why does my CSS spinner stutter?
- Animating border or width forces layout work on every frame. Use transform: rotate() on a single element and the animation will run on the GPU compositor, smooth even on weak devices.