- Why a light sweep doesn’t follow your text
- The word variables
- Step 1 — Set up the preset
- Step 2 — Add and style CC Light Sweep
- Step 3 — Lock the Center to the word
- Step 4 — Animate the sweep with markers
- Step 5 — Keyframes that move relative to the word
- Use it on any effect with a Center point
- Using this in any After Effects project
- Test, capture and generate
- FAQ
What you’ll build
The emphasis words in Captyne’s bundled Clean Bold preset get a slanted shine that crosses each word once, right after it lands, and then a soft glow. You’ll build the same effect from scratch and learn three techniques that make it work on every generated caption:
- Locking — the sweep’s Center is worked out from the word’s own edges, so it sits on the word wherever the word is and follows it when you move it.
- Relative keyframes — you keyframe the sweep as a percentage of the word (0% = left edge, 100% = right edge) instead of fixed pixels, so the same animation fits “GO” and “UNBELIEVABLE”.
- Marker timing — markers decide when the sweep starts and ends, and the timing stretches to each word’s duration.
If you’re new to building presets, start with How to create your own caption preset and Building Marker-Driven Presets With Word-Tracking Effects.
Why a light sweep doesn’t follow your text
CC Light Sweep, Gradient Ramp, CC Light Rays, CC Radial Fast Blur and many other effects have a point control such as Center. On text and shape layers, After Effects applies effects after the layer’s transform, so that point is a fixed position in the frame, not on the layer. Move the word and the sweep stays behind. Make the word longer and a sweep keyframed to cross “HELLO” stops halfway across “INCREDIBLE”.
For one title you can fix it by hand. For captions you can’t: every generated word has a different width, a different position and a different duration. The fix is to stop typing pixel values and work the point out from the word itself.
The word variables
Captyne gives every effect expression on a style layer a set of variables that describe the word’s box in frame coordinates. They are recalculated every frame, so they follow the word when it moves.
| Variable | Meaning |
|---|---|
| _acWordL, _acWordR | Left and right edge of the word |
| _acWordT, _acWordB | Top and bottom edge of the word |
| _acWordX, _acWordY | Centre of the word |
| _acWordW, _acWordH | Width and height of the word |
You never type the lines that define them inside a preset — Captyne adds them. If you want to use the same expressions outside Captyne, see Using this in any After Effects project.
Step 1 — Set up the preset
Captyne panel → Setup → My Presets → + New Preset- Click + New Preset, name it Shine Sweep, keep 2 — Normal + Emphasis and click Create & Open in AE.
- Captyne opens a template comp with a NORMAL and an EMPHASIS text layer. Each already has an
IN_ENDand anOUT_STARTmarker. - Style the EMPHASIS layer: a heavy font (Clean Bold uses Orbitron Black at 100 px) in white. Leave its Position alone — Captyne places every generated word.
Want to see a finished version first? Select Clean Bold in the preset list and open it for editing. Its EMPHASIS layer has exactly the sweep you’re about to build.
Step 2 — Add and style CC Light Sweep
EMPHASIS → Effect → Generate → CC Light SweepSelect the EMPHASIS layer and add CC Light Sweep. These are the settings Clean Bold uses — a good starting point for a crisp, slanted shine:
| Property | Value | Why |
|---|---|---|
| Direction | −30° | A slanted streak reads as a reflection rather than a wipe. |
| Shape | Sharp | A hard-edged band of light. Use Smooth for a softer glint. |
| Width | 24 | Narrow enough to stay inside short words. |
| Sweep Intensity | 30 | Brightness of the band. |
| Edge Intensity | 50 | Brightens the letter edges the band passes over. |
| Edge Thickness | 0.9 | Thickness of that edge highlight. |
| Light Color | Warm white | Pure white can look flat on white text; a hint of warmth helps. |
| Light Reception | Add | The light is added on top of the letters. |
Don’t touch Center yet — that’s the next step. Add a glow after the sweep if you like (Clean Bold uses Deep Glow; the built-in Glow works too).
Step 3 — Lock the Center to the word
CC Light Sweep → Center → Alt/Option-click the stopwatchAlt-click (Option-click on Mac) the stopwatch next to Center and replace the expression with:
The sweep now sits in the middle of the word. Move the layer, change the text, scale it — the sweep stays on the word. To park it somewhere else on the word, mix the edges. For example a quarter of the way in from the left:
Because the position is a fraction of the width, “a quarter of the way in” stays a quarter of the way in on a two-letter word and on a twelve-letter word.
Seeing “_acWordX is not defined”? In a brand-new preset, click ⊙ Capture Preset once after pasting — Captyne adds the lines that define the variables and the expression starts working. When you edit a saved preset they’re added automatically within a few seconds.
Step 4 — Animate the sweep with markers
EMPHASIS → add a layer marker named LightSweep_EndA light sweep is only interesting when it moves. Instead of keyframes at fixed times, read two markers so the sweep stretches to every word’s duration:
- Move the time indicator to where the sweep should finish — about the middle of the layer.
- Add a layer marker (* on the numeric keypad), double-click it and type
LightSweep_Endas the comment. - Replace the Center expression with:
The sweep waits just left of the word until the word has landed (IN_END), crosses it, and parks just right of it at LightSweep_End. Drag either marker and the sweep follows immediately: closer markers make a faster sweep.
When you capture the preset, every marker is saved as a percentage of the layer’s length. At generate, Captyne puts it at the same percentage of each word’s own duration, so a short word gets a quick flick and a long, held word gets a slower pass.
pad keeps the band fully outside the letters at the start and end, so it doesn’t pop on or off. With a wide or steeply slanted band, or very tall text, raise it to 80–120. The try / catch fallbacks keep the expression working even if a marker is missing.
Prefer not to write expressions? Select the layer and choose ✨ Shine (light sweep) under Add Smart Effect. Captyne adds CC Light Sweep with a ready-made expression and two markers, SE_IN and SE_OUT, that work the same way.
Step 5 — Keyframes that move relative to the word
An expression gives you a straight pass. Sometimes you want an animation curve you can shape by hand: a sweep that overshoots and settles, a quick double pass, or a slow start and a fast finish. The obvious move — keyframing Center directly — doesn’t survive: keyframe values are fixed pixel positions in the frame, so they can’t stretch to each word or follow it.
The solution is to keyframe progress instead of position. A slider holds 0–100, and an expression turns it into a position on the word. Your keyframes now mean “percent of the way across the word”, so they update relative to every word automatically.
EMPHASIS → Effect → Expression Controls → Slider Control- Add a Slider Control to the EMPHASIS layer and rename it
Sweep Progress(select it, press Enter). - Keyframe its Slider: 0 on the first keyframe and 100 on the last, with anything you like in between — for example 110 then 100 for an overshoot, or 0 → 100 → 0 → 100 for a double pass. Shape the speed with Easy Ease and the Graph Editor as usual.
- Put this on the light sweep’s Center:
What each part does:
- Relative keyframes. The keyframe values are percentages of the word, so they mean the same thing on every word, and the sweep moves with the word because the edges are live.
- Marker timing.
linear(time, s, e, k1, k2)plays your keyframes from the first to the last betweenIN_ENDandLightSweep_End. Space the keyframes however you like; the markers decide the real timing, and it rescales per word. - Editing. To change the motion, edit the slider keyframes. To change when it happens, drag the markers.
Need vertical movement too, for example a sweep that rises across the word? Add a second offset as a fraction of the height: replace _acWordY with _acWordB - _acWordH * v / 100. Keep one Slider Control per layer: if you need a second control, use a different type (Angle Control, Checkbox Control) so each one is restored correctly.
Use it on any effect with a Center point
Nothing here is specific to CC Light Sweep. Any effect property that holds a point in the frame can be locked, animated by markers or driven by a progress slider in exactly the same way — just put the expression on that property.
| Effect → point | Idea | Expression |
|---|---|---|
| CC Light Rays → Center | Rays bursting from the word | [_acWordX, _acWordY] |
| CC Radial Fast Blur → Center | Zoom-blur in from the word’s centre | [_acWordX, _acWordY] |
| Radial Blur → Center | Spin or zoom blur on the word | [_acWordX, _acWordY] |
| CC Light Burst 2.5 → Center | Light burst behind the word | [_acWordX, _acWordY] |
| Lens Flare → Flare Center | Flare that glides along the top edge | Sweep expression with _acWordT instead of _acWordY |
| Bulge → Bulge Center | A bulge that rolls through the letters | Sweep expression from Step 4 |
| Circle → Center | A ring that grows behind the word | [_acWordX, _acWordY] |
| Gradient Ramp → Start / End | Gradient that fits every word | See the gradient tutorial |
The pattern is always the same: work out a progress value from markers (or a slider), then turn it into a point with the edges, for example [_acWordL + _acWordW * progress, _acWordY].
For still (not animated) points you don’t even need an expression on the most common effects. When you capture, Captyne saves a still point on CC Light Sweep, Gradient Ramp, CC Light Rays, CC Radial Fast Blur, CC Radial Blur, Radial Blur, Corner Pin, Circle, Lens Flare or Lightning as a fraction of the word’s box, and on generate it becomes a live expression that follows the word. Expressions are the way to go for anything that moves.
Using this in any After Effects project
Not using Captyne yet, or locking a light sweep to a regular title? Paste this block at the very top of the expression, then the code from any step above. It defines the same word variables from the text layer’s bounds using sourceRectAtTime() and toComp():
It also works inside a Captyne preset: every line starts with var _ac, so Captyne recognises the block when you capture, removes it and adds its own. Don’t put comments or blank lines inside it.
Test, capture and generate
| Check | What should happen |
|---|---|
| Change the word | Type “GO”, then “UNBELIEVABLE”. The sweep starts left of the word and finishes right of it both times. |
| Move the layer | Drag it anywhere in the frame, or scale it. The sweep stays on the letters. |
| Drag the markers | Move IN_END and LightSweep_End closer together: the sweep speeds up. Further apart: it slows down. |
| Edit the keyframes | Change the Sweep Progress curve: the motion changes, the start and end times don’t. |
| Expression errors | No yellow warning bar at the bottom of the Composition panel. |
- Click ⊙ Capture Preset. Captyne saves the styles, markers, effects, slider keyframes and expressions.
- Open a comp with speech, choose Shine Sweep, click Transcribe and then Generate Captions.
- Scrub through short and long words. Move the
ACP_MASTERnull to reposition every caption, or anACP_SET_n_CTRLnull to move one phrase: the sweep follows.
Build caption presets like this in minutes
Captyne turns your After Effects design into animated captions for every word — with AI transcription inside AE.
See Plans & Pricing →FAQ
Why doesn’t CC Light Sweep follow my text in After Effects?
On text and shape layers the effect is applied after the layer’s transform, so Center is a fixed position in the frame. Drive Center with an expression based on the text’s bounds (sourceRectAtTime and toComp, or Captyne’s _acWord variables) and it follows the layer.
How do I make a light sweep move across text automatically?
Animate Center from just left of the text to just right of it with linear() or ease(), using the left and right edges of the text. Read the start and end times from layer markers so the timing adjusts when you move them.
Can I keyframe the light sweep Center?
You can, but the keyframes are fixed pixel positions, so they won’t fit a different word or follow it. Keyframe a Sweep Progress slider from 0 to 100 instead and convert it to a position with an expression, as in Step 5. The result is a keyframed animation that is relative to every word.
Why do I see “_acWordX is not defined”?
The word variables are added by Captyne. In a new preset, click Capture Preset once and the error goes away. Outside Captyne, paste the block from Using this in any After Effects project at the top of the expression.
Will this work with my own fonts and plugins like Deep Glow?
Yes. The expressions only depend on the size and position of the text, so any font, size or tracking works. Effects after the sweep, such as Glow or Deep Glow, are saved with the preset. Anyone using the preset needs the same third-party plugins installed.
Next: make the gradient behind the sweep fit every word in Gradient Text That Follows Every Word.