Overview
Each social platform has its own combination of aspect ratio, max duration, codec, bitrate, frame rate, and caption / UI safe zones. Getting any of these wrong on the export means the platform will either reject, re-encode (quality drop), or crop your creative. This skill encodes the current 2026 specs as a single-source-of-truth table the agent can extract from per brief.
Instructions
Core Rules
- Always pick the platform spec before generating frames — generation must match the export aspect ratio (don't generate 16:9 then crop to 9:16 unless intentional).
- Burn captions on top of the base render, not as a sidecar — sound-off viewing is the default.
- Respect the safe zone — keep all critical text and faces away from where the platform's UI sits (top, bottom, right side for TikTok).
- Final encode in H.264 / yuv420p, even if the source is HEVC / 10-bit. Universal compatibility beats marginal quality.
- Audio: AAC stereo, 128 kbps minimum, 48 kHz sample rate. Mono audio reads as low-quality on most feeds.
- Loudness: -14 LUFS integrated (TikTok / IG / YT now normalize to roughly this — overshooting means platform compression hits you).
Platform Spec Table
| Platform |
Aspect |
Resolution |
Length cap |
Frame rate |
Codec |
Bitrate |
Audio |
| TikTok feed |
9:16 |
1080×1920 |
60s (organic), 60min (max) |
30 / 60 |
H.264 |
8–10 Mbps |
AAC 128k 48kHz |
| Instagram Reels |
9:16 |
1080×1920 |
90s (organic), 15min (Reels Long) |
30 |
H.264 |
5–8 Mbps |
AAC 128k 48kHz |
| YouTube Shorts |
9:16 |
1080×1920 |
60s (cap is enforced) |
30 / 60 |
H.264 |
8–12 Mbps |
AAC 192k 48kHz |
| IG / FB feed video |
1:1 or 4:5 |
1080×1080 / 1080×1350 |
60min (FB), 90s organic on Reels |
30 |
H.264 |
5–8 Mbps |
AAC 128k 48kHz |
| IG / FB Stories |
9:16 |
1080×1920 |
60s per card |
30 |
H.264 |
5–8 Mbps |
AAC 128k 48kHz |
| Snapchat |
9:16 |
1080×1920 |
60s |
30 |
H.264 |
5–8 Mbps |
AAC 128k 48kHz |
| YouTube long-form |
16:9 |
1920×1080 (1080p) / 3840×2160 (4K) |
12hr |
30 / 60 |
H.264 (or H.265 source) |
8–12 Mbps (1080p) / 35–45 Mbps (4K) |
AAC 192k 48kHz |
| X / Twitter |
16:9 or 1:1 |
1280×720+ |
140s organic, 10min Premium |
30 / 60 |
H.264 |
5–25 Mbps |
AAC 128k 48kHz |
| LinkedIn feed |
16:9, 1:1, 9:16 |
1920×1080 / 1080×1080 / 1080×1920 |
10min |
30 |
H.264 |
8–10 Mbps |
AAC 128k 48kHz |
| Pinterest Idea Pin |
9:16 |
1080×1920 |
60s |
30 |
H.264 |
5–8 Mbps |
AAC 128k 48kHz |
Safe Zones (don't put critical content here)
| Platform |
Top reserve |
Bottom reserve |
Right reserve |
Left reserve |
| TikTok |
130 px |
350 px (caption + buttons) |
200 px (action rail) |
0 px |
| IG Reels |
200 px (header) |
360 px (caption + reel CTA) |
100 px |
0 px |
| YT Shorts |
110 px |
280 px |
180 px |
0 px |
| IG Stories |
250 px (DM bar) |
250 px (Send to / Reactions) |
0 px |
0 px |
| FB Reels |
200 px |
350 px |
120 px |
0 px |
| YT long-form 16:9 |
60 px |
100 px (progress bar) |
0 px |
0 px |
(All measured at 1080×1920 or 1920×1080. Scale with output resolution.)
Captions / On-Screen Text Rules
- Center caption block, never bottom-aligned (bottom is platform UI).
- For 9:16: caption block sits roughly in the upper-center third (between Y=600 and Y=1200 of 1080×1920) — avoids both header and CTA bar.
- Font: bold sans (Inter Bold, Helvetica Black, SF Pro Display Bold, Montserrat Black). 80–110 pt for headline hooks at 1080×1920.
- Stroke + drop shadow: 2 px stroke, 1 px shadow, opacity 0.6 — preserves readability over any background.
- One sentence per card max. Two-sentence cards get skipped.
- Word-by-word reveal in time with VO outperforms full-sentence flat captions on TikTok / Reels.
Output Presets (ffmpeg) — copy-paste ready
# 9:16 — TikTok / Reels / Shorts / Stories
-vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2:color=black,fps=30" \
-c:v libx264 -profile:v high -level 4.0 -crf 21 -preset slow -pix_fmt yuv420p \
-c:a aac -b:a 128k -ar 48000 -ac 2 \
-movflags +faststart
# 1:1 — IG / FB feed
-vf "scale=1080:1080:force_original_aspect_ratio=decrease,pad=1080:1080:(ow-iw)/2:(oh-ih)/2:color=black,fps=30" \
-c:v libx264 -profile:v high -crf 21 -preset slow -pix_fmt yuv420p \
-c:a aac -b:a 128k -ar 48000 -ac 2 -movflags +faststart
# 16:9 — YouTube long-form / LinkedIn
-vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2:color=black,fps=30" \
-c:v libx264 -profile:v high -level 4.2 -crf 19 -preset slow -pix_fmt yuv420p \
-c:a aac -b:a 192k -ar 48000 -ac 2 -movflags +faststart
Workflow
- Identify primary platform for the brief (TikTok / Reels / Shorts / etc.).
- Pick aspect, length cap, fps from the table.
- Mark safe zones when storyboarding — keep face, hook text, CTA inside the center region.
- At export, use the matching ffmpeg preset above.
- If publishing to multiple platforms, render the master in the largest aspect (e.g. 9:16 1080×1920 30fps) and downconvert to others — never upscale.
Decision Guide
| Brief says |
Output |
| "TikTok ad" |
9:16, 1080×1920, 30fps, ≤60s, H.264 8 Mbps |
| "Instagram Reel" |
9:16, 1080×1920, 30fps, ≤90s, H.264 6 Mbps |
| "YouTube Short" |
9:16, 1080×1920, 60fps if motion-heavy else 30, ≤60s, H.264 10 Mbps |
| "Story (any platform)" |
9:16, 1080×1920, 30fps, ≤15s per card |
| "IG feed" |
4:5, 1080×1350, 30fps |
| "FB feed" |
1:1, 1080×1080, 30fps |
| "YouTube long-form" / "explainer" |
16:9, 1920×1080, 30fps (60fps if screen-cap) |
| "Hero video for landing page" |
16:9, 1920×1080, 30fps, mute by default, MP4 + WebM |
| "X / Twitter post" |
16:9 1280×720 if widescreen, else 1:1 1080×1080 |
| "LinkedIn post" |
1:1 1080×1080 (preferred) or 16:9 1920×1080 |
| "Pinterest" |
9:16 1080×1920 |
Examples
Example 1: TikTok ad export
Source: 4K 16:9 24fps generated at Veo. Target: TikTok ad.
ffmpeg -i source.mp4 \
-vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2:color=black,fps=30" \
-c:v libx264 -profile:v high -level 4.0 -crf 21 -preset slow -pix_fmt yuv420p \
-c:a aac -b:a 128k -ar 48000 -ac 2 \
-movflags +faststart \
tiktok-ad-9x16.mp4
Example 2: Cross-platform render plan
Brief: One ad, ship to TikTok + IG Reels + IG feed + YT Shorts + YT long-form trailer.
| Cut |
Aspect |
Resolution |
Length |
| Master |
9:16 |
1080×1920 |
45s |
| TikTok |
9:16 |
1080×1920 |
45s (master) |
| IG Reels |
9:16 |
1080×1920 |
45s (master) |
| YT Shorts |
9:16 |
1080×1920 |
45s (master, captions repositioned higher) |
| IG feed (1:1 cut-down) |
1:1 |
1080×1080 |
30s (re-edited, key beats only) |
| YT long-form trailer |
16:9 |
1920×1080 |
60s (re-edited, b-roll padded) |
References
1---2name: video-spec-sheet3description: Canonical reference for platform-by-platform video output specs: aspect ratio, length cap, codec, bitrate, frame rate, color, caption style and safe-zone bands. Use when picking output settings, validating an export, or spec-checking before publishing. Covers TikTok, Reels, Shorts, IG/FB feed, Stories, X, LinkedIn — all four format families: short-form vertical, square/feed, long-form 16:9, story 9:16.4license: Apache-2.05---67## Overview89Each social platform has its own combination of aspect ratio, max duration, codec, bitrate, frame rate, and caption / UI safe zones. Getting any of these wrong on the export means the platform will either reject, re-encode (quality drop), or crop your creative. This skill encodes the current 2026 specs as a single-source-of-truth table the agent can extract from per brief.1011## Instructions1213### Core Rules1415- Always pick the platform spec before generating frames — generation must match the export aspect ratio (don't generate 16:9 then crop to 9:16 unless intentional).16- Burn captions on top of the base render, not as a sidecar — sound-off viewing is the default.17- Respect the safe zone — keep all critical text and faces away from where the platform's UI sits (top, bottom, right side for TikTok).18- Final encode in H.264 / yuv420p, even if the source is HEVC / 10-bit. Universal compatibility beats marginal quality.19- Audio: AAC stereo, 128 kbps minimum, 48 kHz sample rate. Mono audio reads as low-quality on most feeds.20- Loudness: -14 LUFS integrated (TikTok / IG / YT now normalize to roughly this — overshooting means platform compression hits you).2122### Platform Spec Table2324| Platform | Aspect | Resolution | Length cap | Frame rate | Codec | Bitrate | Audio |25|---|---|---|---|---|---|---|---|26| TikTok feed | 9:16 | 1080×1920 | 60s (organic), 60min (max) | 30 / 60 | H.264 | 8–10 Mbps | AAC 128k 48kHz |27| Instagram Reels | 9:16 | 1080×1920 | 90s (organic), 15min (Reels Long) | 30 | H.264 | 5–8 Mbps | AAC 128k 48kHz |28| YouTube Shorts | 9:16 | 1080×1920 | 60s (cap is enforced) | 30 / 60 | H.264 | 8–12 Mbps | AAC 192k 48kHz |29| IG / FB feed video | 1:1 or 4:5 | 1080×1080 / 1080×1350 | 60min (FB), 90s organic on Reels | 30 | H.264 | 5–8 Mbps | AAC 128k 48kHz |30| IG / FB Stories | 9:16 | 1080×1920 | 60s per card | 30 | H.264 | 5–8 Mbps | AAC 128k 48kHz |31| Snapchat | 9:16 | 1080×1920 | 60s | 30 | H.264 | 5–8 Mbps | AAC 128k 48kHz |32| YouTube long-form | 16:9 | 1920×1080 (1080p) / 3840×2160 (4K) | 12hr | 30 / 60 | H.264 (or H.265 source) | 8–12 Mbps (1080p) / 35–45 Mbps (4K) | AAC 192k 48kHz |33| X / Twitter | 16:9 or 1:1 | 1280×720+ | 140s organic, 10min Premium | 30 / 60 | H.264 | 5–25 Mbps | AAC 128k 48kHz |34| LinkedIn feed | 16:9, 1:1, 9:16 | 1920×1080 / 1080×1080 / 1080×1920 | 10min | 30 | H.264 | 8–10 Mbps | AAC 128k 48kHz |35| Pinterest Idea Pin | 9:16 | 1080×1920 | 60s | 30 | H.264 | 5–8 Mbps | AAC 128k 48kHz |3637### Safe Zones (don't put critical content here)3839| Platform | Top reserve | Bottom reserve | Right reserve | Left reserve |40|---|---|---|---|---|41| TikTok | 130 px | 350 px (caption + buttons) | 200 px (action rail) | 0 px |42| IG Reels | 200 px (header) | 360 px (caption + reel CTA) | 100 px | 0 px |43| YT Shorts | 110 px | 280 px | 180 px | 0 px |44| IG Stories | 250 px (DM bar) | 250 px (Send to / Reactions) | 0 px | 0 px |45| FB Reels | 200 px | 350 px | 120 px | 0 px |46| YT long-form 16:9 | 60 px | 100 px (progress bar) | 0 px | 0 px |4748(All measured at 1080×1920 or 1920×1080. Scale with output resolution.)4950### Captions / On-Screen Text Rules5152- Center caption block, never bottom-aligned (bottom is platform UI).53- For 9:16: caption block sits roughly in the upper-center third (between Y=600 and Y=1200 of 1080×1920) — avoids both header and CTA bar.54- Font: bold sans (Inter Bold, Helvetica Black, SF Pro Display Bold, Montserrat Black). 80–110 pt for headline hooks at 1080×1920.55- Stroke + drop shadow: 2 px stroke, 1 px shadow, opacity 0.6 — preserves readability over any background.56- One sentence per card max. Two-sentence cards get skipped.57- Word-by-word reveal in time with VO outperforms full-sentence flat captions on TikTok / Reels.5859### Output Presets (ffmpeg) — copy-paste ready6061```bash62# 9:16 — TikTok / Reels / Shorts / Stories63-vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2:color=black,fps=30" \64 -c:v libx264 -profile:v high -level 4.0 -crf 21 -preset slow -pix_fmt yuv420p \65 -c:a aac -b:a 128k -ar 48000 -ac 2 \66 -movflags +faststart6768# 1:1 — IG / FB feed69-vf "scale=1080:1080:force_original_aspect_ratio=decrease,pad=1080:1080:(ow-iw)/2:(oh-ih)/2:color=black,fps=30" \70 -c:v libx264 -profile:v high -crf 21 -preset slow -pix_fmt yuv420p \71 -c:a aac -b:a 128k -ar 48000 -ac 2 -movflags +faststart7273# 16:9 — YouTube long-form / LinkedIn74-vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2:color=black,fps=30" \75 -c:v libx264 -profile:v high -level 4.2 -crf 19 -preset slow -pix_fmt yuv420p \76 -c:a aac -b:a 192k -ar 48000 -ac 2 -movflags +faststart77```7879### Workflow80811. Identify primary platform for the brief (TikTok / Reels / Shorts / etc.).822. Pick aspect, length cap, fps from the table.833. Mark safe zones when storyboarding — keep face, hook text, CTA inside the center region.844. At export, use the matching ffmpeg preset above.855. If publishing to multiple platforms, render the master in the largest aspect (e.g. 9:16 1080×1920 30fps) and downconvert to others — never upscale.8687### Decision Guide8889| Brief says | Output |90|---|---|91| "TikTok ad" | 9:16, 1080×1920, 30fps, ≤60s, H.264 8 Mbps |92| "Instagram Reel" | 9:16, 1080×1920, 30fps, ≤90s, H.264 6 Mbps |93| "YouTube Short" | 9:16, 1080×1920, 60fps if motion-heavy else 30, ≤60s, H.264 10 Mbps |94| "Story (any platform)" | 9:16, 1080×1920, 30fps, ≤15s per card |95| "IG feed" | 4:5, 1080×1350, 30fps |96| "FB feed" | 1:1, 1080×1080, 30fps |97| "YouTube long-form" / "explainer" | 16:9, 1920×1080, 30fps (60fps if screen-cap) |98| "Hero video for landing page" | 16:9, 1920×1080, 30fps, mute by default, MP4 + WebM |99| "X / Twitter post" | 16:9 1280×720 if widescreen, else 1:1 1080×1080 |100| "LinkedIn post" | 1:1 1080×1080 (preferred) or 16:9 1920×1080 |101| "Pinterest" | 9:16 1080×1920 |102103## Examples104105### Example 1: TikTok ad export106107Source: 4K 16:9 24fps generated at Veo. Target: TikTok ad.108109```bash110ffmpeg -i source.mp4 \111 -vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2:color=black,fps=30" \112 -c:v libx264 -profile:v high -level 4.0 -crf 21 -preset slow -pix_fmt yuv420p \113 -c:a aac -b:a 128k -ar 48000 -ac 2 \114 -movflags +faststart \115 tiktok-ad-9x16.mp4116```117118### Example 2: Cross-platform render plan119120Brief: One ad, ship to TikTok + IG Reels + IG feed + YT Shorts + YT long-form trailer.121122| Cut | Aspect | Resolution | Length |123|---|---|---|---|124| Master | 9:16 | 1080×1920 | 45s |125| TikTok | 9:16 | 1080×1920 | 45s (master) |126| IG Reels | 9:16 | 1080×1920 | 45s (master) |127| YT Shorts | 9:16 | 1080×1920 | 45s (master, captions repositioned higher) |128| IG feed (1:1 cut-down) | 1:1 | 1080×1080 | 30s (re-edited, key beats only) |129| YT long-form trailer | 16:9 | 1920×1080 | 60s (re-edited, b-roll padded) |130131## References132133- [TikTok video specs](https://support.tiktok.com/en/using-tiktok/creating-videos)134- [Instagram Reels specs](https://help.instagram.com/270447560766967)135- [YouTube Shorts specs](https://support.google.com/youtube/answer/12340300)136- [Meta Ads guidelines](https://www.facebook.com/business/ads-guide)