99% Procedural Kinetic Type Loop | After Effects Tutorial

Опубликовано: 07 Май 2026
на канале: The Video Shop
4,143
295

In this After Effects tutorial, I’ll show you how to build a seamless looping kinetic type animation, inspired by this post I saw on the motion design subreddit:

  / help_anyone_knows_how_to_do_this  

We’ll go step by step through setting up text animators, adding procedural controls, and using expressions to handle anchor point shifts, time remapping, and distribution.

The end result is a flexible looping setup you can duplicate and tweak endlessly—no messy keyframe wrangling required.

If you’re into kinetic typography or just want to expand your After Effects expression skills, this is a really fun project to dive into.

Enjoy!

(And if you know a cleaner way to procedurally switch text justification, let me know in the comments - I couldn’t quite crack it)

=============================================================
FREE RESOURCES & AFFILIATE LINKS:

► Download the FREE After Effects project file for this tutorial: https://thevideoshop.gumroad.com/l/bc...

► Explore more free project files from my Gumroad: https://gumroad.com/thevideoshop
=============================================================
RECOMMENDED TOOLS (Affiliate Links):

Get $50 off Motion Array: https://bit.ly/3Vsv4LV
Get $50 off Artlist: https://bit.ly/43UKqgU

(This video isn't sponsored, but using these links means I may receive a small commission at no extra cost to you. Your support helps me create more free tutorials)
=============================================================

EXPRESSIONS:

(replace any instances of ">" or “<” with "greater than" or “less than” sign)

► Text Layer Anchor Point:

useExtents = false;
st = thisLayer.text.sourceText;
t = time;
if (st.numKeys > 0){
idx = st.nearestKey(time).index;
if (st.key(idx).time > time) idx--;
if (idx < 1) idx = 1;
t = st.key(idx).time;
}
r = sourceRectAtTime(t, useExtents);
x = r.left; y = r.top;
sign = 1;
[ x*sign, y*sign ]

► Text Precomp Position:

n = parseInt(thisLayer.name.split(",")[1]);
yStep = thisComp.layer("control").effect("Y")("Slider");
[value[0], value[1] + (n-1)*yStep]

► Text Precomp Time Remap Value:

n = parseInt(thisLayer.name.split(",")[1]);
offsetFrames = thisComp.layer("control").effect("time(frames)")("Slider");
fps = thisComp.frameDuration;
loopDurFrames = 240;
loopDurSec = loopDurFrames * fps;
tFrames = time / fps;
tFrames -= (n-1) * offsetFrames;
loopFrame = (tFrames % loopDurFrames + loopDurFrames) % loopDurFrames;
loopFrame * fps

=============================================================
CHAPTERS:

00:00:00 - Comp and Text Settings
00:00:26 - Tracking Animator
00:01:05 - Duplicate Animator
00:01:29 - Source Text Keyframes
00:01:50 - Text Layer Anchor Point Expression
00:02:45 - Keyframing Tracking Animators
00:04:02 - Preompose Text Layer
00:04:39 - Slider Controls
00:05:11 - Text Precomp Position Expression
00:05:22 - Time Remap Expression

=============================================================
CONNECT & SUBSCRIBE:

► Subscribe for more After Effects tutorials and motion design tips:    / @thevideoshoplondon  

► Have questions about kinetic type, text animators, or After Effects animation? Let me know in the comments!

► Find me online: https://linktr.ee/TheVideoShop

=============================================================

#aftereffectstutorial
#kinetictypography
#textanimation
#textanimators
#animation
#AfterEffectsTips
#learnaftereffects
#motiondesign
#learnmotiondesign
#learnanimation