Remotion text animations: 256 free animated text effects, with code

How to animate text in Remotion, and 256 ready-made, MIT-licensed text animation components you install with the shadcn CLI: word reveals, typewriter, highlights, word swaps, counters, glitch and kinetic type.

Last updated: November 9, 2026

To make animated text effects in Remotion, every style value of the text (opacity, position, blur, letter spacing) has to be computed from the current frame with useCurrentFrame() and interpolate() or spring(). You split the text into words or letters and offset each one's start frame. Or you install a finished effect: Remocn has 256 free, MIT-licensed text animation components for Remotion, plus 31 caption styles, added with npx shadcn@latest add @remocn/<name>.

Each component is copied into your project as one TypeScript file. There is no runtime package to depend on, and you can edit the source.

How to animate text in Remotion

A word-by-word reveal written by hand looks like this:

tsx
import { interpolate, useCurrentFrame } from "remotion";
 
export const WordReveal = ({ text }: { text: string }) => {
  const frame = useCurrentFrame();
 
  return (
    <h1 style={{ fontSize: 96 }}>
      {text.split(" ").map((word, i) => {
        // Each word starts 4 frames after the previous one and takes 12 frames.
        const progress = interpolate(frame - i * 4, [0, 12], [0, 1], {
          extrapolateLeft: "clamp",
          extrapolateRight: "clamp",
        });
        return (
          <span
            key={i}
            style={{
              display: "inline-block",
              marginRight: "0.25em",
              opacity: progress,
              translate: `0 ${(1 - progress) * 20}px`,
            }}
          >
            {word}
          </span>
        );
      })}
    </h1>
  );
};

The same effect from Remocn, followed by a highlighted line:

bash
npx shadcn@latest add @remocn/staggered-fade-up @remocn/marker-highlight
tsx
import { AbsoluteFill, Sequence } from "remotion";
import { MarkerHighlight } from "@/components/remocn/marker-highlight";
import { StaggeredFadeUp } from "@/components/remocn/staggered-fade-up";
 
export const Hook = () => (
  <AbsoluteFill>
    <Sequence durationInFrames={90}>
      <StaggeredFadeUp text="Every launch needs a video" staggerDelay={4} />
    </Sequence>
    <Sequence from={90} durationInFrames={90}>
      <MarkerHighlight before="Yours ships " highlight="today" after="." />
    </Sequence>
  </AbsoluteFill>
);

Every component page lists the component's props and its natural length in frames at 30fps. That length is the minimum for its Sequence. Add hold frames on top if the text should stay on screen after it settles.

Remotion text animation pitfalls

These are the mistakes that make text flicker, jump or render differently from the preview. Remocn's text components handle each of them in their source, which you can read after install.

  • CSS transitions and keyframes don't render. Remotion renders frames out of order and in parallel, so wall-clock animation never reaches the MP4. None of the typography components uses a CSS transition, animation or @keyframes; every value comes from the frame.
  • Math.random() changes on every render. Scrambles and glitches built on it flicker and differ between render threads. None of the components calls Math.random(). The ones with randomness in them, such as matrix-decode, rgb-glitch-text and type-wall, use Remotion's seeded random(), so frame 40 always looks the same.
  • The font isn't loaded on the first frame. The text renders in a fallback font, and anything measured from it (line widths, where a highlight or caret sits) is wrong. Most of the components load their font through @remotion/google-fonts, and most of the ones that lay text out by measuring it hold the render with delayRender() until the font has loaded and the measurement is done.
  • Unclamped interpolate() keeps going. Without extrapolateRight: "clamp", a fade passes 1 and a slide overshoots its end position. The components clamp their interpolations.
  • Timing written in frames breaks at another frame rate. typewriter takes charsPerSecond and converts it with the composition's fps. Almost every component also takes a speed prop that retimes the whole effect without editing its code.
  • Spaces collapse when text is split into spans. Splitting per character drops the spaces between words. Per-letter components such as soft-blur-in and typewriter render with white-space: pre, so the spaces stay.

Which Remocn text animation to use

Twenty-one components picked by the job they do. The Typography page lists all 256 text animation components.

