Text Animations

GSAP Text Effects

Typography-focused animations that bring headings, paragraphs, and labels to life. Character-level splits, decode sequences, and distortion effects built with GSAP and SplitText.

Effects & Templates Vault Early adopter pricing

Unlock everything for £39

All 89 premium effects and templates, plus every future effect and template we release. That's £0.43 per item.

Buy individually now: up to £10 comes off the Vault later

Animating Text with GSAP

Text animation goes beyond simple fade-ins. With GSAP SplitText, you can split headings into individual characters, words, or lines and animate each one independently. This opens up staggered reveals, wave effects, scramble sequences, and kinetic typography that feels intentional.

The key to good text animation is restraint. A subtle character stagger on a hero heading draws attention without overwhelming the reader. A decode effect on a loading state provides visual feedback. Glitch typography sets a tone. Each pattern serves a purpose beyond decoration.

SplitText handles the DOM manipulation of wrapping characters in spans, preserving accessibility by keeping the original text in the DOM for screen readers. Combined with GSAP timelines, you can sequence text animations precisely: split, animate in, hold, animate out.

These effects work with any typeface and respond to viewport size. They include reduced-motion fallbacks that show text immediately without animation, ensuring content remains accessible to all users.

How to animate text with GSAP

Split a heading into characters with the SplitText plugin, then stagger a tween across them. The original text stays in the DOM, so it remains readable and indexable.

  1. 01

    Register SplitText

    Load GSAP and the SplitText plugin and register it once.

  2. 02

    Split the element

    Create a SplitText instance with type "chars" (or "words" / "lines") to wrap each unit in its own span.

  3. 03

    Stagger the tween

    Animate the returned chars array with a small stagger so characters cascade in rather than appear at once.

  4. 04

    Wait for fonts

    Split after document.fonts.ready so the browser measures the real typeface, not a fallback, and avoids layout shift.

Minimal example
import gsap from "gsap";
import { SplitText } from "gsap/SplitText";

gsap.registerPlugin(SplitText);

const split = new SplitText(".headline", { type: "chars" });

gsap.from(split.chars, {
  y: 20,
  opacity: 0,
  duration: 0.6,
  ease: "power2.out",
  stagger: 0.02,
});

Text Animations at a glance

Compare the 11 text animations in this category by what they do, technique, and difficulty.
Effect What it does Built with Difficulty
Text Scramble Decode Cipher-style text animation that scrambles characters and decodes to reveal content. ScrollTrigger, text-animation intermediate
Split Text Stagger Reveal Cinematic split-text reveals with masked movement, 3D rotation, blur, color-fringe energy, and a sharp staggered settle. ScrollTrigger, SplitText, text-animation intermediate
Glitch Text Effect Four glitch styles from one engine: displacement shift, RGB chromatic aberration, VHS scan slice, and character-level chaos. ScrollTrigger, text-animation intermediate
Text Hover Distortion Characters react to cursor proximity with push, pull, wave, or rotation effects. text-animation advanced
Typewriter Text A sharp terminal-style typewriter that types, holds, accelerates through deletion, and cycles to the next phrase in sync with cursor and progress signals. ScrollTrigger, text-animation beginner
Infinite Marquee with Mouse Control Continuous scrolling marquees with mouse-based speed control. ScrollTrigger, marquee intermediate
Scroll Velocity Skew Kinetic type that smears with scroll speed — shear, stretch, motion blur and chromatic fringing in one velocity-driven response — then whips back line by line with an elastic overshoot. ScrollTrigger, velocity-reactive intermediate
Elastic Repel Headline A cursor-repulsion display headline whose letters flee the pointer, scaled by cursor speed, then spring back home with an elastic overshoot, motion blur, and a scale dip. hover-effect advanced
Scroll Text Highlight A scrubbed orange-to-lime reading front lifts each active word before completed copy settles to white and unread copy remains ghosted. ScrollTrigger, SplitText, scroll-reveal intermediate
Split-Flap Board Airport-departure-board character flipping for headlines, stats and status rows, with each cell rolling on a real 3D hinge and the board resolving as a staggered wave. ScrollTrigger, split-flap advanced
Physics Word Pile Display-type chips that fall, collide, tumble and stack under a real rigid body solver, with drag-and-fling throwing. physics advanced

Frequently Asked Questions

What is GSAP SplitText?

SplitText is a GSAP plugin that splits text elements into characters, words, or lines, wrapping each in a span for individual animation. It handles complex cases like multi-line text, nested elements, and special characters while keeping the original text accessible.

Do text animations affect SEO?

No. The actual text content remains in the DOM and is fully indexable by search engines. SplitText wraps characters in spans but preserves the text itself. Screen readers also read the content normally.

Can I use these text effects with any font?

Yes. These effects animate CSS transforms and opacity on individual text elements. They work with any web font, system font, or custom typeface. Just make sure fonts are loaded before splitting text to avoid layout shifts.

How do I trigger text animations on scroll?

Combine text effects with ScrollTrigger. Split the text on page load, then use ScrollTrigger to play the animation when the element enters the viewport. All text effects here include scroll-triggered variants in their documentation.

Your Cart

Your cart is empty

Browse Effects