Web InnoventixFreeCode

Character Reveal Heading

Original · free

A cinematic heading that blurs and lifts in one character at a time with a staggered, scroll-triggered reveal.

byWeb InnoventixReact + Tailwind
character revealletter by letter animationframer motion textblur in textstaggered text revealanimated heading
Open

Copy prompt gives Claude Code, Cursor or v0 a ready-to-paste prompt that recreates this exact component.

npx shadcn@latest add https://webinnoventix.com/r/text-character-reveal.json
text-character-reveal.tsx
"use client";

import { motion, type Variants } from "motion/react";

const heading = "Every letter earns its place";
const sub = "A cinematic character reveal that blurs in one glyph at a time.";

const charBox: Variants = {
  hidden: {},
  show: { transition: { staggerChildren: 0.028 } },
};

const char: Variants = {
  hidden: { opacity: 0, y: "0.5em", filter: "blur(8px)" },
  show: {
    opacity: 1,
    y: "0em",
    filter: "blur(0px)",
    transition: { duration: 0.5, ease: "easeOut" },
  },
};

const wordBox: Variants = {
  hidden: {},
  show: { transition: { staggerChildren: 0.06, delayChildren: 0.5 } },
};

const wordItem: Variants = {
  hidden: { opacity: 0, y: 10 },
  show: { opacity: 1, y: 0, transition: { duration: 0.5, ease: "easeOut" } },
};

export default function TextCharacterReveal() {
  const words = heading.split(" ");

  return (
    <section className="relative flex min-h-[80vh] items-center justify-center overflow-hidden bg-zinc-50 px-6 py-24 dark:bg-zinc-950">
      <div
        aria-hidden="true"
        className="pointer-events-none absolute inset-0 -z-10 [background-image:radial-gradient(circle_at_center,rgba(99,102,241,0.10),transparent_60%)]"
      />

      <div className="mx-auto max-w-3xl text-center">
        <motion.p
          initial={{ opacity: 0, y: 8 }}
          whileInView={{ opacity: 1, y: 0 }}
          viewport={{ once: true }}
          transition={{ duration: 0.5, ease: "easeOut" }}
          className="text-sm font-semibold uppercase tracking-[0.3em] text-indigo-500 dark:text-indigo-400"
        >
          Character reveal
        </motion.p>

        <motion.h2
          variants={charBox}
          initial="hidden"
          whileInView="show"
          viewport={{ once: true, amount: 0.5 }}
          aria-label={heading}
          className="mt-6 text-4xl font-bold tracking-tight text-zinc-900 sm:text-6xl lg:text-7xl dark:text-white"
        >
          {words.map((w, wi) => (
            <span
              key={`${w}-${wi}`}
              aria-hidden="true"
              className="mr-[0.25em] inline-block whitespace-nowrap"
            >
              {w.split("").map((c, ci) => (
                <motion.span
                  key={`${c}-${ci}`}
                  variants={char}
                  className="inline-block"
                >
                  {c}
                </motion.span>
              ))}
            </span>
          ))}
        </motion.h2>

        <motion.p
          variants={wordBox}
          initial="hidden"
          whileInView="show"
          viewport={{ once: true, amount: 0.5 }}
          aria-label={sub}
          className="mx-auto mt-6 max-w-xl text-lg leading-relaxed text-zinc-600 dark:text-zinc-400"
        >
          {sub.split(" ").map((w, i) => (
            <motion.span
              key={`${w}-${i}`}
              variants={wordItem}
              aria-hidden="true"
              className="mr-[0.25em] inline-block"
            >
              {w}
            </motion.span>
          ))}
        </motion.p>

        <motion.div
          initial={{ scaleX: 0 }}
          whileInView={{ scaleX: 1 }}
          viewport={{ once: true }}
          transition={{ duration: 0.9, ease: "easeInOut", delay: 0.4 }}
          className="mx-auto mt-10 h-px w-40 origin-center bg-gradient-to-r from-transparent via-indigo-500 to-transparent"
        />
      </div>
    </section>
  );
}

Dependencies

motion

Licence

Built by Web Innoventix. Free for personal and commercial use, no attribution required.

Built by Web Innoventix

Need a custom interface, a full website, or SEO that gets you cited by AI? We design, build and rank it end to end.

Get a free quote

Similar components

Browse all →
Aurora Gradient Headline

Aurora Gradient Headline

Original

An animated headline whose living multi-colour gradient drifts across every letter while the words blur and stagger into place on scroll.

Shimmer Sweep Headline

Shimmer Sweep Headline

Original

A headline with a polished light sheen that glides endlessly across the letters and races faster on hover.

Rotating Words Headline

Rotating Words Headline

Original

A headline whose final word flips through a curated set with a blurred vertical roll while the rest of the line stays perfectly still.

Spotlight Hero

Spotlight Hero

Original

A centred hero with a soft radial spotlight, badge and dual call-to-action.

Split Hero

Split Hero

Original

A two-column hero pairing a headline and CTAs with a product mock and social proof.

Gradient Spotlight Hero

Gradient Spotlight Hero

Original

A minimal centred hero with a soft gradient-mesh backdrop, announcement pill and dual call-to-action buttons.

App Preview Hero

App Preview Hero

Original

A centred hero that pairs headline copy with a realistic product dashboard mock built entirely from markup, complete with browser chrome and a floating notification card.

Waitlist Capture Hero

Waitlist Capture Hero

Original

A dark, focused hero with an inline email capture form and avatar social proof, ready for pre-launch waitlists.

Image Backdrop Hero

Image Backdrop Hero

Original

A cinematic full-bleed hero with a layered image-style backdrop, overlaid left-aligned copy and a trusted-by logos strip.

Gradient Mesh Hero with Staggered Text Reveal

Gradient Mesh Hero with Staggered Text Reveal

Original

A full-screen hero pairing a drifting animated gradient-mesh backdrop with a word-by-word staggered blur-in headline and a logo marquee under the fold.

Typewriter Rotating Words Hero

Typewriter Rotating Words Hero

Original

A hero whose headline cycles through rotating words with a live typewriter caret over an animated grid backdrop, degrading to a gentle word swap when reduced motion is on.

Floating UI Cards Hero with Mouse Parallax

Floating UI Cards Hero with Mouse Parallax

Original

A hero with glassy floating UI cards that drift continuously and shift on mouse-parallax depth around a staggered centre headline.