Guides 7 min read

How to Make AI Kinetic Typography With Claude Code

AI kinetic typography is moving text that a coding agent such as Claude Code builds and renders for you. For text over your own footage, a transcript with word timestamps decides when each word appears. For a type-only video, Claude writes the animation in HTML and CSS or Remotion, renders every frame and encodes the result with ffmpeg.

What AI kinetic typography is

AI kinetic typography is moving text that an AI coding agent plans, animates and renders for you. Wikipedia describes kinetic typography as an animation technique that mixes motion and text to express ideas, with the text presented over time to convey or evoke an idea or emotion. Its roots are in film titles. Scholars credit Alfred Hitchcock’s North by Northwest (1959) as the first feature film to use it extensively, in an opening sequence by Saul Bass.

Following Barbara Brownie’s model, the article splits the craft in two. In motion typography, words move in relation to one another. In fluid typography, the letterforms themselves change without necessarily moving anywhere.

AI can produce it in two ways:

  • Word-timed text over your footage. A transcript gives every spoken word a start and end time, and each word appears on its own moment. Animated captions are the simplest form.
  • Fully generated typographic motion. There is no footage. The text is the whole picture, written in HTML and CSS or in Remotion and rendered frame by frame.

Text-to-video models look like a third option, but they do not guarantee that a word comes out spelled the way you typed it. How AI renders motion graphics explains that difference.

ApproachWhere the timing comes fromExact words and fontsChanging one wordBest for
Manual editing app with keyframesYou place each word by earYesRe-time it by handPieces shaped by feel
Template app with animated captionsAn automatic transcript and a presetWithin the presetFix the transcriptQuick captions in a ready-made look
AI text-to-video generationThe model, not your audioNot guaranteedGenerate againMood shots without exact text
Coding agent with word timestamps (Claude Code, faster-whisper, ffmpeg)Word times from the transcriptYes, set in codeChange a value, re-renderCaptions and key phrases over footage
Code-based rendering (HTML/CSS or Remotion)Frame numbers, or a voiceover’s word timesYesChange a value, re-renderType-only videos and title cards
Motion designerHand-timed to the voice or beatYesAsk for a revisionBrand films and music pieces

Word-timed text over your own footage

Word-timed kinetic type starts with a transcript that knows when each word was spoken. faster-whisper, an open-source transcription library, returns that timing when you ask for it. This is the example from its README:

segments, _ = model.transcribe("audio.mp3", word_timestamps=True)
for segment in segments:
    for word in segment.words:
        print("[%.2fs -> %.2fs] %s" % (word.start, word.end, word.word))

Claude Code runs this on your audio and saves the words with their times. Multiply a start time by the frame rate and you have the frame where that word should land. From there, Claude writes a script that decides, for every frame, which words are on screen and where each one is in its animation: entering, holding or leaving. Most AI kinetic typography over talking-head footage is built this way.

There are three common ways to draw the words:

  • HTML and CSS, captured by a headless browser. Playwright’s omitBackground screenshot option hides the default white background so the capture keeps its transparency (it does not apply to JPEG). ffmpeg’s overlay filter then lays those frames over your video.
  • ffmpeg alone. The drawtext filter draws text on top of a video using the libfreetype library, and the ass filter renders Advanced SubStation Alpha subtitle files. drawtext is only there if ffmpeg was built with libfreetype and libharfbuzz enabled, so check your build before planning around it.
  • Remotion. Its @remotion/captions package includes createTikTokStyleCaptions(), which groups words into short “pages” and gives every token a start and end time in milliseconds. A low combineTokensWithinMilliseconds value gives word-by-word pages.

Text can also go behind you. Using a person mask, the masthead in Cover Story slides up letter by letter, 50 ms apart, while your head sits in front of it. Glass Type drops 3D glass letters onto the wall behind you, 70 ms apart.

Fully generated typographic motion

A type-only video has no footage, so the words carry every frame. This is the text to motion graphics route: you supply the words and the brief, and Claude Code writes the motion as code and renders it.

In HTML and CSS, each word is an element with its own animation. MDN describes animation-delay as the time to wait before an animation begins, and a negative delay starts the animation immediately but partway through. Give each word a slightly later delay and you have a stagger. To render, a script pauses every animation and sets its time for each frame. MDN’s reference says Animation.currentTime returns and sets an animation’s time in milliseconds, whether it is running or paused.

Remotion works from frame numbers instead. interpolate() maps the current frame to a value, for example frames 0 to 20 to an opacity of 0 to 1. <Sequence> places a scene on the timeline, and the components inside it count frames from the sequence’s own start, so each title card can be written as if it begins at zero.

If a voiceover drives a kinetic typography video, transcribe it the same way as footage and use its word times as cue points. The text then lands on the narrator’s words without manual syncing.

Easing and timing basics

Easing decides whether moving text feels heavy, snappy or mechanical. MDN defines an easing function as a mathematical function that describes the rate at which a value changes, and CSS names the common ones:

  • ease-out starts abruptly and slows towards the end. It suits words arriving.
  • ease-in starts slowly, speeds up and stops abruptly. It suits words leaving.
  • linear keeps a constant rate, which reads as mechanical on its own.
  • cubic-bezier() defines your own curve with two control points.
  • steps() makes a stair-shaped curve, so a typewriter reveal can jump one letter at a time.

