Detailed content
🗺️ Overview — intros, outros, and lower thirds
Intros and outros are the first and last frames the viewer sees. A weak intro loses views in the first 5 seconds. An outro without a call to action loses subscriptions and clicks. These templates solve both sides.
🎯 Core concept
All these templates use the same pattern: spring() for entrances with natural physics + interpolate() for smooth exits. The difference is in the what animates — text, underlines, rings, particles.
🎞️ cinematic-title-intro — spring + underline
O cinematic-title-intro is the most widely used opening template: the title rises with spring physics (spring()), an underline expands from left to right, and the subtitle fades in with a delay. Cinematic result with ~50 lines of code.
const titleY = spring({ frame, fps, from: 50, to: 0, durationInFrames: 40, config: { damping: 14, mass: 0.8 }, }); const underlineWidth = interpolate( frame, [20, 50], [0, 100], { extrapolateLeft: "clamp", extrapolateRight: "clamp" } ); const subtitleOpacity = interpolate( frame, [40, 60], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" } );
💡 Practical tip
Change the color of the underline for your brand color. With one change to the gradient you get a completely customized intro. Combine with fade-through-black before it for a cinematic fade-in from black.
⏱️ countdown-intro — 3-2-1-GO! ring
O countdown-intro uses an SVG ring with strokeDasharray animated to show the progress of each second, while the number in the center changes from 3 → 2 → 1 → GO with a scale spring.
const circumference = 2 * Math.PI * 70; const ringProgress = (frame % fps) / fps; const dashOffset = circumference * ringProgress; // GO! com spring de escala const goScale = spring({ frame: Math.max(0, frame - totalCountdownFrames), fps, config: { damping: 8, stiffness: 100 }, }); // SVG: anel gira -90deg (topo = início) <svg style={{ transform: "rotate(-90deg)" }}> <circle stroke="#3b82f6" strokeDasharray={circumference} strokeDashoffset={dashOffset} /> </svg>
✓ Ideal contexts
- •Live streams (interval before start)
- •Technical tutorials with an energetic intro
- •Sports, gaming, and timed challenge videos
✗ Avoid in
- •Serious / formal corporate content
- •Emotional or narrative videos
- •When the content itself already has a strong introduction
📋 lower-third — name/title bar
O lower-third is the classic TV overlay: a bar appears in the lower third of the frame with a name and title/role. It’s standard in journalism and interviews; on YouTube, it adds a touch of professionalism.
Bar slides in from the left
An element translateX(-100% → 0) with spring enters from the left edge of the frame.
Text appears with a delay
Name and title make opacity fade in after the bar is visible — prevents text from appearing before the container.
Bar exits to the left
Near the end of the composition, the bar retraces its path with smooth interpolation.
💡 Practical tip
Use lower-third with <Sequence from={fps * 3} durationInFrames={fps * 4}> to show the bar only during a specific section of the video. The useCurrentFrame() inside the Sequence starts from zero — no manual offset calculations.
🔔 end-card + subscribe-reminder — conversion
O end-card displays a call-to-action card at the end of the video with subscribe buttons. The subscribe-reminder is a floating overlay that can appear at any moment—both are conversion tools for YouTube channels.
// Aparece no frame 90, fica 3s, some const showAt = fps * 3; const hideAt = fps * 6; const opacity = interpolate( frame, [showAt, showAt + 10, hideAt - 10, hideAt], [0, 1, 1, 0], { extrapolateLeft: "clamp", extrapolateRight: "clamp" } ); const translateY = spring({ frame: Math.max(0, frame - showAt), fps, config: { damping: 12 }, from: 60, to: 0, });
✓ Best practices
- •Showing the subscribe-reminder halfway through the video
- •20-second end card (YouTube standard)
- •Keep the visual cloche short and to the point
✗ Common mistakes
- •Showing the subscribe-reminder too early (before 30s)
- •End card with more than 4 elements — confusing
- •Colors that conflict with the content behind them
💬 quote-card + title-split — visual impact
O quote-card displays a quote with the author highlighted — great for motivational videos, interviews, and lesson highlights. The title-split splits the title into two blocks that meet in the center—a dramatic effect for openings.
💡 title-split in practice
The trick of title-split is simple: two spans, one with translateX(-80 → 0) and another one with translateX(80 → 0), both animated with spring in the same frame. Their meeting in the center creates visual tension that viewers feel even without noticing the mechanics.
const progress = spring({ frame, fps, config: { damping: 18, stiffness: 90 } }); // Metade esquerda vem da esquerda const leftX = interpolate(progress, [0, 1], [-80, 0]); // Metade direita vem da direita const rightX = interpolate(progress, [0, 1], [80, 0]);
📚 Complete Intro & Outro Library
The 9 templates in this category — quick reference:
📌 Module summary
Next Module:
2.9 — Logo & Branding: 9 logo animations for visual identity