Der Header besteht aus den folgenden 32 Bit:
typedef struct { unsigned syncword : 12, /* = 0xFFF */ ID : 1, layer : 2, protection_bit : 1, bitrate_index : 4, sampling_frequency : 2, padding_bit : 1, private_bit : 1, mode : 2, mode_extension : 2, copyright : 1, original_home : 1, emphasis : 2; } header;ID ist 1 für MPEG-Codierung. layer gibt den Layer an (=3: Layer I, =2: Layer II, =1: Layer III). Falls protection_bit = 0, folgt nach dem header ein error_check, ansonsten existiert keine Fehlerprüfung. Der Layer kann nicht beliebig zwischen frames gewechselt werden. Die ersten 16 Bit sind also bei folgenden frames identisch, so daß sie komplett für die Synchronisation verwendet werden können.
bit_rate_index gibt nach einer Tabelle abhängig vom verwendeten Layer die benötigte Bitrate für diesen Block an. Die Werte liegen im Bereich zwischen 32 kbit/s und 448 kbit/s. Bei Layer III kann die Bitrate in jedem frame beliebig wechseln. In den anderen Layern muß ein Decoder eine beliebig wechselnde Bitrate nicht unterstützen. sampling_frequency legt die Abtastrate fest. Diese kann 44.1 kHz (=0), 48 kHz (=1) oder 32 kHz (=3) betragen.
padding_bit gibt bei Abtastfrequenz 44.1 kHz an, ob dieser frame zusätzliche Daten enthält, um das Verhältnis der Bitrate zur Abtastfrequenz gleich zu halten.
Das private_bit kann frei verwendet werden. mode legt die Anzahl der Kanäle und ihre Codierung fest, mode_extension enthält weitere Informationen über die Codierung bei Stereo Daten.
copyright gibt an, ob es sich bei den Daten um urheberrechtlich geschützte Daten handelt, original_home gibt an, ob es sich um Originaldaten oder um eine Kopie handelt.