Desktop optimized

Please maximize your browser window or use a larger screen to explore the component library.

Go to home

Elastic Typewriter

A highly kinetic typewriter effect. A cursor glides across the text, while individual characters stretch, squeeze, skew, and elastic-snap into place to simulate mechanical physical tension.

Last Modified:Aug 17, 2026

Install

CLI

elastic-typewriter
$pnpm dlx shadcn@latest add https://ui.satisium.com/r/elastic-typewriter.json

Or install a specific demo variant:

elastic-typewriter-headline-demo
$pnpm dlx shadcn@latest add https://ui.satisium.com/r/elastic-typewriter-headline-demo.json

Or install a specific demo variant:

elastic-typewriter-paragraph-demo
$pnpm dlx shadcn@latest add https://ui.satisium.com/r/elastic-typewriter-paragraph-demo.json

Manual

1. Install Dependencies

Dependencies
$pnpm add gsap @gsap/react clsx tailwind-merge

2. Add Source Code

Props

PropTypeDefaultDescription
textstringRequiredThe full string of text to type out. Supports wrapping.
asReact.ElementType"h1"The HTML tag to render as.
cursorClassNamestring"bg-primary"Tailwind class for the blinking cursor.
baseSpeednumber0.04Speed of the cursor glide per character in seconds.
variancenumber0.02Human variance applied to the typing speed for realism.
delaynumber0Delay before the typewriter begins (in seconds).
viewportOncebooleantrueRecommended to keep true to avoid reverse deletion loops.
triggerStartstring"top 90%"Viewport threshold for when the animation should start.