Staggered Text

Flexible, feature-rich text animation component for staggered reveals

staggered-text-tw

Build faster
than ever

Customize

Text & Segmentation

Animation

1s
80ms

Effects & Callbacks

Props

textstring

The text content to animate with staggered effect.

Default:""
classNamestring

Additional CSS classes to apply to the container.

Default:""
as"h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p" | "span"

The HTML element to render as.

Default:"p"
segmentBy"chars" | "words" | "lines"

How to split the text for staggered animation.

Default:"words"
separatorstring

Custom separator to split text into rows/lines before segmenting.

Default:undefined
delaynumber

Delay between each segment animation in milliseconds.

Default:80
durationnumber

Duration of each segment animation in seconds.

Default:0.6
easingEasing | Easing[]

Motion easing function (single or per-keyframe).

Default:(t) => t
thresholdnumber

IntersectionObserver threshold for scroll trigger.

Default:0.1
rootMarginstring

IntersectionObserver rootMargin for scroll trigger.

Default:"0px"
direction"top" | "bottom" | "left" | "right"

Direction of movement for the animation.

Default:"top"
blurboolean

Enable blur effect in the default animation.

Default:true
staggerDirection"forward" | "reverse" | "center"

Direction of stagger: forward (start to end), reverse (end to start), or center (middle out).

Default:"forward"
respectReducedMotionboolean

Respect user's prefers-reduced-motion setting.

Default:true
exitOnScrollOutboolean

Automatically trigger exit animation when component scrolls out of view.

Default:false
fromMotionStyle

Override default initial animation state.

Default:undefined
toMotionStyle | MotionStyle[]

Override default final animation state(s).

Default:undefined
onAnimationComplete() => void

Callback fired when the last segment finishes animating.

Default:undefined
onExitComplete() => void

Callback fired when exit animation completes.

Default:undefined