JobComponentWhat it doesLengthInstall
Word-by-word headlineStaggered Fade UpWords slide up and fade in, one after another90fnpx shadcn@latest add @remocn/staggered-fade-up
Letter-by-letter, softSoft Blur InEach character fades in with a gentle blur and lift60fnpx shadcn@latest add @remocn/soft-blur-in
Focus pullFocus Blur ResolveText sharpens from heavy blur, then blurs out90fnpx shadcn@latest add @remocn/focus-blur-resolve
Lines rising from a maskMask Reveal UpLines reveal upward with a compact stagger90fnpx shadcn@latest add @remocn/mask-reveal-up
Tracking inTracking InLetter spacing collapses while blur clears, on a spring90fnpx shadcn@latest add @remocn/tracking-in
One punchy wordSpring Scale InWords pop in with a soft overshoot60fnpx shadcn@latest add @remocn/spring-scale-in
Phrase that builds centeredKinetic Center BuildWords enter from the right and push the line to center60fnpx shadcn@latest add @remocn/kinetic-center-build
Typed textTypewriterCharacter-by-character typing with a blinking cursor120fnpx shadcn@latest add @remocn/typewriter
Handwritten noteHandwriteHandwritten text laid down letter by letter, stop-motion style120fnpx shadcn@latest add @remocn/handwrite
Highlight a phraseMarker HighlightA marker block draws behind a phrase90fnpx shadcn@latest add @remocn/marker-highlight
Recolor one wordInline HighlightOne word in a sentence shifts to a brand color90fnpx shadcn@latest add @remocn/inline-highlight
Draw attention with lightShimmer SweepA shine travels across muted text120fnpx shadcn@latest add @remocn/shimmer-sweep
Rotating word after a prefixInline Word RollWords switch beside a fixed prefix with a vertical roll75fnpx shadcn@latest add @remocn/inline-word-roll
Swap one phrase for anotherPer-Word CrossfadeOne phrase fades out as the next fades in, word by word90fnpx shadcn@latest add @remocn/per-word-crossfade
Correct a claimStrikethrough ReplaceStrikes the old text, then fades the new text in120fnpx shadcn@latest add @remocn/strikethrough-replace
Count up to a numberRolling NumberOdometer that settles exactly on the target value150fnpx shadcn@latest add @remocn/rolling-number
Decode / scrambleMatrix DecodeA random scramble resolves left to right into the text90fnpx shadcn@latest add @remocn/matrix-decode
GlitchRGB Glitch TextThree RGB-offset copies jitter for a chromatic glitch90fnpx shadcn@latest add @remocn/rgb-glitch-text
Looping tickerInfinite MarqueeA horizontal text strip that loops seamlessly180fnpx shadcn@latest add @remocn/infinite-marquee
Draw the lettersOutline TraceGlyph outlines draw as strokes, then the fill wipes in44fnpx shadcn@latest add @remocn/outline-trace
Captions from a voiceoverKaraokeEach word fills with color as it is spokenFrom the transcriptnpx shadcn@latest add @remocn/caption-karaoke

For subtitles timed to speech, see the captions section: 31 caption styles that render from a transcript.

Remocn vs Remotion Bits vs snapcn vs hand-rolled

Facts about the other libraries come from their own sites, checked on November 9, 2026.

Hand-rolledRemotion BitssnapcnRemocn
What you getYour own codeOne configurable AnimatedText (split by character, word or line, with stagger) plus Typewriter; about 14 text examplesTwelve free text components on its text-animation page; its Text & Titles list has more, some marked Pro256 text animation components plus 31 caption styles, one component per effect
Install—npm install remotion-bits, or copy the source with jsreponpx shadcn@latest add @snapcn/<name>npx shadcn@latest add @remocn/<name>
Price and licenseFreeFree, MIT60 components MIT, 81 Pro (site-wide, per its footer)Free, MIT, every component
Pick it whenYou need one simple effect and want zero dependenciesYou want one primitive you configure yourselfYou want its specific look and its notes on rendering scaled typeYou want a finished, distinct effect for each beat without writing the motion

The options combine. A Remocn component is plain Remotion code in your project, so you can put it next to Remotion Bits primitives or your own effects in the same composition.

Using Remocn text animations from an AI agent

  • Agent skill: npx skills add Remocn/remocn. The agent reads the live component index from remocn.dev and picks text effects by their use and avoid notes.
  • Plugin for Claude Code and Codex: /plugin install remocn --marketplace Remocn/remocn, then /remocn:video <brief>.
  • MCP server: add https://remocn.dev/mcp to any MCP client. No auth. Ask for "a typewriter headline" and search_components returns matching text effects with install commands. See MCP server.
  • Plain text: every Typography page in one file at /llms-full/typography.txt, and every component with its use / avoid signal at /llms-components.txt. Any docs URL returns Markdown when you append .md.

FAQ

How do I animate text in Remotion?

Compute every style value from useCurrentFrame() with interpolate() or spring(), split the text into words or letters, and give each one a later start frame. Or install a ready-made effect with npx shadcn@latest add @remocn/<name>.

Are there free text animation components for Remotion?

Yes. Remocn has 256 free, MIT-licensed text animation components and 31 caption styles. You install them with the shadcn CLI, and the source is copied into your project.

Can I use CSS animations for text in Remotion?

No. Remotion renders frames out of order and in parallel, so CSS transitions and keyframes don't show up in the render. Every value has to come from the current frame.

How do I make a typewriter effect in Remotion?

Install it with npx shadcn@latest add @remocn/typewriter and pass text and charsPerSecond. The cursor blink is computed from the frame, so it is the same in every render.

Why does my text flicker or jump in the rendered video?

The usual causes are Math.random() in the render, a font that loaded after the first frame, or an interpolate() without clamping. See the pitfalls above.

Do Remocn components need a runtime dependency?

No. The shadcn CLI copies each component's source into your project. Remotion is the only runtime, and it keeps its own license.

Can I change the font, colors and timing?

Yes. Props cover text, colors, sizes and a speed multiplier on most components, and the source is yours to edit.

Is Remocn made by Remotion or shadcn?

No. Remocn is an independent open-source project, not affiliated with Remotion or shadcn. It is listed on Remotion's resources page.

What's next

  • Typography: all 256 text animation components, grouped by category
  • Captions: 31 transcript-driven caption styles
  • Words on screen: how to write lines people can read in two seconds
  • Installation: add Remocn to an existing Remotion project