How to make a vertical video horizontal (9:16 to 16:9)
To make a vertical video horizontal, put the 9:16 clip in a 16:9 frame and fill the sides with a blurred copy or black bars. How to do it with Sume.

To make a vertical video horizontal, place the 9:16 clip in the middle of a 16:9 frame and fill the empty sides, either with black bars or with a blurred, enlarged copy of the same clip. Cropping the clip to fill the frame keeps only a thin band from the middle of the picture. With Sume, render a clip already hosted on media.sume.com into a 1920×1080 Timeline 1.0 output with fit: "blur" or fit: "contain".
The Sume facts come from the Timeline 1.0, Audio detach, and Video filter docs and the Sume API reference, and the FFmpeg syntax from the FFmpeg filters documentation, all read on 2026-09-27. Behavior read from Sume's code is described as it works today.
Can you make a vertical video horizontal without cropping?
Yes, if the picture can be smaller. By our arithmetic, a 9:16 clip fitted into a 1920×1080 frame is about 608 pixels wide, so it fills under a third of the frame's width, and bars or a blurred fill cover the rest. A slot's fit decides what happens:
| `fit` | What the horizontal frame shows |
|---|---|
cover (the default) | The clip scaled up to the frame's width and cropped: a band about 32% of the picture's height |
contain | The whole clip, about 608×1080, with black bars on both sides |
blur | The whole clip over a blurred copy of the frame instead of black bars |
stretch | The clip scaled to exactly 1920×1080, so everything in it looks wide and flat |
How do I make a vertical video horizontal with the Sume API?
The clip must already be your workspace's media.sume.com artifact or asset, such as an earlier Sume job's output; which URLs each endpoint accepts explains the rule. Then it takes two calls:
- Detach the sound with
POST /v1/audio-detach. Today a render's sound comes from its audio spine, not from the clips invideo[], and detach's default wav is whataudio.urlwants. Its result carriesduration_seconds. A clip with no audio track fails the detach; render it withaudio.mode: "silence"instead. - Render one slot that covers the whole output:
audio.duration_secondsand the slot'sdurationset to the clip's length,fit: "blur"(or"contain"for black bars), andoutputset to 1920×1080. Leavefitout and you getcover, the crop. - Poll
GET /v1/jobs/:id/statusandGET /v1/jobs/:id/result. Thekind: timeline_renderresult carries the newvideo_url.
curl -X POST https://api.sume.com/v1/timeline-1.0/render \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: horizontal-blur-001" \
-d '{
"audio": {
"url": "https://media.sume.com/artifacts/artf_demo/clip-audio.wav",
"duration_seconds": 30
},
"video": [
{
"source_url": "https://media.sume.com/artifacts/artf_demo/vertical.mp4",
"start": 0,
"duration": 30,
"fit": "blur"
}
],
"output": { "width": 1920, "height": 1080 }
}'Can I keep the clip's own sound without detaching it?
Yes, for black bars on a clip of 300 seconds or less: one POST /v1/video-filter job keeps the source's audio, using the scale-and-pad filtergraph from make a video square with 1920:1080 in place of 1080:1080 in both filters.
Why not rotate the video instead?
Rotating changes the frame's shape, but it also turns the scene on its side, so it's only the fix when the picture itself plays sideways. For that case, see rotate a video 90 degrees. The opposite conversion, landscape to 9:16, is Convert a landscape video to vertical.
What are the limits and costs?
- Output edges are even integers from 256 to 2160, so 1920×1080 works and 3840×2160 doesn't. The default output is 1080×1920, so always set
outputfor a horizontal render. audio.duration_secondsruns 1–1800 seconds. Audio detach returns at most 900 seconds per job, so a longer track takes two detach jobs with arangeeach, joined in the render asaudio.parts[].POST /v1/timeline-1.0/planruns the schema and URL checks and the compiler without creating a job or reserving credits.- The API pricing rate card lists a render at $0.10 per output minute, and a render reserves
ceil(audio.duration_seconds / 60)minutes. Audio detach and the video filter are billed per job; the docs say to confirm those rates inGET /v1/catalog. - The video filter reads sources of up to 300 seconds; a longer one fails with
output_duration_exceeded.
Sources
Related posts
More in Media tools
- How to make a video black and white (or keep one color)
Make a video black and white by setting its saturation to zero with FFmpeg's hue or eq filter, or keep one color with colorhold. How to do it on Sume.
- How to merge two videos of different resolutions
Merge two videos of different resolutions by scaling both into one frame: crop, pad, blur, or stretch each clip, then join them with their sound.
- 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.
- How to convert MP3 to MP4 with an image
Turn an MP3 into an MP4 with one picture: a Timeline 1.0 render holds the image for the whole track, up to 30 minutes, at the frame size you set.
Written by Sume