Resize Video for Social Media
Create vertical, square and landscape variants from one source video. Run the preset directly on this page or call the same agent-ready endpoint from your product.
Prefer the shell? Resize a video with FFmpeg, the verified FFmpeg command for this edit.
See what the tool changes.
A real example: the after side is the unedited output of a KinoPipe job. Run the live form above to generate the same result from your own media.
Demo footage: public-domain timelapses (Bureau of Land Management, Oregon · NASA SVS). Processed by the same pipeline the API and MCP tools call.
Useful defaults, typed options.
The tool slug stays stable while your agent supplies named media inputs and a narrow set of documented options.
- 9:16, 1:1 and 16:9 presets
- Consistent framing
- Batch-friendly API
- 01Choose an aspect ratio
- 02Scale without distortion
- 03Crop or pad safely
- 04Encode a delivery-ready MP4
POST /api/v1/tools/resize-videoThe command this runs
ffmpeg -i input.mp4 -vf "scale=1080:1920:force_original_aspect_ratio=increase,crop=1080:1920,setsar=1" -c:v libx264 -preset medium -crf 23 -c:a aac -b:a 160k -movflags +faststart output.mp4- force_original_aspect_ratio=increase
- Scales until both sides reach the target instead of stretching to it. One side overshoots on purpose, which is what the crop then removes. Without this the picture distorts and faces go narrow.
- crop=1080:1920
- Takes the centre of the overshoot and throws the rest away. This is fit: "cover", and it is the default because black bars look worse than a tight frame on a phone.
- setsar=1
- Declares square pixels. Skip it and a source with a non-square pixel aspect ratio plays stretched even though the dimensions read correctly in the file, which is one of the more expensive afternoons in video.
- scale=1080:-2
- The other form worth knowing. -2 means keep the aspect ratio and round to an even number, because H.264 refuses odd dimensions. -1 rounds to the nearest integer and hands you an encoder error on half your inputs.
The two fits, and what each one costs you
cover fills the frame and loses the edges. Going from 16:9 to 9:16 that way throws out about 70% of the width, so anything important near the left or right of the shot leaves with it.
contain keeps every pixel and pays for it in bars: scale=W:H:force_original_aspect_ratio=decrease then pad to the target with the picture centred. Nothing is lost and nothing is cropped, but a 16:9 clip in a 9:16 frame is mostly black.
If neither trade appeals, the third option is not on this page. convert_video_to_vertical fills the bars with a blurred, cropped copy of the same frame (boxblur=luma_radius=32:luma_power=2 behind the scaled original), which keeps the whole picture without the black.
What this will not do
It will not follow the subject. The crop is a fixed centre cut, so a presenter who walks to the left of frame walks out of the video. Tracking the speaker is smart_crop_video, which is a different job with a different price.
It will not add detail. Scaling 720p up to 1080 gives you a 1080 file that looks like 720p and costs more to store.
It will not fix a rotated phone clip on its own. That is a rotation flag in the container rather than a size problem, and auto_orient_video is the one that reads it.
Doing it yourself
The command at the top is the whole operation, and one line of shell beats an API call whenever FFmpeg already runs where your code runs. The reason to hand it over is that an agent choosing 1080:1921 gets a typed rejection here rather than an encoder error after it has already spent two minutes decoding.
Know the boundaries before you run.
About resize video
Related media tools
Crop Video to Any Social Aspect Ratio
Remove unwanted edges without stretching or upscaling the source video.
ExploreCreate a Social Video Clip
Cut and reframe a source video for Shorts, Reels or vertical social feeds.
ExploreCompress Video for Web
Reduce video file size while preserving a crisp, web-ready image.
Explore