PTENES
MODULE 2.9 Track 2 · Resources

™️ Logo & Branding

Nine logo animations — from focus pull blur-reveal to RGB split glitch — to give any brand’s visual identity personality in Remotion videos.

8
Topics
45
Minutes
Int
Level
9
Templates

Detailed content

1

🗺️ Overview — when to animate the logo

The animated logo is the business card in motion of the brand. The choice of animation style communicates personality: blur-reveal = sophistication, bounce-drop = energy, glitch = tech/disruptive, stroke-draw = handcrafted/premium.

Smooth Elegant Neutral Energetic Disruptive blur-reveal fade-reveal stroke-draw typewriter scale-rotate spin-reveal bounce-drop split-reveal glitch-reveal

🎯 Selection rule

Before choosing the animation, answer: what adjective describes my brand? — Sophisticated → blur-reveal. Reliable → stroke-draw. Innovative → glitch-reveal. Young → bounce-drop. Use at most one logo animation per video.

1 logo per video
More than one dilutes the impact
at the beginning
The intro is the right place for the brand
duration 2–4s
Logo animation ≠ long intro
consistency
Same animation in every video
2

🔍 logo-blur-reveal — photographic focus pull

O logo-blur-reveal imitates the focus pull camera: the logo starts with extreme blur (out of focus, as when the camera focuses on the foreground) and gradually becomes sharp. The company name appears with a spring animation after the logo is completely in focus.

sequential blur + spring logo-blur-reveal.tsx
import { useCurrentFrame, useVideoConfig, spring, interpolate } from "remotion";

// blur de 20px → 0 em 1.5s
const blur = interpolate(frame, [0, fps * 1.5], [20, 0],
  { extrapolateLeft: "clamp", extrapolateRight: "clamp" });

// nome aparece DEPOIS do logo estar nítido
const nameProgress = spring({
  frame: Math.max(0, frame - Math.round(fps * 1.5)),
  fps, config: { damping: 12, stiffness: 100 },
});
// aplicar: filter: \`blur(\${blur}px)\`

💡 Practical tip

For premium brands, reduce the stiffness to 60 and increase the damping to 20. The company name will appear more slowly, communicating luxury and confidence — unlike the default's energetic bounce.

blur 20→0
CSS filter blur animated via interpolate
opacity 0.3→1
Simultaneously with the blur
frame offset
Math.max(0, frame - delay)
name translateY
spring 20→0 for a smooth entrance
3

⚡ logo-glitch-reveal — disruptive RGB split

O logo-glitch-reveal uses the technique of RGB channel separation: three copies of the logo (red, green, blue) are randomly offset (Math.sin) and then "converge" into the clean logo. The effect suggests a technical glitch being resolved—perfect for tech brands.

decreasing sinusoidal offset logo-glitch-reveal.tsx
// decay: glitch some progressivamente
const decay = interpolate(frame, [0, 25], [1, 0],
  { extrapolateRight: "clamp" });

// canal vermelho: oscilação senoidal × decay
const redOffsetX = Math.sin(frame * 7.3) * 15 * decay;
const blueOffsetX = Math.sin(frame * 9.2) * 15 * decay;

// logo limpo aparece com spring após glitch
const cleanOpacity = spring({
  frame: Math.max(0, frame - 25),
  fps, config: { damping: 14, stiffness: 80, mass: 0.6 },
});

✓ Brands that are a good fit

  • •Tech startups, cybersecurity, games
  • •Tech/hacking/programming YouTube channels
  • •Electronic music, EDM events, streamers

✗ Brands that aren't a good fit

  • •Banks, healthcare, legal — gives the impression of an error
  • •Luxury brands — the glitch contradicts their positioning
  • •Children’s content — may scare or confuse
3 RGB copies
red, green, blue with mixBlendMode screen
Math.sin × decay
Oscillation that decreases to zero
cleanOpacity spring
Real logo appears after frame 25
glow intensity
box-shadow grows with cleanup
4

✏️ logo-stroke-draw — drawn SVG stroke

O logo-stroke-draw uses the technique of strokeDashoffset to simulate an SVG stroke being drawn in real time. Requires the logo to be a pure SVG (not a raster image). This is the most handcrafted and premium of the styles.

1

Get the SVG path length

In React, pathRef.current.getTotalLength() returns the total length of the path in pixels.

2

Set dasharray = length

strokeDasharray={pathLength} creates a stroke that covers the entire path — dashoffset controls how much is visible.

3

Animate dashoffset from length → 0

interpolate(frame, [0, fps*2], [pathLength, 0]) — the stroke "draws itself" over 2 seconds.

💡 Practical tip

Add fill="none" on the path during the drawing animation and use a second interpolate to make the fill appear (fillOpacity 0→1) only after the stroke is finished. The effect is: draw the outline → fill in the color. Much more impactful than just the outline.

