YouTube

Render a 16:9 film for a YouTube upload, with the YouTube limits and the vawe commands.

At the end of this page you have a 1920 × 1080 mp4 that follows the YouTube encoding page for codec, container and audio. For a vertical film under 3 minutes, read YouTube Shorts.

The limits

The full table with sources is in Video specs by platform. The rows that matter here, read from the YouTube Help pages on 2026-10-31 and 2026-11-01:

  • 16:9 is the standard aspect on a computer. A square or vertical upload of 3 minutes or less is a Short.
  • A file is 256 GB or 12 hours, whichever is less. An unverified account uploads 15 minutes at most by default.
  • YouTube asks for H.264, an MP4 container with the moov atom at the front, AAC-LC audio at 48 kHz, and BT.709 colour for SDR.
  • At 1080p, YouTube lists 8 Mbps for 24 to 30 fps and 12 Mbps for 48 to 60 fps.
  • YouTube does not state a loudness target on these pages.

Make the film

Start a 16:9 page

bin/vawe new my-video --request "a 45 second product intro" --aspect 16:9 --length 45

The verb writes films/my-video/page.html with <meta name="aspect" content="16:9"> and <meta name="duration" content="45">. Change the duration in the page if the film grows.

Check the draft

bin/vawe dev films/my-video/page.html

See Draft.

Measure the sound

bin/vawe sound films/my-video/page.html --waveform

The verb prints the LUFS and the true peak of the mix. Without a <meta name="loudness">, the level is what the cues add up to. See Loudness and the mix.

Ship the final

bin/vawe ship films/my-video/page.html --aspect 16:9
bin/vawe ship --status --wait

ship needs a fresh critique and the owner approval first. See Ship. The master is out/my-video.mp4.

What the final contains

The final is 60 fps, H.264 High profile, yuv420p, with +faststart (the moov atom at the front). The audio is AAC at 48 kHz. These match the YouTube page for codec, container, sample rate and fast start. Upload out/my-video.mp4. Do not upload the .web.mp4 copy beside it.

YouTube asks to upload at the recording frame rate. A vawe final is always 60 fps, because ship has no fps flag. The 60 fps row is on the YouTube list (48 to 60 fps).

Limits

  • Colour: the encode arguments in harness/media/render-page.mjs set no colour tag, and no code in harness/media/ names BT.709. The YouTube page recommends BT.709 for SDR. Check the colour of a final with your own tools before a colour-critical upload.
  • B-frames and GOP: the YouTube page lists 2 B-frames and a closed GOP. vawe passes only -profile:v high -preset fast -crf 16 -x264-params aq-mode=3, so these settings are the x264 defaults.
  • Bitrate: -crf 16 is a quality target, so ship sets no bitrate.

From the blogHTML video aspect ratio: 16:9, 9:16 and 1:1

On this page