Skip to main content
FeedbackLevel 1

Spinner

加载转圈

WebMobileDesktopDifficulty: Easy

A circle that keeps spinning to say "loading, please wait" — the simplest loading indicator, and the one most often overused.

01

Live Demo

Actually clickable
A spinner only suits a short wait. Past 10 seconds, offer a "Retry" instead of making people sit and watch.

What you just saw:The spinning loading icon in the middle of the page, the little circle inside a button after you tap it, the spinner on a cold app launch.

02

What it actually is

A spinner is the simplest loading indicator and the most overused one. Its biggest problem is that it leaves the page empty: users have no idea how long they will wait, or whether anything has even started.

spinnerloading spinnerloading indicatorspinner ringbusy indicator
03

Anatomy · What it's made of

  1. Ring圆环

    12–32px, 2–3px stroke width

  2. Rotation旋转

    Constant speed, 0.8s per revolution

  3. Container容器

    Inside the button, or centered in the page

04

When to Use

When it fits, and when it doesn't
Spinner usage recommendations
SituationUse it?
The wait is short (<1s) and the page structure does not changeYes
A small, contained load inside a buttonYes
A single isolated widget is loadingYes
The wait exceeds 1 second and there is page structure to showNo
It is the first load of a whole pageNo

An empty page plus a spinner reads as a broken page. Use a skeleton for first loads.

If there is still no answer after 10 seconds, "This is taking longer than usual — retry?" is kinder than another second of spinning.

05

Similar Patterns

Don't mix these up
Full comparisonSpinner vs Progress Bar vs SkeletonData is loading. How should I show it?See the table
06

How to tell AI

Three levels of prompt

Add the component name and specifics

After a button is tapped, show a spinner and disable it, replacing the label with "Saving…". For page-level loading use a 24px spinner with a line reading "Loading your photos…", and after 10 seconds offer a retry.

07

Don't just say this to AI

Bad → Better

Don't say this to AI

Show a spinner while loading.

Say this instead

Use a spinner for loading: an SVG ring rotating at 0.8s linear, 16px inside a button with the button width unchanged, 24px with "Loading…" text at page level, a retry option after 10 seconds, and static dots under reduced-motion.

08

Share this card

Social-ready

Turn this pattern into a 3:4 or 1:1 knowledge card and export it as PNG right in the browser. No backend needed.