YouTube Shorts video specs: 3 minutes, square or vertical

YouTube treats square or vertical uploads up to 3 minutes as Shorts and recommends MP4, H.264, AAC-LC, and 48 kHz. How Sume output compares.

6 min readSume
All posts

A YouTube Short is a video up to 3 minutes long with a square or vertical aspect ratio. For the file itself, YouTube's recommended upload settings are MP4 with the moov atom at the front, H.264 High Profile with a closed GOP of half the frame rate, 4:2:0 chroma, and AAC-LC, Opus, or Eclipsa Audio at 48 kHz. Sume makes the shape and length with 9:16 or 1:1 generation and Timeline 1.0. Its Timeline, filter, and exact-mode trim encodes share the MP4 fast-start layout, H.264, 4:2:0, and AAC-LC, but not the GOP length or YouTube's 384 kbps stereo audio bitrate.

YouTube's rules are quoted from three YouTube Help pages read on 2026-09-27: Upload YouTube Shorts, Understand three-minute YouTube Shorts, and recommended upload encoding settings. The encoding page contradicts itself: it opens with “These features are only available to partners who use YouTube Studio Content Manager”, then calls the list “recommended upload encoding settings for your videos on YouTube”. Treat it as recommendations. Sume facts come from Timeline 1.0, Video trim, and Audio detach.

What makes a video a YouTube Short?

Length and shape. The Shorts pages name no resolution or frame rate:

  • A Shorts upload is up to 3 minutes, with a square or vertical aspect ratio.
  • On standard channels, square or vertical videos up to three minutes uploaded on or after October 15, 2024 are categorized as Shorts.
  • To keep a video out of Shorts, YouTube says to use a wider aspect ratio such as 16:9.

How do I make a Short-shaped video with Sume?

Generate 9:16 or 1:1 on a model that lists it (ratios by model); avatar video is 9:16 by default and also takes 1:1. One generated clip runs up to 30 seconds, and avatar video takes scripts Sume estimates at 4–60 seconds, so longer Shorts are Timeline assemblies (cutting long videos is a separate job).

Timeline takes 1–1,800 seconds, so keep audio.duration_seconds at 180 or less. It renders 1080×1920 by default; output: { width: 1080, height: 1080 } makes a square. Today its sound comes from the audio spine, such as a voiceover or a detached track:

curl -X POST https://api.sume.com/v1/timeline-1.0/render \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: short-001" \
  -d '{
    "audio": {
      "url": "https://media.sume.com/artifacts/artf_demo/voice.wav",
      "duration_seconds": 45
    },
    "video": [
      { "source_url": "https://media.sume.com/artifacts/artf_demo/a.mp4", "start": 0, "duration": 15 },
      { "source_url": "https://media.sume.com/artifacts/artf_demo/b.mp4", "start": 15, "duration": 15 },
      { "source_url": "https://media.sume.com/artifacts/artf_demo/c.mp4", "start": 30, "duration": 15 }
    ]
  }'

How does Sume's encode compare with YouTube's settings?

Sume's column describes a Timeline render, from the docs and the compiler code as it runs today; filter and trim's default exact mode use the same codec, pixel format, and audio settings.

YouTube column from recommended upload encoding settings, read 2026-09-27. Sume column from Video trim, Timeline 1.0, Sume's media compiler, and FFmpeg's docs.
SettingYouTube recommendsSume's encode today
ContainerMP4, moov atom at the front (Fast Start), no edit listsMP4 with +faststart, which moves the moov atom to the front; edit lists not described
Video codecH.264, progressive, High Profile, 2 consecutive B-frames, CABACH.264 (libx264); scan, profile, B-frames, and CABAC not stated
GOPClosed, half the frame rateCapped at one second (maximum GOP size set to the frame rate); closure not stated
Chroma4:2:0yuv420p (4:2:0)
Frame rateSame as recordedTimeline follows the sources when output.fps is omitted; trim inherits
Video bitrateVariable, no limit required; 1080p SDR 8 Mbps at 24, 25, or 30 fpsConstant-quality CRF, no bitrate target
AudioAAC-LC, Opus, or Eclipsa Audio; stereo; 48 kHz; 384 kbps stereoAAC, FFmpeg's default LC profile, 192 kbps; no sample-rate or channel field

Which differences can I fix?

Run a free frames: false inspect to read fps, audio_sample_rate, and audio_channels. Its probe doesn't report profile or GOP, so check those with your own tool.

  • Sample rate: detach the audio with sample_rate: 48000, use that file as the Timeline audio.url, and confirm audio_sample_rate on the result.
  • Frame rate: YouTube asks for the recorded rate. Leave output.fps out and the render runs at the rate the sources already run at, with the longest sources deciding; an explicit rate that differs from a source's repeats or drops frames.
  • Stereo: detach's channels takes only source or mono, so start from a stereo track.
  • GOP length and audio bitrate can't be changed: callers never send codec settings.

How do I caption a Short?

Burn captions with POST /v1/video-captions and move the line with design.placement.anchor_ratio; the three YouTube pages cited here give no caption safe zone. Today the caption route refuses sources longer than 60 seconds, so caption a 3-minute Short in parts of 60 seconds or less before assembly (long-video captions). For the thumbnail, see a frame as the thumbnail.

Sources

Related posts

More in Media tools

All Media tools posts

Written by Sume