Skip to content
charmotion
Logo loading animation

A loading animation made from your own logo.

Upload your logo mark. The loading state is a seamless loop of your exact logo, and when the wait is over it can play a success or error reaction and settle back to rest. Use the .riv for a loader that reacts, transparent WebM and MOV for overlays, and MP4 or GIF where only a plain file will do.

Loop
Seamless, your logo as-is
Finish
success or error one-shot
Files
.riv, WebM, MOV, MP4, GIF
Plan
Starter, $20/month
Sizzle, a Charmotion demo character Live Rive file
Loops
Play once

This is the actual .riv our engine delivers, playing in your browser. It's the same state machine you drive from your app with one number input and a trigger per one-shot.

Wait, then show how it went

const vm = r.viewModelInstance;       // Character view model
vm.number("mood").value = 5;          // loading loop

try {
  await save();
  vm.number("mood").value = 0;        // rest on idle after the reaction
  vm.trigger("success").trigger();    // plays once
} catch {
  vm.number("mood").value = 0;
  vm.trigger("error").trigger();
}

A trigger plays once and returns to the current mood, so the logo always comes to rest on idle.

Good to know

  • It's an indeterminate loader: there is no percent-done input. For long waits, pair it with a progress bar or text.
  • Your logo is animated as-is. This is not a CSS, SVG or Lottie spinner.
  • GIFs come on a solid background; there is no transparent GIF. Over images or video, use the .riv or WebM with an HEVC MOV for Safari.
  • Under about a second, show nothing: a loader that flashes feels slower. See how long loading animations should run.

One loader, every place you wait

WhereFile
Website preloader.riv, or transparent WebM with HEVC MOV for Safari
App loading screen.riv (mood 5), or HEVC-alpha MOV on iOS
Button or inline spinner.riv at small size
Email, chat, docsGIF on a solid background
Video and presentationsTransparent MOV
Real output

Delivered files, exactly as you'd download them.

MP4 Every set

1080 × 1080 at 60 fps. Here: Gummo’s wave, from a delivered set.

Transparent WebM & MOV Every set

Alpha channel included, so the checkerboard shows through. MOV is HEVC with alpha for Apple apps and editors.

Kiko thinking, GIF output

GIF Every set

Light previews for docs, email and chat. Kiko’s “thinking” loop.

9:16 launch video Every set

1080 × 1920 for stories and splash screens. Sizzle’s launch intro.

kiko.riv · 150 KB

CharacterStateMachine
number input mood
0–9: idle, happy, wave, thinking, sad, loading, listening, talking, sleeping, attention
triggers: success · error · yes · no · enter · exit
LaunchStateMachine
launch → idle, plays once

Rive state machine Every set

One small file instead of 17 videos. It’s what powers the demo at the top of this page.

import { useRive, useStateMachineInput } from "@rive-app/react-canvas";

export function Kiko({ mood = 0 }) {
  const { rive, RiveComponent } = useRive({
    src: "/kiko.riv",
    stateMachine: "CharacterStateMachine",
    autoplay: true,
  });
  const input = useStateMachineInput(rive, "CharacterStateMachine", "mood");
  if (input) input.value = mood; // 0 idle · 1 happy · 2 wave · 3 thinking · 4 sad · 5 loading …
  return <RiveComponent style={{ width: 320, height: 320 }} />;
}

Paste-ready code Every set

Web, React and SwiftUI components named after your character.

Formats included per plan
FormatSpecsStarter & All in one
MP41080 × 1080, 60 fps, all 17 animationsIncluded
9:16 launch video1080 × 1920 MP4Included
GIF480 px previews, solid backgroundIncluded
Rive (.riv)Vector; Data Binding view model + legacy inputs: mood for loops, triggers for one-shots, launch machineIncluded
Transparent WebMVP9 with alpha, 1080 × 1080Included
Transparent MOVHEVC with alphaIncluded
CodeWeb (HTML), React and SwiftUI componentsIncluded
Download all (.zip)Rive file, code, README and posters in one archiveIncluded
Video exportMP4, GIF, transparent WebM and MOV, 9:16: pick formats and animations on the set page, ready in about a minuteIncluded
AI assistants (MCP)Claude, Cursor, VS Code and CodexIncluded
Plans

Start free. Upgrade when you need more.

A loader that reacts when work finishes needs the .riv, and a loader over page content needs transparent WebM or MOV: both are in every paid plan, from Starter ($20/month). Every set also has the loop as MP4 and GIF on a solid background. Prices in USD; tax is calculated at checkout by Creem.

Free

$0forever

Try it with your own logo and character.

  • Logo animation ideas (3 concepts)
  • App-screen preview of your character
  • No card needed
  • 2 AI designs (logos or characters)
  • Works from Claude, Cursor, Codex
  • Email support

All in one

$100/month

For teams and several brands.

  • 15 logo animations a month
  • 10 character sets a month
  • Cinematic 3D video included
  • 40 AI designs a month
  • 3 refines per logo animation
  • Priority builds and support
FAQ

Before you start.

More in the full FAQ.

Can I use a logo loader as a WordPress, Webflow or Framer preloader?

Yes. Webflow plays the .riv natively and Framer through its official Rive plugin. WordPress needs a Rive plugin or a Custom HTML embed, or use the transparent WebM with an HEVC MOV source in a video block. Hide the preloader as soon as the page is ready, not after a fixed delay.

Is there a transparent GIF version of the loading animation?

No. GIFs come on a solid background at 480 px, which works when the loader sits on a matching color. For a loader over images or video, use the transparent WebM for Chrome, Firefox and Edge with the HEVC MOV for Safari, or the .riv, which is transparent everywhere.

Does the logo loading animation loop seamlessly?

Yes. The loop starts and ends on the same pose, so there is no jump at the seam in the .riv, the videos or the GIF. In the .riv it also blends into success, error or idle when you change state.

Can the loader show percentage progress?

No. The loading state is an indeterminate loop with no percent input. For waits longer than about ten seconds, show a progress bar or text beside it, and fire the success trigger when the work completes.

How big is a logo loading animation file?

A flat logo's .riv is usually 35 to 45 KB for all 17 animations; detailed or 3D logos keep their pixels, so expect around 1 MB. The Rive web runtime comes on top (about 373 KB brotli for the canvas-lite build). If the loader never needs to react, a single transparent WebM loop avoids the runtime.

See it with your character first.

Free, in your browser. Your image stays on your device unless you ask for the short animated clip.

Free preview