This article is a draft and may contain incomplete or incorrect information.

Profiles and Levels

H.264 profiles

Define the features / capabilities that the encoder can use.

HandBrake exposes 3 profiles for H.264 Encodes. You can think of the profile as the level of complexity required in encode / decode. The higher the complexity, the more CPU power is needed to encode/decode. Setting a profile, constrains the encode to using settings that are allowed for that profile level.

Typically, devices will advertise that they are compatible for a particular profile and level, so you can simply set the option that matches your device for the best chance of compatibility.

Note that setting a profile does not mean your encoded file will end up being that profile. It simply prevents options being used that would breach that profile constraint.

H.264 Levels

The levels are another form of constraints that define things like maximum bitrates, framerates and resolution etc. The wikipedia article lists the relevant information for each level. https://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Levels

Most devices (and sometimes, software decoders) support a “maximum” level. When the video’s specifications exceed that level’s constraints, the decoder won’t be able to decode the video properly (it may simply refuse to play the file).

HandBrake’s H.264 encoder, x264, sets the appropriate level automatically based on all the other settings. To make sure your video doesn’t exceed a specific level, you simply have to make sure the other parameters fit within the constraints imposed by the level.

It is recommended that you leave this setting on “Auto” unless you require to set it for device compatibility.