Meta video ad specs: 4:5 feed, 9:16 Reels, and safe zones

Meta lists 4:5 at 1440×1800 for Facebook Feed video ads and 9:16 for Instagram, with a Reels safe zone. How to make each with Sume and place captions.

6 min readSume
All posts

Meta's ads guide recommends 4:5 video at 1440×1800 for Facebook Feed, 9:16 at 1080×1920 for Instagram Feed, and 9:16 at 1440×2560 for Instagram Reels, and suggests Reels ads leave at least 14% of the top, 35% of the bottom, and 6% of each side free of text, logos, and other key elements. No Sume video model takes a 4:5 aspect_ratio, so crop it with video filter or render it with Timeline, and move burned-in captions with the caption design tokens.

Meta's specs are quoted from three Meta Ads Guide pages, Facebook Feed, Instagram Feed, and Instagram Reels, read on 2026-09-27; they can change. Sume facts come from Video filter, Timeline 1.0, Video captions, and the API reference.

What are Meta's video ad specs by placement?

The pages show specs for the Awareness objective. File type, ratio, resolution, and video settings are design recommendations; duration, file size, and minimum size are technical requirements.

From Meta's Ads Guide pages for Facebook Feed, Instagram Feed, and Instagram Reels, read 2026-09-27.
SpecFacebook FeedInstagram FeedInstagram Reels
Ratio4:59:169:16
Resolution1440×18001080×19201440×2560
File typeMP4, MOV, or GIFMP4, MOV, or GIFMP4, MOV
Duration1 second to 241 minutes1 second to 60 minutes0 seconds to 15 minutes
Maximum file size4 GB4 GB4 GB
Minimum size120 px wide, 120 px high250 px wide250 px wide under 30 s, 500 px from 30 s
Aspect ratio toleranceNot listed1%Not listed
Video settingsH.264, square pixels, fixed frame rate, progressive, stereo AAC at 128 kbps+Not listedSame as Facebook Feed

How do I make a 4:5 video when no model outputs 4:5?

aspect_ratio on POST /v1/videos has no 4:5 value, and avatar video takes only 1:1, 3:4, 9:16, 4:3, or 16:9. Start from a 9:16 clip and use one of two routes:

  • Crop: a video filter crop op with x: 0, width: 1, height: 0.703125, and y: 0.1484375 cuts a centered 4:5 window from any 9:16 frame (our arithmetic: 16/9 × 0.703125 = 1.25). The allowlisted scale filter can then size it to 1440×1800, or keep the crop's own size, which is still 4:5. The source's frame rate and audio carry over, and sources can run up to 300 seconds.
  • Render: Timeline 1.0 with output: { width: 1440, height: 1800 } and the default fit: "cover" fills the frame and crops what overflows (fit modes). Today its sound comes from the audio spine, so detach the clip's audio first.
curl -X POST https://api.sume.com/v1/video-filter \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: meta-feed-4x5-001" \
  -d '{
    "video_url": "https://media.sume.com/artifacts/artf_demo/vertical.mp4",
    "ops": [{ "op": "crop", "x": 0, "y": 0.1484375, "width": 1, "height": 0.703125 }],
    "filtergraph": "scale=1440:1800"
  }'

Can Sume output Meta's 1440×2560 Reels size?

Not as a documented option. Timeline and trim cap each output edge at 2,160 px. The filter docs set no size limit for the allowlisted scale filter but promise no output size either, and warn that a program that passes the free POST /v1/video-filter/check can still fail on the box, for example on memory or time. 1440×2560 is a design recommendation, not a technical requirement; Timeline's default 1080×1920 keeps 9:16, matches the Instagram Feed resolution, and clears the Reels minimum width.

Model resolution tiers publish no pixel sizes (supported_sizes is null), so conform to an exact size with Timeline or trim when Instagram Feed's 1% ratio tolerance matters.

How do I keep captions inside the Reels safe zone?

Meta's Reels margins leave a text band from 0.14 to 0.65 of the frame height and 0.88 of its width (our arithmetic). Two caption design tokens map onto that: typography.safe_width_ratio, the fraction of frame width a line may occupy (0.3–1), and placement.anchor_ratio, the line center as a fraction of frame height (0.05–0.95).

Send both in design on POST /v1/video-captions: safe_width_ratio at 0.88 or less, and an anchor_ratio below 0.65 by at least half the line's height, so the whole line sits above the bottom margin. Sume doesn't document line height, so the 0.55 below is an example; check a still of the result. Today only slam (0.58) and black-outline (0.64) default to a line center inside the 0.14–0.65 band. punch and tiktok-green take no design, and editorial-emphasis is left-aligned, which the centered width math doesn't cover (other tokens).

Current portrait defaults in Sume's caption renderer, read 2026-09-27; token ranges from the API reference.
StyleDefault anchor_ratioDefault safe_width_ratio
slam0.58≈0.91 (980 of 1080)
black-outline0.640.82
highlight0.700.84
weight-shift, clip-wipe0.720.86, 0.84
pill-karaoke, editorial-emphasis0.740.80, 0.86
korean-ad0.760.90
{
  "video_url": "https://media.sume.com/artifacts/artf_demo/reel.mp4",
  "style": "black-outline",
  "design": {
    "placement": { "anchor_ratio": 0.55 },
    "typography": { "safe_width_ratio": 0.88 }
  }
}

Which of Meta's encoding settings can Sume not set?

Timeline, filter, and trim's default exact mode encode video with libx264, which FFmpeg's docs describe as an H.264 encoder, and audio as AAC at 192 kbps, above Meta's 128 kbps (all encoder settings); a generated clip's own encoding isn't documented. The rest needs a check:

  • Stereo: detach's channels takes only source or mono, so start from a stereo track and read audio_channels from a free inspect probe. Square pixels, fixed frame rate, progressive scan, and edit lists or special boxes aren't described in Sume's docs; check them with your own tool.
  • Captions: today the standalone caption route refuses sources longer than 60 seconds or without an audio track, while Reels ads run to 15 minutes.
  • Music: Meta asks Reels ads not to contain licensed music and suggests original audio or its Sound Collection; check the rights to any track you add.

Sources

Related posts

More in Media tools

All Media tools posts

Written by Sume