Text Sequencer
Cycle through a list of text strings with timing based on character length.
Expression Code
// Text Sequencer
// Apply to Source Text
const texts = ["First section", "A longer sentence", "Short"];
const fps = 25;
const charsPerSecond = 8;
const durations = texts.map(t => Math.max(t.length * (fps / charsPerSecond), fps));
const starts = texts.map((_, i) =>
durations.slice(0, i).reduce((a, b) => a + b, 0)
);
const totalFrames = starts[starts.length - 1] + durations[durations.length - 1];
const f = Math.floor(time * fps) % totalFrames;
let idx = 0;
for (let i = starts.length - 1; i >= 0; i--) {
if (f >= starts[i]) { idx = i; break; }
}
texts[idx]Apply to a text layer's Source Text property. The expression will cycle through each string in the texts array, holding each one on screen proportional to its character count.
1. Create a text layer
2. Alt/Option-click the Source Text stopwatch
3. Paste this expression
4. Edit the texts array with your own strings
5. Adjust charsPerSecond to control overall pacing