← All effects

Blur Focus Reveal

TextVanilla JS · zero dependenciesCSS filter + transition
click the stage to replay
-- fps
prefers-reduced-motion detected — text shown sharp, no animation

X-ray · layers

words start blurred
one word after another
words shrink into place

Parameters

Your text 
Start blur14 px
Duration900 ms
Word delay90 ms
Start scale1.12×
your version · updates as you tinker

How this effect works

There is no animation code running per frame here — the whole move is a CSS transition. Each word starts in its "unfocused" state: blurred with filter: blur(), transparent, and slightly oversized. Then we flip every word to its final state — sharp, opaque, normal size — and hand the browser one instruction: take this long to get there. The browser interpolates blur, opacity and scale on the compositor, which is why it stays smooth even on phones.

The stagger layer is a single extra number: word i gets a transition delay of i × DELAY milliseconds, so the words don't arrive as a block but as a wave rolling through the sentence. The zoom layer starts each word slightly too big — that's the camera language: things out of focus feel closer, and "shrinking into place" reads as the lens locking on. Blur is the one honest cost in this effect: it's a real gaussian filter, which is why it runs on a headline, not on paragraphs.

Production notes: respects prefers-reduced-motion (text renders sharp, no transition) · the browser animates filter/opacity/transform natively — zero JS per frame · blur is priced per pixel: keep it to headline-sized text · your text goes in via textContent, never raw HTML · the copied snippet is self-contained HTML + CSS + JS.