Vertical video has become the dominant ad format on Meta in 2026, but the production specs and platform-specific rules are still scattered across multiple Meta help pages and outdated 2022-era guides that no longer match current behavior. This guide is the consolidated production reference: exact specs, safe zones, the production checklist, and the seven mistakes that account for most of the underperforming 9:16 ads we audit.
Core Specifications
The current Meta-recommended specs for 9:16 vertical video ads in 2026:
**Resolution**: 1080×1920 pixels (9:16 aspect ratio). Meta accepts up to 4K (2160×3840) but compresses everything down at delivery, so 1080×1920 is the practical sweet spot.
**Aspect ratio**: Exactly 9:16. Meta will accept ratios from 4:5 up to 9:16 in vertical placements, but anything other than exact 9:16 gets letterboxed or auto-cropped in Reels delivery, hurting CTR.
**Frame rate**: 30fps recommended. 24fps acceptable for cinematic intent. 60fps adds file size without meaningful viewer-side benefit on small screens.
**Codec**: H.264 video codec, MP4 container. Meta supports MOV and other containers but MP4 + H.264 is the fastest-loading combination across delivery channels.
**Bitrate**: 8-12 Mbps for video. Below 6 Mbps and compression artifacts become visible in motion; above 15 Mbps adds file size without quality benefit after Meta's recompression.
**Audio**: 128 kbps AAC codec, 48kHz sample rate, stereo. Mono works but loses dimensional feel for music-driven ads.
**File size**: Under 4GB hard limit. Practical target: under 200MB for fast upload and processing.
**Duration**: 15-30 seconds optimal for Reels, 60-second hard cap. For Stories: 15 seconds per card.
Safe Zones — Where Critical Content Must Live
Meta's UI overlays cover specific zones of every 9:16 ad. Content placed in these zones gets visually obscured or competes with caption text the algorithm auto-overlays. The safe zone — the area where critical content remains visible — is smaller than most teams realize.
For 1080×1920 9:16 vertical ads on Reels, the safe zone is approximately 1080 pixels wide by 1500 pixels tall. Specifically:
**Top margin: 110 pixels.** This zone holds the username badge, profile picture, and music sticker. Any text or critical visual in the top 110 pixels gets covered.
**Bottom margin: 310 pixels.** This zone holds the CTA card (Shop Now button), caption text, like/share/save icons, and the audio source attribution. Anything in the bottom 310 pixels is at high risk of being obscured.
**Side margins: 40 pixels each side.** Minimal but real — like/comment buttons on the right edge intrude into the rightmost 40 pixels.
The net safe zone for guaranteed visible content is roughly 1000×1500 pixels, centered. All headlines, product shots, faces, calls-to-action, and any critical text must live inside this central window. Designs that place text or CTAs near the edges look fine in your editing software and break in the actual Reels feed.
The 7 Most Common Production Mistakes
Mistake 1: Title text in the top 15% of the frame
Username overlays and music stickers occupy the top 110 pixels. Title text placed in this zone gets partially or fully covered on most viewer devices. Fix: move all headline text to the 200-400 pixel range from the top.
Mistake 2: CTA in the bottom 25% of the frame
The bottom 310 pixels are covered by the CTA card, caption strip, and engagement buttons. Burned-in CTA text in this zone competes with Meta's native CTA, creating visual clutter. Fix: place your in-creative CTA at 1200-1500px from the top (just above the platform CTA card).
Mistake 3: Logo or brand mark in frame 1
Opening with a logo or brand intro burns the first 1-2 seconds — exactly the window where TSR is decided. Logos belong in the closing frames, not the opening. Fix: open with the hook (motion, hook formula, problem statement). Save brand identification for the last 3-5 seconds.
Mistake 4: Wrong aspect ratio (1:1 or 4:5 uploaded as "vertical")
A 1:1 video uploaded for Reels placement gets letterboxed with black bars top and bottom, looking immediately like a recycled Feed ad. CTR drops 25-40% vs native 9:16. Fix: only upload exactly 9:16 (1080×1920) for Reels and Stories placements.
Mistake 5: Low bitrate compression artifacts
Some teams export at 3-4 Mbps to save file size, not realizing Meta compresses again at delivery. The result: visible compression banding, motion blur, color smearing — particularly in dark scenes and gradients. Fix: export at 8-12 Mbps minimum. Larger file, much better delivered quality.
Mistake 6: No burned-in subtitles
78% of Reels ads are watched sound-off in 2026. Ads without subtitles deliver only the visual half of their message to most viewers. Meta's auto-captions are not a substitute — they're inconsistent, off-brand, and disabled on many user devices. Fix: burn subtitles into the video file, in your brand typography, positioned in the central safe zone (not the bottom).
Mistake 7: End cards without action
The last 3 seconds of the video are often wasted on a logo reveal or fade-out. Better-performing ads use the last 3 seconds for a final CTA reinforcement: a specific action verb ("Tap to shop"), a specific incentive ("Free shipping today"), or a specific scarcity signal ("Only 47 left in stock"). Fix: design the last 3 seconds as deliberately as the first 3.
The Production Checklist
Before shipping any 9:16 vertical video ad, run this checklist:
1. Resolution exactly 1080×1920
2. Aspect ratio exactly 9:16
3. Format MP4 + H.264 + AAC
4. Bitrate 8-12 Mbps
5. Duration 15-30 seconds (or 15s per Story card)
6. All text inside 200-1500px vertical zone
7. CTA in 1200-1500px range (not below)
8. Burned-in subtitles in safe zone
9. Hook in frames 1-3 (no logo intro)
10. End-card CTA in last 3 seconds
Ads that pass all 10 checks consistently outperform ads that fail 2+ checks by 25-40% on CPA across our audit sample.
File Naming And Version Control
A small operational detail that pays off at scale: name files with structured slugs that include format and version. Example: `brand_productname_concept_9x16_v3.mp4`. When you're iterating on hook variants, format variants, and offer variants across 30-50 ads per batch, this naming convention is the difference between a manageable creative library and a folder full of "Final_FINAL_v2_use_this_one.mp4" files. AdRiseLab and most creative-ops tools enforce this naming automatically — if you're doing it manually, build the convention now before it becomes painful later.
Generate Production-Ready 9:16 Creative
AdRiseLab generates vertical video and static 9:16 creative from any product URL, with safe zones, codecs, subtitles, and CTA placement automatically conforming to Meta's production specs. Skip the production checklist — get ad-ready files in 30 seconds. Try AdRiseLab free.
Related Reading
See the Reels-first strategy for why every campaign should be designed 9:16 first. Read the first 3 seconds hook formulas for the opening structure that determines TSR. And understand why static vs video 60/40 mix wins for the format-split math behind a Reels-first portfolio.
