Hook the viewer in the first 0.5‑1 s with a visual surprise, then deliver the core promise by 2 s, and cut to a rapid beat or caption at 3 s to lock retention above 70 %.
Step‑by‑step structure (0‑3 s)
1. 0.00‑0.50 s – Visual shock – use a high‑contrast cut, motion blur, or an unexpected object. TikTok’s video_thumbnail API flag sharpness>0.8 helps pick the most eye‑catching frame.
2. 0.50‑1.00 s – Audio hook – a sync‑locked beat drop or a spoken “wait for it” line. In Premiere Pro set the clip’s Audio Gain to +3 dB and enable Auto‑duck for background music.
3. 1.00‑2.00 s – Promise statement – text overlay (≤ 6 words) that states the payoff. Use Instagram’s Sticker API with font=bold, size=24, color=#FFF.
4. 2.00‑2.50 s – Quick proof – flash a result, statistic, or transformation. Keep the clip under 15 frames to stay within the 0.5 s window.
5. 2.50‑3.00 s – Call‑to‑action cue – a jump‑cut to the next beat, or a “tap” animation that cues the viewer to stay.
Hook type comparison
| Hook | Visual impact | Production time | Avg. 3‑s retention |
|------|---------------|-----------------|-------------------|
| Shock cut | ★★★★★ | ★★ | 78 % |
| Text tease | ★★★ | ★★★★ | 71 % |
| Mini‑challenge | ★★★★ | ★★ | 74 % |
Analytics snippet (Python, TikTok Business API)
import requests, json
resp = requests.get(
"https://business-api.tiktok.com/open_api/v1.3/video/metrics",
params={"video_id":"12345","metrics":"watch_time,completion_rate"},
headers={"Authorization":"Bearer YOUR_TOKEN"}
)
data = resp.json()
retention = data["data"]["completion_rate"]
print(f"3‑s retention: {retention['3s']*100:.1f}%")Gotcha: On videos longer than 15 s the algorithm re‑evaluates retention every 5 s, so repeat the 0‑3 s hook at the 8‑s mark or you’ll see a steep drop‑off.