SpotCheck

YouTube upload specs

YouTube re-encodes everything you give it. These are recommendations for how good that re-encode looks, not rules that reject a file — nothing here will bounce an upload.

RequirementWhat they publish
Container.mp4, .mov (prefers .mp4)
Video codecH.264 (preferred), ProRes, HEVC
Encoder profileHigh profile
Audio codecAAC, Opus, PCM (prefers AAC)
Audio bitrateat least 384 kbps
Sample rate48 kHz
ResolutionSDRHDR
720p5 Mbps, 7.5 Mbps at high frame rate6.5 Mbps, 9.5 Mbps at high frame rate
1080p8 Mbps, 12 Mbps at high frame rate10 Mbps, 15 Mbps at high frame rate
1440p16 Mbps, 24 Mbps at high frame rate20 Mbps, 30 Mbps at high frame rate
4K35–45 Mbps, 53–68 Mbps at high frame rate44–56 Mbps, 66–85 Mbps at high frame rate
8K80–160 Mbps, 120–240 Mbps at high frame rate100–200 Mbps, 150–300 Mbps at high frame rate

Not published: loudness or true peak, frame rate, pixel dimensions. Nothing is asserted where the platform is silent.

YouTube accepts nearly anything and re-encodes it; these are their published recommended upload settings, so shortfalls degrade the transcode rather than reject the file. The bitrate table is their SDR/HDR ladder; 48/50/60 fps uses the high-rate column. GOP structure (closed, half the frame rate, 2 B-frames) is on the page but not yet checked. The audio codec line reads "AAC-LC or Opus or Eclipsa Audio" (read 2026-09-04); Opus was added then, having been reported as a shortfall despite YouTube recommending it. PCM is kept deliberately although the page no longer names it: it is lossless, so it cannot make the re-encode worse, and flagging an uncompressed master would invert the purpose of this profile. Eclipsa Audio is omitted because ffmpeg carries only a raw IAMF demuxer and could not identify it inside an MP4, so the entry would never match a real file.

Upload quality

RequirementWhat they publish
True peakno higher than -1 dBTP

Not published: frame rate, audio, pixel dimensions. Nothing is asserted where the platform is silent.

Platform-neutral: every re-encoding destination (social, review links, portals) can only keep detail that arrives, and variable frame rate hurts all of them. The bitrate ladder is YouTube's published upload table, used here as the industry reference; no other platform publishes one. The true-peak ceiling is AES TD1008's, which states it for all content at the codec input of lossy-encoded streams, so it applies to any upload that gets re-encoded. No loudness target is asserted: for audio-with-video the published standards (EBU R 128, ATSC A/85, ANSI/CTA-2075, AES71) converge on -23 to -24 LUFS and the platforms' own -14ish figures describe playback normalization, not a delivery spec.

The −14 LUFS everyone quotes is not a delivery spec

YouTube, and the social platforms generally, normalise loudness on playback. The −14 LUFS figure people repeat describes that normalisation — it is not a number anyone asks you to deliver, and no platform here publishes a delivery target at all.

For audio with video, the published standards converge on −23 to −24 (EBU R 128, ATSC A/85, ANSI/CTA-2075). AES TD1008, which is where the −16 and −18 figures come from, is an audio-only streaming document about music and podcasts, and does not transfer to a video ad.

Where these numbers come from

Every value above was read off the platform's own published page or document and carries the date it was read. Nothing here is inferred, and where a platform publishes no rule this page says so rather than filling the gap.

Specs move. If you are reading this long after those dates, check the source before trusting a number.

Know it passes before you deliver it

SpotCheck is a free Mac app that checks a video against these specs for you.

Download for macOSWhat it checks

Free. Apple silicon, macOS 14 or later. By downloading you agree to the license agreement.