Remotion’s spring() is a physics-based alternative. Its defaults are a mass of 1, damping of 10 and stiffness of 100, and a spring may overshoot its target before it settles unless you turn on overshootClamping.

Stagger is the other number to set. The free effects on this site use 50 ms between letters for the Cover Story masthead and 70 ms for Glass Type. Treat those as starting points. A rule that holds across styles: move on the way in and out, and hold still while the viewer reads.

Readability rules for moving text

Moving text only works if a viewer can read it on a phone. The W3C accessibility guidelines are written for web pages, but they make a sensible floor for video.

  • Contrast. WCAG asks for a contrast ratio of at least 4.5:1 for normal text and 3:1 for large text, which it defines as at least 18 point, or 14 point bold.
  • Weight. The same guidance notes that anti-aliasing can render thin or unusual fonts much fainter than their actual colour. Heavier weights are the safer choice at phone size.
  • Flashes. WCAG’s flash rule says content should not flash more than three times in any one-second period. Rapid full-frame word swaps on a bright background can cross that line.
  • Fewer words at once. A short phrase that holds is easier to read than a full sentence that never stops moving.
  • Edges. Keep key words away from the edges of a vertical frame, where social apps place their own buttons and captions, and check a still on your phone.

How to make it with Claude Code

To make AI kinetic typography with Claude Code, start with one short clip, a transcript and a brief with numbers. Open the clip’s folder in Claude Code and send something like this:

Transcribe input.mp4 with faster-whisper (word_timestamps=True) and save words.json.
Between 4.0 s and 9.5 s, show my words as kinetic type in the centre of the frame:
- At most 3 words on screen. Each word enters on its own start time.
- Entrance: rise 40 px and fade in over 0.25 s, ease-out. Exit: fade out over 0.15 s, ease-in.
- "[KEY WORD]" is twice the size, in #FFD84D. Other words white, heavy sans-serif, 110 px.
- Lay the type out in HTML, capture transparent frames with Playwright, overlay them with ffmpeg.
- Show me three stills and a 540×960 preview before the full render.

Then work through it in order:

  1. Check words.json for misheard words. A wrong transcript word is a wrong word on screen.
  2. Review the stills. Anthropic’s best-practices guide for Claude Code recommends giving Claude a check it can run, such as a screenshot to compare, so ask it to compare its stills with your brief and list the differences.
  3. Watch the preview at full speed. Rhythm only shows in motion.
  4. Change one thing per render.

For a ready-made look, the Fitted Captions style sets each phrase as a justified block around one huge serif italic accent word, and B-roll and Stacked Text stacks a bold sans line over a serif italic accent line. If your video also shows an app or a dashboard, AI UI animation uses the same word timing to land clicks on what you say.

Where this falls short

  • Choreographed type for a music video or a film title, where every letter moves to a beat, is faster to keyframe by hand in a motion design app, or to hand to a motion designer, than to describe in a prompt.
  • Word timing is only as good as the transcript. Music under your voice, mumbled words or two people talking at once produce wrong timestamps that you have to correct by hand.
  • For a quick clip in a ready-made caption style, a template app on your phone needs no installs, no project folder and no render time on your own computer.
  • Code can only use fonts that are installed or supplied as files, and checking that a font's licence covers use in video is your job, not the agent's.

Questions

Is AI text animation the same as animated captions?

Animated captions are one kind of it. They show what you say, word by word, usually in the same spot on every line. AI text animation more broadly treats words as the picture itself: scaling one word, stacking a phrase, sliding letters behind you or building a whole title sequence. When footage is involved, both start from the same data, a transcript with a start and end time for every word.

Can an AI video generator make kinetic typography?

It can make moving letters, but it cannot promise your exact words. Text-to-video models produce pixels from a trained model, so spelling, font and timing are not guaranteed, and each attempt gives a different result. For text that must say exactly what you typed and land on a specific spoken word, code-based rendering is the dependable route. A generated clip can still sit behind code-drawn type as a background.

Do I need Remotion for kinetic typography?

No. HTML and CSS captured with Playwright, Python drawing scripts and ffmpeg filters all work. Remotion helps when a piece has many scenes or you want a reusable React component for each title style. Read its licence first: Remotion is free for individuals, for-profit organisations with up to three employees and non-profits, and other companies need a company licence.

Which fonts work best for kinetic type on a phone?

Heavy weights with simple shapes are the safest choice. W3C's contrast guidance notes that anti-aliasing can make thin or unusual fonts render much fainter than their real colour, and moving text gives viewers even less time to read. Keep a serif or script face for one large accent word, and make sure every font Claude uses is installed or supplied as a file and licensed for video.

Read next

Try it on your own video.

Every effect prompt is free. Pick one, paste it into Claude Code and render your first edit.

Free download

Get the .md file

Enter your email and the download starts right away.

We use your email for this download and, if you tick the box, for updates. See our privacy policy.