By Tim King · Updated
Logo Reveal Animation CSS
Fade, Scale, Blur, Mask Wipe or Letter-Stagger Intro for Your Brand Name
OneTask is free, with no sign-up, and built by one person.
If this tool saved you time, a coffee helps keep new ones coming.
How the Logo Reveal works
This logo reveal animation CSS generator animates a wordmark onto the page. Type your brand name, pick how it should arrive and watch the reveal play. Adjust the timing,
typeface and colours, then copy an h1 and a few lines of CSS that you can drop into a landing
page, a splash screen or the top of a slide deck. Every change replays the animation so you can
judge it from the start.
A logo reveal is a single entrance for a wordmark. The name appears once, with a little ceremony, then sits still for the rest of the visit. Done well it makes a landing page, a portfolio or a video title card feel finished. Done badly it delays the one thing the visitor came to see. This generator writes the CSS for the tasteful version: one animation, one direction, and a resting state that is plain, readable text.
How the logo reveal animation CSS works
The generated code puts the starting state on the element itself, such as opacity: 0 and a
small offset, and uses a @keyframes reveal block with only a to step. Because there is no
from step, the browser animates from whatever the element currently looks like to the final
state. animation-fill-mode: forwards, the last word in the animation shorthand, keeps it
there when the animation ends. The wordmark is hidden from the first paint, so there is no flash
of the finished logo before the effect starts.
Each reveal animates a different property:
| Reveal | What changes | Suits |
|---|---|---|
| Fade up | Opacity, plus a 24 px lift | Almost anything |
| Scale in | Opacity and scale from 60 % | Short, bold names |
| Blur in | Opacity and a 16 px blur | Soft, premium brands |
| Mask wipe | clip-path opening left to right |
Editorial, typographic marks |
| Rise from line | Clip from the bottom and a lift | Film-style title cards |
| Letter stagger | Each letter fades, lifts and untilts | Playful or tech brands |
Opacity, transform and clip-path are cheap for the browser to animate. The blur filter costs more, especially on a large heading on a low-end phone, so keep Blur in for sizes you have tested.
Timing and easing
The three easing options are cubic-bezier curves:
- Smooth is
cubic-bezier(0.2, 0.7, 0.2, 1), a gentle ease-out. Safe default. - Snappy is
cubic-bezier(0.77, 0, 0.18, 1), slow at both ends and fast in the middle. It feels deliberate and editorial. - Overshoot is
cubic-bezier(0.34, 1.56, 0.64, 1). The second value above 1 pushes the element past its final position before it settles back, which pairs well with Scale in.
Material Design and Apple's guidelines both put most interface motion between about 200 and 500 ms. A logo reveal can take a little longer because it happens once, but beyond about a second it starts to feel like a loading screen. Start delay waits after load so the reveal is not competing with images and fonts popping in; 100 to 300 ms is usually enough.
For Letter stagger, the whole effect lasts delay + (letters − 1) × stagger + duration. An eight-letter name at 50 ms stagger and 700 ms duration finishes 1,050 ms after the delay. A twenty-letter name at the same settings takes 1,650 ms, so cut the stagger for long names or the last letters arrive after the visitor has already looked away.
Reading the generated code
The output has two parts. The HTML is an <h1 class="logo">, with one <span> per character
for Letter stagger. Each span carries a custom property, --i, holding its index. The CSS uses
it in animation-delay: calc(delay + var(--i) * stagger), so there is one rule for every letter
rather than a rule per span. The .logo block also carries your font, weight, size, letter
spacing and colour. Copy both parts; the background colour is only for the preview.
Pitfalls
- One
h1per page. The snippet uses anh1because a standalone reveal is usually the page title. If the logo sits in a header above a real page heading, change it to adivor apso the document outline stays correct. - Accessibility of split letters. Some screen readers announce one span at a time, so a
stagger can be read out letter by letter. Add
aria-label="Your Brand"to the heading andaria-hidden="true"to the spans. - Reduced motion. Wrap the animation lines in
@media (prefers-reduced-motion: no-preference)so visitors who have asked their system for less motion see the logo at rest straight away. The starting state (opacity 0) must move inside that query too, or the logo will never appear for them. - Emoji and accented letters. Splitting by character can break emoji and combining accents into separate pieces. Keep emoji out of a staggered wordmark.
- Web fonts. If the brand font loads late, the reveal may play in the fallback font and then swap. Preload the font, or add a longer start delay.
- Contrast. A pale grey name on white looks elegant in a mockup and fails in daylight. Check the pair with the contrast checker and the guide to colour contrast that passes WCAG.
Going further
To animate a whole line of copy rather than a wordmark, the text animation generator has more effects. The easing comparison plays the curves side by side, and the cubic-bezier editor lets you shape your own. For multi-step motion, build it in the keyframe timeline editor. If your logo is an SVG outline rather than text, the SVG path draw animation traces it stroke by stroke.
FAQ
Why is there no flash of the text before it animates?
The starting state is set on the element itself, not only in the first keyframe, so the wordmark is hidden from the moment it renders and stays hidden until the animation begins.
Can I use my own font?
Yes. The generator offers a few generic families; change the font-family line in the CSS
to whatever your site loads. If the font arrives late, the reveal may play on the fallback
face, so add a short start delay or use font-display: block.
How do I play it only once per visit?
CSS cannot remember, so it replays on every load. To stop that, set a flag in
sessionStorage after the first play and add a class that skips the animation when the flag
is present.
Does letter stagger break screen readers?
Most read the spans as one word, but not all. Adding aria-label with the full name to the
heading makes it reliable and costs nothing.
See also: all Shadows & Motion tools, Layout & Spacing, Shapes & SVG, UI Components, Forms & Inputs, Colour.
Related tools
Text Animation
Animate a headline letter by letter and copy the CSS.
Easing Comparison
Run two CSS easings side by side and copy the winner.
Keyframe Animator
Build and preview a CSS @keyframes animation from three stops.
CSS Text Shadow Generator
Visual text-shadow builder with drop, long, neon and outline presets.
Animated Banner
Design an animated ad banner and export GIF or WebM.