Meta Reels ads convert non-9:16 media: send your own 9:16 clip

Meta says Reels placement can apply automatic templates that convert non-9:16 media. Render the 9:16 yourself with Sume timeline fit modes and keep the framing.

4 min readSume
All posts

If you hand Meta a 16:9 or 1:1 video for a Reels placement, Meta may reframe it for you. Its Reels ads update lists "automatic templates that convert non-9:16 media to 9:16 media" among the creative and format optimizations available on Reels, and says some of them may be applied automatically when you select the Reels placement (read 2026-10-04). The way to keep your own framing is to hand over a finished 9:16 file. On Sume that is one Timeline 1.0 render with a fit mode you pick.

A caveat on the source: the Meta page we read is dated October 10, 2023, so treat it as a description of the feature family, not of today's exact defaults. Check your ad's preview in Ads Manager before you spend.

What Meta's page says, and what it does not

The same page names other Reels optimizations: 3D motion and depth, aspect ratio variance, and image and video enhancements such as filters that sharpen color and improve resolution. It does not publish how the template decides where to crop or where to put bars, and it does not give a pixel size for the converted file.

That gap is the reason to render your own. If a speaker sits left of center in a 16:9 master, an automatic crop is a guess. A render you made is a decision you can look at.

Meta Reels ads optimizations named on Meta's Reels Ads updates page, and who controls the result (read 2026-10-04)
Meta listsWho decides the framingWhat you do about it
Automatic templates, non-9:16 to 9:16Meta, when appliedUpload a 9:16 file so there is nothing to convert
Aspect ratio varianceMetaPreview each placement before launch
Filters for color and resolutionMeta, when appliedJudge the preview against your own render
Music for single image Reels adsYou, at campaign creationChoose a track or ship a finished soundtrack

Pick the 9:16 on purpose with Timeline fit modes

Timeline 1.0 renders 1080x1920 by default and gives every video slot a fit of cover, contain, stretch or blur (Timeline 1.0 docs). cover fills the frame and crops the overflow. contain keeps the whole picture and leaves bands. blur keeps the whole picture and fills the bands with a blurred copy of the clip. stretch fills the frame by distorting the picture, so it is almost never what you want for people.

If cover crops the wrong part of a 16:9 shot, crop first. The video filter takes a crop op as fractions of the source frame (x, y, width, height from 0 to 1, with x+width and y+height at most 1), so you can move the window to the speaker without knowing the pixel size. The filter is $0.02 per encode and POST /v1/video-filter/check validates the program for free.

  • Product on a neutral background: cover usually works.
  • Wide scene where every edge matters: blur keeps it all in frame.
  • Off-center subject: crop with the video filter, then cover.

Preview the render before it bills

POST /v1/timeline-1.0/plan is unbilled. It validates the document, checks that every URL is a Sume-hosted file, and returns the duration, segment count and estimated cost without creating a job. Media must already be on media.sume.com. The script below plans a one-clip 9:16 render with blur and prints the estimate.

import json, os, sys, urllib.request

video_url = sys.argv[1]  # a media.sume.com clip in your workspace
body = {
    "audio": {"mode": "silence", "duration_seconds": 8},
    "video": [{"source_url": video_url, "start": 0, "duration": 8, "fit": "blur"}],
    "output": {"width": 1080, "height": 1920},
}
req = urllib.request.Request(
    "https://api.sume.com/v1/timeline-1.0/plan",
    data=json.dumps(body).encode(),
    headers={
        "Authorization": "Bearer " + os.environ["SUME_API_KEY"],
        "Content-Type": "application/json",
    },
    method="POST",
)
with urllib.request.urlopen(req) as res:
    plan = json.load(res)
print(plan["object"], plan["duration_seconds"], plan["estimated_cost_usd_micros"])

Render it and upload the file

Send the same body to POST /v1/timeline-1.0/render with an Idempotency-Key. Timeline renders cost $0.10 per output minute, rounded up, so an 8 second clip is one billable minute. The result is an MP4 at media.sume.com; download it and upload it to Meta as the Reels creative.

Sume does not talk to Meta's ad tools, and it cannot switch off anything Meta applies on its side. If an optimization still shows in the preview, use the controls in Ads Manager. For the Advantage+ side of that, see turning off Advantage+ creative enhancements.

Sources

Related posts

More in Media tools

All Media tools posts

Written by Sume