Crop 1920x1080 to 9:16: video-filter width 0.3164, x 0.3418
To get a 9:16 strip from a 1920x1080 clip, send a Sume video-filter crop with x 0.3418, y 0, width 0.3164, height 1: about 608x1080, above TikTok's 540x960.

For a centred 9:16 strip of a 1920x1080 clip, send one crop op to POST /v1/video-filter with x: 0.3418, y: 0, width: 0.3164 and height: 1. The crop is about 607.5 pixels wide and 1,080 tall, and the compiler rounds to even values for yuv420p, so you get a frame of roughly 606-608 x 1080. That clears the TikTok non-Spark minimum of 540x960 for 9:16 (page read 2026-10-08) and is vertical, as the YouTube Shorts page asks. The job costs $0.02, and the check is free.
Where the numbers come from
Crop values are fractions of the source frame, not pixels. A 9:16 window of a 1080-pixel-tall frame is 1080 x 9 / 16 = 607.5 pixels wide. As a fraction of 1,920 that is 607.5 / 1,920 = 0.31640625. To centre it, the left edge is (1 - 0.3164) / 2 = 0.3418.
| Value | Formula | Result |
|---|---|---|
| Strip width in pixels | 1,080 x 9 / 16 | 607.5 (rounded to an even value) |
width | 607.5 / 1,920 | 0.3164 |
x (centred) | (1 - 0.3164) / 2 | 0.3418 |
x + width | 0.3418 + 0.3164 | 0.6582, which is <= 1 |
| Output size | about 606-608 x 1080 | Above 540x960 |
The request
The video_url must be a media.sume.com clip in your workspace. The Idempotency-Key header is required for the encode. Run the same body against /v1/video-filter/check first: it is unbilled and returns valid, diagnostics and an estimate, not a 400.
curl -X POST https://api.sume.com/v1/video-filter/check \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"video_url": "https://media.sume.com/artifacts/artf_demo/wide.mp4",
"ops": [{ "op": "crop", "x": 0.3418, "y": 0, "width": 0.3164, "height": 1 }]
}'Limits to keep in mind
A crop cuts away 68 percent of the picture width (1 - 0.3164 = 0.6836). Check that the subject sits in the centre strip. The source must be 300 seconds or shorter for video filter, so a longer clip needs a trim first. The output keeps the frame rate and audio of the source unless the program changes them.
widthandheightmust be at least 0.05, andx + widthandy + heightmust be at most 1; otherwisevideo_filter_crop_out_of_bounds.- If the subject is off-centre, move
xand keepwidthat 0.3164. The largestxis 1 - 0.3164 = 0.6836. - Up to 8
opsrun in order before afiltergraph; one crop op is enough for this job.
Other strips of the same frame
The same arithmetic gives other windows of a 1920x1080 frame. A 1:1 square is 1,080 pixels wide, which is 1,080 / 1,920 = 0.5625 of the width, with x = 0.21875 to centre it. A 4:5 window is 864 pixels wide (1,080 x 4 / 5), which is 0.45 of the width. Keep to the rule that x + width is at most 1, and let the compiler round to even pixels.
Then check the specification
After the encode, compare the frame size with 540x960 and the file size with the bitrate floor of 516 kbps. A 608x1080 file is above the minimum but below the full-HD frame, so a platform may scale it up. If sharpness matters more than the cost, regenerate the clip in 9:16 and skip the crop.
Sources
Related posts
More in Media tools
- Crop a 10-minute 16:9 ad to 9:16: filter stops at 300 s, so split
Sume video filter takes sources of 300 seconds or less; TikTok non-Spark ads run to 10 minutes. Two trims, two crops and a timeline cost $1.08. The steps.
- Crop a 21:9 or 2.39:1 film clip to 9:16 with video filter
Width fractions for cropping ultrawide 21:9, 2.39:1 and 32:9 clips to 9:16 with one Sume video-filter crop op, plus the 0.05 minimum side and a free check.
- Trim before crop: how the 300 s filter limit sets the order
Video filter accepts sources up to 300 seconds while video trim accepts 1800. For a 20-minute clip, trim first, then crop: two jobs, $0.04.
- Dim a background clip under text: video filter dim amounts
The Sume video-filter dim op multiplies luma by an amount between 0 and 1; black stays black and chroma is untouched. Amount table, request and the $0.02 price.
Written by Sume