Kinetic Type · animated text for any website · v1.0

Make your words move.

34 text effects that stay real text: read once by screen readers, selectable, no layout shift. On load, in view, scrubbed by scroll, hover, click or loop. A script tag, a React component or a Framer component.

Buy Kinetic Type · $12Try it with your words

One-time payment · Instant download · Single-project license · Free v1.x updates

Scroll: every section plays as it arrives

Showcase: ten presets, full size

Feel the weight.

Weight Wave

A thin ripple runs through bold type on the variable weight axis. Nothing around it moves.

preset="weight-wave"Try Weight Wave with your words →

Scrub it with your scroll.

Scroll scrub

trigger="scroll": the animation follows the scroll position, forward and back.

preset="flip-x" trigger="scroll"Try Scroll scrub with your words →

All 34 presets

Each one is live: it plays as it scrolls in, and again on hover or focus. Open any of them in the playground below.

Playground

Type your own words, then change the preset, font, trigger, split, timing and colors. The code below the preview updates as you go: copy it for a script tag, React or Framer.

Make your words move.

Plays as soon as it's on the page. Replay to see it again.

<script src="/kinetic-type.min.js" defer></script>

<h2 style="font-weight: 700; color: #ffffff">
  <pf-kinetic-type preset="mask-rise" trigger="load">Make your words move.</pf-kinetic-type>
</h2>

21/60
Trigger
Split
90 ms
1200 ms
Colors

Like what you made? The snippet runs with the script from the download.

Buy Kinetic Type · $12

Works with

  • FramerCode component, properties panel, Framer fontsIn the v1.0 download
  • Plain HTML / any site<pf-kinetic-type> around your text + one scriptIn the v1.0 download
  • WebflowCode Embed element (or paste into Footer code)In the v1.0 download
  • WordPressCustom HTML blockIn the v1.0 download
  • ShopifyCustom Liquid sectionIn the v1.0 download
  • Squarespace, WixCode / embed block (plan must allow custom code)In the v1.0 download
  • React, Next.js, Vite<KineticType as="h1" /> component, server-renderedIn the v1.0 download

What it does

  • 34 presets. Every effect from the Kinetic Type Framer plugin, plus mask rise, tracking in, light sweep, flicker, word reveal and variable-font weight waves.
  • Seven triggers. On load, in view, scrubbed by scroll, hover, click, on a loop, or from your code with play(), reverse(), seek() and finish().
  • Letters, words or lines. Lines are measured from your layout and re-measured on resize. Stagger from the start, end, center, edges or at random, with springs or nine other easings.
  • Variable fonts. Animate weight, width, slant, optical size or any custom axis: axes="wght 100". Letters keep their boxes, so nothing around them moves.
  • Your fonts. It uses your page's font and styles by default. font-url loads a font file just for one headline.
  • Real text. Screen readers read it once, in one piece; headings and links keep their meaning. It's selectable, searchable and in the HTML before any script runs.
  • No layout shift. Kerning is measured before the split and kept. Only transforms, opacity, blur and colors animate.
  • Respectful. Reduce Motion shows the final text, still. Loops pause offscreen, and nothing runs once a headline has played.
  • Same settings everywhere. HTML attributes, React props, or Framer's properties panel.

What's in the download

  • kinetic-type.min.js: drop-in script for any website (36 KB, 13.7 KB gzipped)
  • kinetic-type.esm.js + TypeScript types, for bundlers
  • react/KineticType.tsx: React component (React 18+, server-rendered, with a ref for play / reverse)
  • framer/KineticType.tsx: the Framer code component, with Framer's font picker in the panel
  • demo.html with every preset, trigger, split mode, variable-font axis and hover effect; quick starts for each platform
  • Free updates to v1.x

Single-project license (LICENSE.md in the download): one website or project per license.

Install in about a minute

  1. Upload kinetic-type.min.js from the download to your site.

  2. Add the script once, and wrap any text in a <pf-kinetic-type> tag. Keep your heading around it.

  3. Pick a preset and a trigger, or set your own split, stagger, easing and start state as attributes.

<script src="/kinetic-type.min.js" defer></script>

<h1><pf-kinetic-type preset="mask-rise">Make your words move</pf-kinetic-type></h1>

Squarespace and Wix: add the script and the tag in a Code or Embed block (your plan must allow custom code). The download's README has a quick start for every platform and the full settings reference.

Kinetic Type

$12 one-time

  • Script tag, React and Framer builds
  • All 34 presets, seven triggers and every setting
  • Free v1.x updates
  • Single-project license
Buy on Polar · $12

Secure checkout by Polar. Instant download after payment.

FAQ

Where does it work?

Anywhere you can add a script tag: Webflow, WordPress, Shopify, Squarespace, Wix, plain HTML. Also React/Next.js and Framer. Site builders need a plan that allows custom code.

Do I need to write code?

No. You paste one snippet, wrap your text in a tag and pick a preset. The split, stagger, easing, trigger and the rest are HTML attributes, or Framer's panel.

Is the text still good for SEO and screen readers?

Yes. The text stays in the page as text: search engines see it, and screen readers read it once, in one piece, with your headings and links intact. The animated letters are a hidden copy. You can still select and copy it.

Does it use my fonts?

Yes. It inherits your page's font, size, color and letter-spacing. To use a font just for one headline, point font-url at a font file. Variable fonts can animate any axis: weight, width, slant, optical size or custom ones.

Will it make my page jump?

No. Letters keep their kerning (measured before the split) and only transforms, opacity, blur and colors animate. When a variable-font axis or a scramble changes a letter's shape, its box keeps its width. Layout shift stays at zero.

Does it slow my page down?

The script is 13.7 KB gzipped with no dependencies. Each letter is a Web Animations API animation that the browser runs off the main thread where it can; loops pause offscreen, and nothing runs once a headline has played.

What about Reduce Motion?

Visitors with Reduce Motion on see your final text, still. You can also set static for everyone.

How is this different from the Kinetic Type Framer plugin?

The plugin generates Framer components inside Framer. This is the version for any website: the same effects (and more) as a script tag, a React component and a Framer code component, with scroll scrubbing, hover, click, loop and code triggers, line splitting, variable-font axes and accessibility built in.

What's the license?

Single project: one website or project per purchase. The details are in LICENSE.md in the download.

Do I get updates?

Yes, free updates for v1.x.

Questions before buying?

Email hi@gunnargray.com.

Hear about updates

The launch, new presets, v1.x releases and the occasional new tool. No more than that.

Kinetic Type $12 · 34 presets · one-timePlaygroundBuy