RemotionUI

Typewriter

Typewriter reveal with rhythm, pauses, looping, and a caret that only blinks at rest.

PrimitivePrimitives

typewriter30fps · 960×540
Install
$ npx remotion-ui@latest add typewriter

Types a string out under a live caret.

The caret holds solid while keys are landing and only blinks once it rests — a caret that blinks mid-word looks like a loading state, not typing. The full block is measured up front, so a wrapping line does not shunt everything under it down a row mid-sentence.

Use [pause:0.5] inside text to hold at any point. humanize varies the key rhythm, respectPunctuation rests on sentence punctuation, and loop types, holds, deletes and repeats.

The caret holds solid while keys land and only blinks once it rests. Inline [pause:0.5] markers are stripped from the rendered text.

Agent notes

Install first, then import the copied source component locally. AI guide →

Import
@/remotion/primitives/typewriter
  • Use when: frame-level motion primitives and reusable animation wrappers.
  • Customize: text, charFrames, durationInFrames, delayInFrames, plus copied source for timing, layout, colors, and typography.
  • Rule: do not import this component from the remotion-ui npm package; it is copied into your project.

Usage

Example
import { Typewriter } from "@/remotion/primitives/typewriter"; <Typewriter text="Build videos with React.[pause:0.5] One frame at a time." charFrames={2} humanize respectPunctuation cursorStyle="block" />

API Reference

PropTypeDescription
text*stringFull string to reveal character by character. Use [pause:0.5] for inline pauses.
charFramesnumberFrames per character (preferred over durationInFrames). Values below 1 type more than one character a frame.
durationInFramesnumberTotal duration when charFrames is omitted.
delayInFramesnumberFrames before typing begins.
pauseAfterstringPause after this substring is typed.
pauseSecondsnumberLength of the pauseAfter pause in seconds.
showCursorbooleanShow the caret.
cursorBlinkFramesnumberCaret blink cycle length in frames, used while it rests.
cursorColorstringCaret colour. Defaults to the text colour.
cursorWidthnumberCaret width in pixels (bar/underscore only).
cursorStyle"bar" | "block" | "underscore"Caret shape.
humanizebooleanUneven key rhythm — the difference between typing and a progress bar.
respectPunctuationbooleanPause automatically after . ! ? ; : ,
punctuationPauseSecondsnumberLength of automatic punctuation pauses.
loopbooleanType, pause, backspace, and repeat.
loopPauseSecondsnumberPause at full text before backspacing.
backspaceCharFramesnumberFrames per character when backspacing.
reserveSpacebooleanMeasure the full block up front so a wrapping line never reflows mid-sentence.
fontSizenumberText size in pixels.
fontWeightnumberText weight.
colorstringText colour.
fontFamilystringFont family for the typed text.
styleCSSPropertiesStyles merged onto the text span.

Related