




Some general info about the formats used:

YouTube uses 4 container formats and 4 different codecs. It depends on the popularity of the video what codecs are used for your video (see below why). Generally, every of your uploaded videos will be encoded in h.264 and will be muxed into an .flv and .mp4 container. That's the standard and this will happen for every video. Though .flv will only be used for resolutions below 720p. Meaning only 360p and 480p will exist in an .flv container. Though every video below 720p will also have a mp4 version available. For 240p YouTube is also using 3gp which is a rather old codec (based on MPEG-4 Part 2 (not to be confused with MPEG4 Part 10 aka h.264) meant for mobile devices (long before the smartphone era), it comes in the container .3gpp.

The other codec used is VP8 which is coming in the WebM container format. WebM is a format developed by Google and was meant as a standard video codec for HTML5, support for it is by now pretty good in most modern browsers. WebM was introduced with the HTML5 version of YouTube. YouTube only encodes some videos in WebM after they got uploaded and mostly only popular videos (going by the videos I saw encoded in WebM) so it's not certain your video will be present in WebM. Though this is changing with WebM gaining some more support.

By now YouTube also supports VP9 in WebM but so far only chrome supports this codec (as of 06/2015). With VP9, they also introduced support for the Opus audio codec (besides AAC which is used in all other containers).


What codec/container should you use for uploading?

That depends, if you are limited/concerned by your upload speed then use h.264 Level 3.1/4.1 with Main Profile for SD or High Profile for HD. YouTube will accept this just fine and it will look nice after it got encoded by the YouTube servers. I would usually recommend a bitrate of ~4-5 Mbit/s for 720p material and ~8-9 Mbit/s for 1080p. For 4k go for ~15Mbit/s. This is usually a good balance between size and quality. If you want better quality go with a higher bitrate, and if you want a smaller video go with a lower bitrate.

But be aware that YouTube will ALWAYS encode your video once it's uploaded, doesn't matter what codec and settings you use. So if you want the theoretically best quality for your uploads, choose a lossless codec for uploading or at least visually lossless. See YouTube as the final output into a delivery/consumer format and the upload to YouTube is the last step in production and during production you want to stay lossless. But please note this is all just a theoretical thing, practically I'd say it really doesn't matter as we are talking about YouTube and not about TV broadcast or Cinema.


But if you want to upload your video truly lossless and don't care about the upload time, I recommend using a standard QuickTime codec as they should be nearly all supported by YouTube (note that not all of them are lossless, h264 is also a standard QuickTime codec). Though YouTube doesn't state which QuickTime codecs are supported, unfortunately. Animation or JPEG2000 should work I guess. Both codecs can be 100% lossless.

When it comes to frame rates, if you can choose then use 25FPS (by now YouTube also supports 50 and 60FPS video, so probably also 30FPS) during recording/animating, YouTube likes that the most (the frame rate used for every video) but if your footage comes already in another frame rate then stick with that and don't interpolate up or down. YouTube will handle the conversion for you and generally does that better then your encoder. They have to deal with all kind of framerates every day and solved this (actually very complicated) issue really well.


For the audio use PCM if you want to stay lossless with the audio as well but again this is really just a theoretical quality improvement. AAC will usually do the same job quality wise (subjective) and will be smaller. I recommend a bitrate of at least 192kbps for AAC. The size impact is usually not as big as the video codec so you can also just go with 320kbps. YouTube will convert audio to ~24kbps(Mobile aka 3gp) ~64kbps(240p), ~128kbps(360p/480p) and ~192kbps(720p+) using the AAC and Opus (WebM only) codec.

  • 3
  • Sure thats why I made it (hopefully) quite clear that its theoretical and in no way practical. H.264 is to be recommended for almost all cases. The only actual practical usecase for MJPEG I can think of is when color banding occours with the first h.264 encode which will get worse with the second encode from YouTube. – PTS Feb 17 '13 at 15:20
  • 1
    Youtube support h.264 high profile, so you should use it always. Main profile for SD content is silly. Leaving out 8x8dct is always a bad idea. In x264, enabling 8x8dct is the most efficient tradeoff of CPU time for better quality per file-size (aka rate:distortion or RD). – Peter Cordes Jan 15 '15 at 11:30
  • 2
    H.264 will look a lot better at the same bitrate than MJPEG. If you want better quality, just turn up the bitrate (or the quality setting in constant-quality instead of target bitrate mode). You can go all the way to lossless h.264 if you don't mind uploading a huge file. It will probably be smaller than lossless j2k. Both are perfect quality, though, since that's what lossless means. – Peter Cordes Jan 15 '15 at 11:33
  • 1
    For audio, IDK if youtube supports FLAC or not. If so, that would be your go-to choice for lossless. Otherwise yeah, high bitrate AAC made with a good encoder. (-c:a libfdk-aac, not the default faac or builtin aac encoders in ffmpeg.) – Peter Cordes Jan 15 '15 at 11:35









They are Encoded with Lavf57.25.100 .

This is one of a few conflicting Help Pages that contains better Info than some of the others: https://support.google.com/youtube/answer/6039860?hl=en


Your question is "How does YouTube encode my uploads and what codec should I use to upload?".

Digging deeper into your question I see: "Should I adjust my own encoding to "play nice" with Youtube's codec, or does it matter, quality-wise? I know I can throw pretty much anything on Youtube and it will take it, so I'm mostly concerned with video quality.".

The answer is YouTube uses Lavf57.25.100 to encode new Videos while Videos over a few years old were encoded with a proprietary Encoder (that doesn't have "Lavf57.25.100" embedded in it's ID but instead has this sentence: "IsoMedia File Produced by Google, 5-11-2011"). The old Videos were not reencoded when the Algorithm was changed.

It is acceptable to use many different Codecs, YouTube recommendeds H.264 - see here: https://support.google.com/youtube/answer/1722171?hl=en .

For some reason you choose not to ask about the Container (which isn't the same thing as a Codec). You also assume that 1080P is going to be available and don't ask about the most important thing - Bitrate (followed by Resolution).

If you upload a 1080P Resolution Video at 60FPS then the maximum Resolution available is 720P (at 60 FPS, on a Mobile Device, capable of 1080P), uploading a 1080P Video at 29.97 FPS permits 1080P viewing on a Mobile Device.

What IS important is Bitrate and Resolution if "quality" is your goal. You can't upscale or use lossless to cheat since YouTube runs a 'Compression Test' to determine how much they can crush your Video with minimal degradation - upload mush and it will be highly compressed mush, upload high Resolution and high Bitrate, then YouTube will back off on the crushing, and deliver a much better viewing experience.


Notice that different Resolutions and 'Quality Expectations'. For 4K Video with low expectations you can upload Videos that have a Bitrate of 35-45 Mbps but if you're a "Producer" and quality is your goal you need both a higher Framerate and to use at least 66-85 Mbps for the Camera Bitrate (before you compress it very gently).

If you upscale a low Resolution Video and use an uncompressed Codec hoping to get the finest quality possible you'll be caught (and reduced to mush).

Record using a Production Quality Camera, high Framerate and Bitrate Video, very gently compressed (Ffmpeg Q=<10) to get the best results - the "Codec" (your words) is not the sole determining factor (though I'd advise against an old one).

Ffmpeg supports .MP4 Containers and the H.264 Codec, so use those.

People often complain that YouTube ruins their Videos, the problem is that they didn't upload high enough quality in the first place to 'trip the switch' and cause YouTube's Compressor to tread gently upon your Upload. Pixel-peeking perfect Videos are possible. The GIGO Rule applies.



Would you like to answer one of these unanswered questions instead?
