Why a 2-minute YouTube upload is or is not a Short in 2026
YouTube treats square or vertical uploads up to three minutes as Shorts if posted on or after October 15, 2024. What to check, and how to render one in Sume.

A YouTube upload is treated as a Short when it is square or vertical, runs up to three minutes, and was uploaded on or after October 15, 2024. A 16:9 video of any length is never a Short, and a vertical video over three minutes is a regular video. This is from YouTube's Shorts help page, read on 2026-10-06.
What decides whether an upload is a Short?
Two things you control at export, and one date you do not. The aspect ratio must be square or vertical, and the length must be three minutes or less. YouTube's page says standard channels' uploads on or after October 15, 2024 that meet those dimensions are classified as Shorts. For Official Artist Channels the page gives a later effective date, December 8, 2025.
| Input | Rule on the page | What you set at export |
|---|---|---|
| Aspect ratio | Square or vertical | 1080x1920 or 1080x1080 |
| Length | Up to three minutes | 180 seconds or less |
| Upload date, standard channels | On or after October 15, 2024 | Not in your control |
| Upload date, Official Artist Channels | On or after December 8, 2025 | Not in your control |
Why does my 2-minute vertical video not show as a Short?
Check the file before blaming the platform. A clip rendered at 1920x1080 and then pillarboxed inside a vertical frame still reads as landscape if the container is landscape. Probe the delivered MP4 and confirm that the height is greater than the width and that the duration is under 180 seconds. Sume's video inspect route returns a probe object for any imported clip, and frames: false skips the stills so the call stays cheap.
How do I render a Short that qualifies?
Sume Timeline 1.0 defaults to a 1080x1920 MP4 and accepts audio.duration_seconds from 1 to 1800, so you enforce the three-minute ceiling yourself by declaring 180 or less. The plan route is unbilled and returns the duration it compiled, which is a free check before you pay for the render.
import os, requests
body = {
"audio": {"mode": "silence", "duration_seconds": 120},
"video": [{"source_url": "https://media.sume.com/artifacts/artf_demo/clip.mp4",
"start": 0, "duration": 120}],
}
r = requests.post(
"https://api.sume.com/v1/timeline-1.0/plan",
headers={"Authorization": "Bearer " + os.environ["SUME_API_KEY"]},
json=body, timeout=30,
)
print(r.status_code, r.json().get("duration_seconds"))What stays outside Sume's control?
The classification date and the in-app experience belong to YouTube. Sume ships the file; whether a given upload is surfaced as a Short is decided on YouTube's side, so check the Shorts tab after upload rather than assuming.
Sources
Related posts
More in Media tools
- YouTube Shorts series: pin one caption look for every episode
Shorts series run from 2026-09-23. Omit style and Sume picks one from the text. Pin style, font and design in one config so ten episodes look the same.
- How to assemble a long-form video with the Timeline 1.0 API
Timeline 1.0 renders one audio spine plus 1 to 200 ordered video slots into one MP4. Every URL must be Sume-hosted; the plan preflight is unbilled.
- How to burn captions onto a video with the Sume API
Send a public HTTPS video URL to POST /v1/video-captions and get a job-backed captioned video, timed by speech-to-text or by text you supply.
- How to extract frames from a video with the Sume API
POST /v1/video-frames returns stills at the times you name from one Sume-hosted clip, as durable images at source size. The call is unbilled.
Written by Sume