Definitive reference for FFmpeg and ASS/SSA animation timing units, optimal durations, and best practices. PROACTIVELY activate for: (1) Animation timing questions, (2) ASS subtitle timing, (3) Karaoke timing tags, (4) Caption duration calculation, (5) Transition duration selection, (6) Fade/zoom timing, (7) Frame rate considerations, (8) Platform-specific timing (TikTok/Shorts/Reels), (9) Readability formulas, (10) Audio-video sync tolerances. Provides: Complete time unit reference tables, optimal duration guidelines, psychology-based timing recommendations, caption readability formulas, and platform-specific timing profiles.
View on GitHubJosiahSiegel/claude-plugin-marketplace
ffmpeg-master
plugins/ffmpeg-master/skills/ffmpeg-animation-timing-reference/SKILL.md
January 20, 2026
Select agents to install to:
npx add-skill https://github.com/JosiahSiegel/claude-plugin-marketplace/blob/main/plugins/ffmpeg-master/skills/ffmpeg-animation-timing-reference/SKILL.md -a claude-code --skill ffmpeg-animation-timing-referenceInstallation paths:
.claude/skills/ffmpeg-animation-timing-reference/## CRITICAL GUIDELINES
### Windows File Path Requirements
**MANDATORY: Always Use Backslashes on Windows for File Paths**
When using Edit or Write tools on Windows, you MUST use backslashes (`\`) in file paths, NOT forward slashes (`/`).
### Documentation Guidelines
**NEVER create new documentation files unless explicitly requested by the user.**
---
# FFmpeg Animation Timing Reference (2025-2026)
## Quick Reference Card
| Context | Unit | Example |
|---------|------|---------|
| FFmpeg filters (fade, xfade, drawtext) | **Seconds** | `duration=1.5` |
| FFmpeg zoompan `d=` parameter | **Frames** | `d=150` (150 frames) |
| FFmpeg time variable `t` | **Seconds** | `enable='gte(t,2)'` |
| ASS karaoke tags (\k, \kf, \ko) | **Centiseconds** | `{\k100}` = 1 second |
| ASS animation tags (\t, \fad, \move) | **Milliseconds** | `\t(0,500,...)` = 0.5s |
| ASS dialogue timestamps | **H:MM:SS.CC** | `0:00:05.50` |
---
# CRITICAL: ASS Has TWO Different Time Units!
**This is the most common source of confusion in subtitle animations.**
## ASS/SSA Time Unit Disambiguation
| Tag Type | Unit | Conversion | Example |
|----------|------|------------|---------|
| **Karaoke tags** (\k, \kf, \ko, \K) | **Centiseconds** (1/100s) | × 100 | `{\k50}` = 0.5 seconds |
| **Animation tags** (\t) | **Milliseconds** (1/1000s) | × 1000 | `\t(0,200,...)` = 0.2 seconds |
| **Fade tags** (\fad) | **Milliseconds** | × 1000 | `\fad(300,0)` = 0.3s fade in |
| **Move tags** (\move) | **Milliseconds** | × 1000 | `\move(x1,y1,x2,y2,0,500)` = 0.5s |
| **Dialogue timestamps** | **H:MM:SS.CC** | Centiseconds | `0:00:01.50` = 1.5 seconds |
### Example: Same Duration, Different Units
```ass
; Both animations last 0.5 seconds but use DIFFERENT UNITS:
; Karaoke: 50 CENTISECONDS = 0.5 seconds
{\k50}Word
; Animation: 500 MILLISECONDS = 0.5 seconds
{\t(0,500,\fscx120)}Word
```
---
# Section 1: FFmpeg Time Units (All Filters)
## Complete FFmpeg Time Unit Reference
| Filter/Context | Parameter | Un