How to upscale video to 4K: scale factors and step order

To upscale video to 4K, enlarge it by 2160 ÷ its height: ×2 from 1080p, ×3 from 720p. How to do it with FFmpeg or Sume, and why to upscale last.

5 min readSume
All posts

To upscale a video to 4K (3840×2160), enlarge it by 2160 divided by its current height: ×2 from 1080p and ×3 from 720p. FFmpeg's scale filter resizes a file in one command, and Sume's Video Upscale 1.0 takes the factor as scale_ratio, from 1.1 to 4. Upscale last, after editing, because Sume's Timeline and compose render at most 2160 pixels per edge.

The source sizes come from YouTube's Help page Video resolution & aspect ratios, the FFmpeg syntax from its filters and ffmpeg documentation, and the Sume facts from the Sume API reference and the Core concepts and Timeline 1.0 docs, all read on 2026-09-28. The factors are our arithmetic, and anything described as current behavior is read from Sume's code.

What scale factor do I need?

Divide the target height by the source height: 2160 for 4K, 1080 for 1080p. The width grows by the same factor, so the shape doesn't change. That is also how 720p becomes 1080p (×1.5). A 480p video can't reach 4K in one Sume job: it needs ×4.5, and scale_ratio stops at 4, which gives about 3416×1920.

Source sizes from YouTube's Video resolution & aspect ratios and the scale_ratio range from the Sume API reference, read 2026-09-28. Factors and sizes are our arithmetic; the reference doesn't state the exact output size, hence "about".
FromToFactorWith Sume's scale_ratio
1080p (1920×1080)4K×2About 3840×2160
1440p (2560×1440)4K×1.5About 3840×2160
720p (1280×720)4K×3About 3840×2160
720p (1280×720)1080p×1.5About 1920×1080
480p (854×480)4K×4.5×4 at most: about 3416×1920
1080p vertical (1080×1920)4K vertical×2About 2160×3840

How do I upscale a video to 4K with FFmpeg?

FFmpeg's scale filter resizes the frames. -2 as the width tells it to keep the input's aspect ratio, work the width out from the 2160 height, and round it to a multiple of 2. For a vertical video, swap the two values so the 2160 is the width. Filters work on decoded frames, so the video is re-encoded, while -c:a copy keeps the audio as it is:

ffmpeg -i input.mp4 -vf scale=-2:2160 -c:a copy output-4k.mp4

# vertical 1080x1920 in, 2160x3840 out
ffmpeg -i input.mp4 -vf scale=2160:-2 -c:a copy output-4k.mp4

How do I upscale a video to 4K with the Sume API?

Send the clip to POST /v1/video-upscale-1.0/upscale with the factor from the table as scale_ratio, which takes 1.1 to 4 and defaults to 2. video_url takes a public HTTPS video URL, and completed Sume jobs' media.sume.com artifacts are public, so a finished render can go straight in. duration_seconds is the input length Sume reserves for, from 1 to 30.

Video upscale is listed at $0.009 per video second on API pricing, plus a 5.5% agent fee by default. The other fields, the enhancement tiers, and how to collect the result are covered in AI video upscaler API. The request below takes a 720p clip to 4K (×3):

curl -X POST https://api.sume.com/v1/video-upscale-1.0/upscale \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: upscale-720p-to-4k-001" \
  -d '{
    "video_url": "https://example.com/videos/clip-720p.mp4",
    "scale_ratio": 3,
    "duration_seconds": 12
  }'

Should I upscale before or after editing?

After. Sume's Timeline and compose write output edges of at most 2160 pixels, so a 3840×2160 clip can't come back out of them at full size, and in current code a Timeline render scales every clip to its output frame anyway. Edit at 1080p, render, then upscale the finished file.

Length is limited too. The upscale's duration_seconds stops at 30 seconds, the reference documents no longer input, and Timeline, Sume's only assembly tool, can't join 4K parts back together at full size, so on Sume this route suits clips of 30 seconds or less. Whether to upscale at all or generate at 4K in the first place is covered in AI video 4K quality prompt.

Sources

Related posts

More in Media tools

All Media tools posts

Written by Sume