RemotionUI

Scramble Text

Resolve each character out of random glyph noise, in any stagger order. Install with npx remotion-ui@latest add scramble-text.

PrimitivePrimitivesAdvanced

scramble-text30fps · 960×540
Install
$ npx remotion-ui@latest add scramble-text

Every character runs its own scramble on its own clock, then locks onto its target glyph.

import { ScrambleText } from "@/remotion/primitives/scramble-text";

<ScrambleText
  text="Resolve out of noise"
  order="center"
  charset="symbols"
  staggerInFrames={6}
/>

Against matrix-decode

matrix-decode resolves strictly left to right from one shared progress value. This one is built on split-text-chars, so the resolve follows any stagger order — center, edges, random — and a character's noise stops when that character arrives, not when the string is a given percentage decoded.

Charsets

charset takes symbols (the default), latin, digits, blocks, or any string to use as the pool. tickInFrames is how long one noise glyph is held: 1 is a blur, 4 is a slot machine.

Monospace is the default on purpose

A proportional face re-flows the line every time a noise glyph changes width, and the whole word jitters sideways. Override fontFamily only with a face whose glyphs share an advance, or accept the wobble.

Determinism

Glyphs are hashed from the character index, the tick and seed — never sampled. Math.random() would resample on every render pass, so the same frame would scramble differently in the preview and in the render.

Per-character clocks, so any stagger order works. `matrix-decode` resolves strictly left to right from one shared progress value.

Agent notes

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

Import
@/remotion/primitives/scramble-text
  • Use when: frame-level motion primitives and reusable animation wrappers.
  • Customize: text, charset, tickInFrames, scrambleColor, 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 { ScrambleText } from "@/remotion/primitives/scramble-text"; <ScrambleText text="Resolve out of noise" order="center" charset="symbols" />

API Reference

PropTypeDescription
textstringThe string that resolves. `\n` breaks a line.
charset"latin" | "symbols" | "digits" | "blocks" | stringGlyph pool the noise is drawn from. Any string is used as-is.
tickInFramesnumberFrames one noise glyph is held. 1 is a blur, 4 is a slot machine.
scrambleColorstringColour of the unresolved glyphs. Defaults to `color`.
scrambleOpacitynumberOpacity of the unresolved glyphs.
scrambleOnExitbooleanScramble again on the way out.
order"start" | "end" | "center" | "edges" | "random"Which character resolves first. Document order is never affected.
staggerInFramesnumberFrames between one character resolving and the next.
durationInFramesnumberLength of one character's resolve.
delayInFramesnumberFrames before the first character starts.
seednumberSeeds the glyph noise and `order="random"`.
exitAtInFramesnumberFrame the first character starts leaving on.
fontFamilystringMonospace by default — a proportional face re-flows on every tick.

Related

On this page