Browse
Design

A skeleton screen that turns into the real page

Describe the layout of a page and get a loading skeleton in CSS where every grey block is the exact size of the content it stands for, with a shimmer, a reduced motion fallback and a demo that fades the real content in without anything jumping.

No votes yet this week
Output
Video + Image + Text
Written with
Claude Fable 5.1
Added
Updated

The prompt

Build a skeleton loading screen for this page, as one HTML file I can open and watch.

The page layout: [DESCRIBE IT, e.g. a top bar with an avatar, a name and a subtitle; a wide hero image with a title and two lines; three cards in a row, each with an image, a title and two lines. Or paste the HTML of the real page]
What loads first, if anything: [e.g. the top bar is already there, the rest comes from one API call]
Brand colour: [HEX or "your call"]

Rules:
- Every placeholder has the same width, height, radius and position as the content it stands for. When the content arrives, nothing moves and nothing resizes. Reuse the page's own CSS classes for the layout; only the inside of each block changes.
- A slow shimmer across the placeholders. Under prefers-reduced-motion, a gentle opacity pulse instead, or nothing.
- Placeholders are aria-hidden and the container has aria-busy while loading, so a screen reader doesn't read out a page of empty boxes.
- The demo shows the skeleton for about three seconds, then fades the real content in block by block in reading order. Include a replay button.
- One CSS variable for the placeholder colour, one for the shimmer colour, and one for the fade duration.

Keep the skeleton CSS in its own section at the top of the file, so I can lift it into the real project.
  • loading
  • skeleton
  • ui

What it generates

3 examples

NoteThis is an example. Results change between runs and model versions. Claude Prompts is a fan project and is not affiliated with Anthropic.

Getting the most from this prompt

Why the sizes have to match

A skeleton that is roughly the shape of the page is worse than a spinner, because when the content lands everything jumps and the reader loses their place. The first rule in the prompt is that every placeholder is the exact size of what replaces it, and the easiest way to get that is to reuse the page's own layout classes, which is why the prompt asks for the real HTML if you have it.

Watch the demo twice

Play it once looking at the whole page, then once looking at a single card. On the second viewing you should see the text appear inside the block without the block changing. If something shifts, the placeholder wasn't the right size, and the fix is in the skeleton CSS, not in the animation.

Don't skeleton what's already there

If the top bar renders before the data call, say so. A skeleton over content the user could already see is a step backwards. The prompt asks what loads first for exactly this reason, and it's worth answering precisely.

How to use this prompt

  1. [01] Copy

    Copy the prompt

    Use the copy button above. The full text is included, nothing is cut off.

  2. [02] Fill in

    Replace the yellow parts

    Everything highlighted in yellow is a placeholder. Swap it for your own topic, audience or data.

  3. [03] Vote

    Run it in Claude and vote

    If the result helped, press the heart. Votes decide which prompts make the weekly top 10.

More like this

All design prompts
Image outputA landing page hero for a parcel tracking app, with a bold headline, a signup button and an illustrated parcel card

One file landing page hero

A complete, responsive hero section in a single HTML file. No frameworks, no images, ready to paste into a site or build on.

Learn the technique

All articles
2 min read

How to use XML tags in Claude prompts

Wrapping parts of your prompt in simple tags is one of the easiest ways to get more reliable answers from Claude. A practical guide with examples.