getTotalLength()
Path length in ref useRef
dashoffset L→0
Progressively reveals the stroke
fill none→color
The fill appears after the stroke
SVG required
Doesn’t work with PNG/JPG
5

🏀 logo-bounce-drop — physics-based drop

O logo-bounce-drop uses spring() with damping too low to create the effect of an object falling from above and bouncing before coming to rest. It’s the most energetic and fun template — ideal for youth brands and entertainment brands.

falling spring with bounce logo-bounce-drop.tsx
import { spring, useCurrentFrame, useVideoConfig } from "remotion";

const dropY = spring({
  frame, fps,
  from: -300,  // começa 300px acima
  to: 0,
  config: {
    damping: 6,     // baixo = muitos bounces
    stiffness: 120, // alto = queda rápida
    mass: 1.2,     // leve extra de peso
  },
});

// Logo "amassa" no bounce usando scaleY
const squash = interpolate(Math.abs(dropY),
  [0, 50], [0.85, 1],
  { extrapolateRight: "clamp" });

✓ Perfect for

  • •Children's channels, playful learning, games
  • •Sports, fitness, and energy brands
  • •Apps and startups with a casual tone

✗ Unsuitable for

  • •Premium, finance, and health brands
  • •Formal contexts — harms credibility
  • •Highly detailed logos — squash distorts them
damping 6
Low value = lots of bounces
stiffness 120
High = fast fall and bounce
squash scaleY
Crushes on impact like a cartoon
from -300
Starts outside the frame above
6

🔀 logo-split-reveal — halves expand

O logo-split-reveal splits the logo horizontally in half: the top half moves up and the bottom half moves down (or vice versa), revealing the background—and then both halves return and fit together. It’s a “curtain opening” effect applied to the logo itself.

💡 Clip-path technique

The split uses clipPath to create two versions of the same logo — the top half with clip: inset(0 0 50% 0) and the bottom one with clip: inset(50% 0 0 0). Both are animated with spring translateY in opposite directions. The original logo remains static underneath as a visual anchor.

clip + spring in opposite directions logo-split-reveal.tsx
const splitY = spring({ frame, fps,
  from: 60, to: 0,
  config: { damping: 16, stiffness: 100 },
});

// metade superior vai para cima, inferior para baixo
style={{ transform: `translateY(-${splitY}px)`,
  clipPath: "inset(0 0 50% 0)" }}   // topo

style={{ transform: `translateY(${splitY}px)`,
  clipPath: "inset(50% 0 0 0)" }}   // base
clipPath inset
Visually divides the element
±translateY
Opposites exit and return
anchor logo
Static original underneath
damping 16
Fit with a soft bounce
7

📚 Complete Logo & Branding Library

The 9 logo animation templates — quick reference with the main technique:

logo-blur-reveal
templates/logo-blur-reveal.tsx
Focus pull: blur 20px→0 + name with spring
hook: interpolate blur + spring delay
logo-bounce-drop
templates/logo-bounce-drop.tsx
A -300px drop with a squash on impact
hook: spring damping 6 + scaleY squash
logo-fade-reveal
templates/logo-fade-reveal.tsx
Subtle fade + scale—the most minimal
hook: interpolate opacity + spring scale
logo-glitch-reveal
templates/logo-glitch-reveal.tsx
RGB split with decreasing sinusoidal displacement
hook: Math.sin × decay + cleanOpacity spring
logo-scale-rotate
templates/logo-scale-rotate.tsx
Simultaneous rotation + scaling with spring
hook: spring rotate + spring scale
logo-spin-reveal
templates/logo-spin-reveal.tsx
3D rotation on the Y axis (CSS perspective)
hook: interpolate rotateY + perspective
logo-split-reveal
templates/logo-split-reveal.tsx
Logo halves move out and return
hook: inset clipPath + spring ±translateY
logo-stroke-draw
templates/logo-stroke-draw.tsx
SVG stroke being drawn in real time
hook: strokeDashoffset L→0 + fillOpacity
logo-typewriter
templates/logo-typewriter.tsx
Icon + name typed one letter at a time
hook: Math.floor(progress × text.length)
9 templates
From minimalist to disruptive
SVG required
For stroke-draw and spin (3D)
damping = personality
Low = energy, high = elegance
consistency
1 style per video series

📌 Module summary

✓
Personality-based choice — blur-reveal = sophistication, glitch = tech, bounce = energy
✓
logo-blur-reveal — interpolate blur + spring delay for the name
✓
logo-glitch-reveal — RGB split with Math.sin × decay, cleanOpacity with spring
✓
logo-stroke-draw — strokeDashoffset L→0 requires pure SVG (not raster)
✓
logo-bounce-drop — spring damping 6, squash scaleY on impact
✓
Track 2 completed! — you know the 27 Resource templates (transitions, intros, logos)

Next Track:

Track 3 — Composition: learn to combine multiple templates into complete, professional videos