Convert 4:3 to 16:9 video: pillarbox, crop, or stretch
Convert 4:3 video to 16:9 three ways: pillarbox it, crop 12.5% off the top and bottom, or stretch it. With FFmpeg and the Sume API.

To convert 4:3 video to 16:9, choose what to give up, because a 4:3 picture is narrower than a 16:9 frame. Pillarbox it to keep the whole picture with bars at the sides, crop it to fill the frame by cutting 12.5% off the top and the bottom, or stretch it to fill the frame and make everything 33% wider. FFmpeg does each with one -vf option, and Sume does them on clips hosted on media.sume.com.
The FFmpeg syntax comes from its filters and ffmpeg documentation, and the Sume facts from the Video filter and Timeline 1.0 docs and the Sume API reference, all read on 2026-09-28. Percentages and pixel sizes are our arithmetic, and anything described as current behavior is read from Sume's code.
Which method should I use?
Pillarboxing loses nothing but leaves bars. Cropping fills the frame but loses the top and bottom of every shot. Stretching fills the frame and keeps everything, but every shape comes out wider than it was.
| Method | What the 16:9 frame shows | FFmpeg | Sume |
|---|---|---|---|
| Pillarbox | The whole picture, 1440×1080, with a 240-pixel black bar on each side | pad | Video filter pad, or Timeline fit: "contain" |
| Blurred sides | The whole picture over a blurred copy of itself instead of black bars | Several filters | Timeline fit: "blur" |
| Crop | The full width and the middle 75% of the height | crop | Video filter crop op, or Timeline fit: "cover" |
| Stretch | The whole picture, 33% wider than it should be | scale plus setsar | Video filter scale and setsar, or Timeline fit: "stretch" |
How do I convert 4:3 to 16:9 with FFmpeg?
One -vf option per method. The audio is copied as it is; the video is re-encoded, since filters work on decoded frames:
- As written,
padcenters the picture on black andcropkeeps the middle of the frame; How to make a video square explains their arguments. - The stretch needs
setsar=1. FFmpeg'sscalefilter keeps the input's display aspect ratio by changing the sample aspect ratio, so without it the file would still declare a 4:3 shape. - These commands assume square pixels. For anamorphic footage, FFmpeg's pad docs divide by the sample aspect ratio:
pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2".
# Pillarbox: FFmpeg's own "final w/h ratio of 16:9" example
ffmpeg -i input.mp4 -vf "pad=ih*16/9:ih:(ow-iw)/2:(oh-ih)/2" -c:a copy pillarbox.mp4
# Crop: full width, centered 16:9 window
ffmpeg -i input.mp4 -vf "crop=iw:iw*9/16" -c:a copy crop.mp4
# Stretch: fill 1920x1080 and mark the pixels square
ffmpeg -i input.mp4 -vf "scale=1920:1080,setsar=1" -c:a copy stretch.mp4How do I convert 4:3 to 16:9 with the Sume API?
To crop, send the clip to POST /v1/video-filter with a crop op. Its rectangle is in fractions of the source frame, so a 16:9 window of a 4:3 clip is y: 0.125 and height: 0.75 at full width. The compiler even-rounds it, and the output keeps the clip's frame rate and audio:
- To pillarbox or stretch instead, send the matching
-vfvalue from above as the filter'sfiltergraph. In current codepad,scale, andsetsarare on its allowlist, and the output keeps the clip's audio. - The filter takes sources up to 300 seconds. For a longer clip, or blurred sides, render it in Timeline 1.0 with
outputset to 1920×1080 (the default is 1080×1920) and the matchingfit:"contain","blur","cover", or"stretch". In current code a render's sound comes only from its audio spine, so detach the clip's sound first; make a vertical video horizontal shows both calls. - Both routes read only your workspace's
media.sume.comfiles, such as an earlier Sume job's output (which URLs each endpoint accepts), and in current code refuse a source file over 300 MiB withsource_too_large. - The filter is billed per job, with the rate the docs say to confirm in
GET /v1/catalog; a render is listed at $0.10 per output minute on API pricing, each plus a 5.5% agent fee by default.
curl -X POST https://api.sume.com/v1/video-filter \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: crop-4x3-to-16x9-001" \
-d '{
"video_url": "https://media.sume.com/artifacts/artf_demo/clip-4x3.mp4",
"ops": [{ "op": "crop", "x": 0, "y": 0.125, "width": 1, "height": 0.75 }]
}'How do I convert 16:9 to 4:3?
Run the same trade-offs the other way. A full-height 4:3 crop keeps the middle 75% of the width: crop=ih*4/3:ih in FFmpeg, or a crop op with x: 0.125, y: 0, width: 0.75, and height: 1 on Sume. To keep the whole picture instead, letterbox it with bars above and below: pad=iw:iw*3/4:(ow-iw)/2:(oh-ih)/2 in FFmpeg, or a 1440×1080 Timeline render with fit: "contain". To add bars on purpose, see cinematic bars size.
Sources
Related posts
More in Media tools
- How to convert frames to seconds (and back) at any fps
Seconds = frames ÷ fps, and frames = seconds × fps. How to convert frames and timecode at 24, 23.976, or 29.97 fps, and why Sume takes seconds.
- CTV ad specs: video rules from five streaming TV sellers
CTV sellers ask for 16:9 video, H.264 or ProRes, and two-channel audio, but each sets its own lengths and a bitrate floor from 5 to 15 Mbps.
- Dip to black transition: fade out and in between clips
A dip to black fades one clip out to black, then fades the next in from black. How to build one when a render's fade is a crossfade, and the limits.
- Etsy banner size: big and mini shop banner dimensions
Etsy recommends 1600×400 px for a big shop banner (1200×300 minimum) and 1600×213 for a mini banner. Logo sizes, file types, and a 4:1 AI banner.
Written by Sume