Contact

Tools  /  Generators  /  Loading Screen Generator

Loading Screen Generator

Build a loading screen — a spinner (ring, dual ring, dots, bars, pulse, grid, bouncing balls), a message and sub-text, an indeterminate or a determinate progress bar, a full-screen or inline overlay with a solid / blur / gradient backdrop, a fade-out on load and a reduced-motion fallback — with a live preview and HTML + CSS + JS output, a drop-in "hide on window.load" script, or a React / Vue / Tailwind component.

What this tool does

It builds the markup, styles and (optional) JavaScript for a loading overlay and previews it live, spinning.

Spinners

Ring, dual ring, three bouncing dots, equaliser bars, a pulsing circle, a 3×3 grid, and bouncing balls — all pure CSS @keyframes, sized and speed-controlled by variables.

Progress

Indeterminate is a looping bar for unknown duration. Determinate renders a track you drive with a --progress custom property or the small JS API (setProgress(0.6)).

Hiding it

The drop-in script adds the overlay immediately and removes it on window.load with a fade. Or call hideLoader() yourself when your app is ready.

Accessibility

The overlay is role="status" with aria-live="polite"; under prefers-reduced-motion the animations stop and a static state shows.

Output

HTML + CSS + JS, a drop-in script, or React / Vue / Tailwind.

Privacy

Everything runs in your browser. Nothing is uploaded.

Frequently asked questions

How do I drive the determinate progress bar?
Set the CSS custom property --progress (0 to 1) on the .loader element, or use the generated setProgress(fraction) helper which also updates the aria-valuenow. The bar width transitions smoothly.
When does the drop-in script hide the overlay?
On the window "load" event by default — after images and stylesheets finish. You can call hideLoader() earlier (e.g. when your framework mounts) and it will fade out then.
Are the spinners pure CSS?
Yes. Every spinner is CSS @keyframes with no JavaScript and no SVG — they animate on the compositor and stop entirely under prefers-reduced-motion.
Can it be inline instead of full-screen?
Yes — switch the layout to "inline" and it becomes a centered block you can drop into a card or a section while its content loads.
Is anything sent to a server?
No. The loading screen is generated entirely in your browser.
Theme Accent