Decode every headline.
Decrypt
Random characters decode into your words, letter by letter.
preset="decrypt"Try Decrypt with your words →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.
One-time payment · Instant download · Single-project license · Free v1.x updates
Decode every headline.
Random characters decode into your words, letter by letter.
preset="decrypt"Try Decrypt with your words →Rain it in.
Glyph trails fall into each letter and settle.
preset="matrix"Try Matrix Rain with your words →Pull it together.
Feel the weight.
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.
trigger="scroll": the animation follows the scroll position, forward and back.
preset="flip-x" trigger="scroll"Try Scroll scrub with your words →Leave a trail.
Outline echoes trail each letter as it lands.
preset="echo"Try Echo Trail with your words →Type it out, live.
Typed out behind a blinking caret, without reflowing the line.
preset="typewriter"Try Typewriter with your words →Mark what matters.
Break the signal.
Make an entrance.
Out from the center: 5x, rotated and blurred, on a spring.
preset="dramatic-zoom"Try Dramatic Zoom with your words →Each one is live: it plays as it scrolls in, and again on hover or focus. Open any of them in the playground below.
mask-riseTry it in the playground →blur-revealTry it in the playground →cinematic-riseTry it in the playground →zoom-revealTry it in the playground →gravity-bounceTry it in the playground →slideTry it in the playground →flip-xTry it in the playground →spin-yTry it in the playground →wavyTry it in the playground →rubber-bandTry it in the playground →motion-stretchTry it in the playground →swarmTry it in the playground →neonTry it in the playground →shimmerTry it in the playground →glitchTry it in the playground →decryptTry it in the playground →matrixTry it in the playground →typewriterTry it in the playground →highlightTry it in the playground →echoTry it in the playground →cube-flipTry it in the playground →perspective-tiltTry it in the playground →depth-fadeTry it in the playground →type-onTry it in the playground →dramatic-zoomTry it in the playground →wipeTry it in the playground →elastic-popTry it in the playground →word-revealTry it in the playground →light-sweepTry it in the playground →flickerTry it in the playground →tracking-inTry it in the playground →waveTry it in the playground →weight-waveTry it in the playground →weight-shiftTry it in the 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>Like what you made? The snippet runs with the script from the download.
Buy Kinetic Type · $12Single-project license (LICENSE.md in the download): one website or project per license.
Upload kinetic-type.min.js from the download to your site.
Add the script once, and wrap any text in a <pf-kinetic-type> tag. Keep your heading around it.
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>Paste script/webflow/footer-code.html from the download into Site settings → Custom code → Footer code (or host the .js file and add its script tag there).
Add a Code Embed element with your tag where you want the text. It takes the styles around it.
Publish. Custom code runs on the published site.
<h2><pf-kinetic-type preset="decrypt" trigger="hover">Hover to decrypt</pf-kinetic-type></h2>Custom code needs a paid Webflow site plan.
Upload kinetic-type.min.js to your Media library or your theme, and copy its URL.
Add a Custom HTML block with the script tag and your text in a <pf-kinetic-type> tag.
<script src="https://your-site.com/wp-content/uploads/kinetic-type.min.js" defer></script>
<h2><pf-kinetic-type preset="blur-reveal">Your headline</pf-kinetic-type></h2>On WordPress.com, you need a plan that allows custom code.
Online Store → Themes → Edit code → Assets: upload kinetic-type.min.js.
In the theme editor, add a Custom Liquid section with the script and your text.
<script src="{{ 'kinetic-type.min.js' | asset_url }}" defer></script>
<h2><pf-kinetic-type preset="highlight" split="words">New season, new colors</pf-kinetic-type></h2>Copy react/KineticType.tsx into your project. It needs only React 18+.
Render it with the tag you want (as="h1") and a preset. The text is its children.
import KineticType from "./KineticType"
<KineticType as="h1" preset="mask-rise" trigger="load">
Make your words move
</KineticType>Next.js: the server renders the text as real HTML in your tag; it animates in the browser before the first paint.
In your Framer project, go to Assets → Code → + → New component file, and name it KineticType.
Replace the file's contents with framer/KineticType.tsx from the download, and save.
Drag KineticType onto the canvas, type your text, pick a font, a preset (or Custom) and a trigger, and press Preview.
On the Framer canvas you see the text still, which keeps the editor fast. Set On Canvas to Live to see it move there.
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.
$12 one-time
Secure checkout by Polar. Instant download after payment.
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.
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.
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.
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.
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.
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.
Visitors with Reduce Motion on see your final text, still. You can also set static for everyone.
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.
Single project: one website or project per purchase. The details are in LICENSE.md in the download.
Yes, free updates for v1.x.
Email hi@gunnargray.com.
The launch, new presets, v1.x releases and the occasional new tool. No more than that.