AAC vs Opus vs MP3
Video gets the attention, but the audio codec decides whether a file plays silently, fails in HLS or wastes bitrate. What each of the three main codecs does well and which container each belongs in.
Use AAC for anything in MP4 or headed for HLS. It is the default everywhere, and Apple's guidance expects it. Use Opus for WebM, WebRTC and low-bitrate delivery, where it is the most efficient codec. Keep MP3 for old players, not for new encodes.
Nobody notices a good audio codec. A viewer will forgive a slightly soft picture. They will not forgive a dropout, a lip-sync drift or a silent player. All three are often caused by the audio stream, not the video. The sound codec also decides which containers the file can live in and whether an HLS packager will accept it. It sets how many kilobits per second are left for the picture too.
This guide covers the three audio codecs behind almost all sound in delivered video: AAC, Opus and MP3. It explains how each works and what bitrate each needs for speech and for music. It shows where each one plays. It also helps you choose when you are encoding for upload, for the web or for an archive. The video formats hub covers the video codecs and containers that sit beside them.
How lossy audio codecs work
All three are perceptual coders. They turn short windows of audio into the frequency domain. Then they use a model of human hearing to decide which parts can be dropped or coded roughly, because louder nearby sounds would mask them. The codecs differ in the transform, the window sizes, the hearing model and the entropy coding. Those differences decide how good each one sounds at a given bitrate and how much delay it adds.
Bitrate for audio is small next to video. A 160 kbps AAC track is a rounding error beside a 6 Mbps 1080p stream, so it is tempting to ignore it. The reason not to is compatibility. A video stream with an unsupported audio codec plays silently or not at all, as the container vs codec explainer shows.
The three codecs compared
Bitrate guidance reflects common practice and the codec developers' own recommendations rather than formal measurements.
| Property | AAC | Opus | MP3 |
|---|---|---|---|
| Standard | ISO/IEC 13818-7 and 14496-3 | IETF RFC 6716 (2012) | ISO/IEC 11172-3 (1993) |
| Design | MDCT transform coder; LC, HE-AAC v1/v2 profiles | Hybrid of SILK (speech) and CELT (music) layers | Hybrid filter bank plus MDCT |
| Bitrate range | Roughly 8 kbps to 512 kbps | 6 kbps to 510 kbps | 8 kbps to 320 kbps |
| Good stereo music | 128-256 kbps | 96-160 kbps | 192-320 kbps |
| Good speech | 64-96 kbps (or HE-AAC lower) | 24-48 kbps | 96-128 kbps |
| Algorithmic delay | Tens of milliseconds (LC) | As low as 5 ms; typically 26.5 ms | Around 100 ms or more |
| Containers | MP4, MOV, MKV, MPEG-TS, ADTS | WebM, MKV, Ogg, MP4 (newer tools) | Almost all |
| HLS | Yes, the standard choice | Only in fMP4 with player support | Yes, permitted in TS |
| Browsers | All, in MP4 | All, in WebM; MP4 support varies | All |
| Licensing | Patent-licensed for encoders | Royalty-free | Patents expired |
AAC: the default for MP4 and HLS
Advanced Audio Coding was standardised in 1997 as the successor to MP3 and became the audio side of the MPEG-4 family. Its Low Complexity profile (AAC-LC) is what nearly every MP4 uses. HE-AAC adds spectral band replication for better results below about 64 kbps. HE-AAC v2 adds parametric stereo for very low rates. Every browser, phone and television decodes AAC-LC. Apple's HLS authoring guidance names AAC as the expected audio format, which is why streaming pipelines default to it.
For a stereo track in a video, 128 kbps AAC-LC is transparent for most speech. 160 to 192 kbps is a safe target for music. FFmpeg's built-in encoder is adequate. The Fraunhofer libfdk_aac encoder, where available, is slightly better at low bitrates. Whatever you choose, VideoBB's transcoder outputs AAC in its HLS renditions. That is what plays everywhere the HLS segments are sent.
Opus: the efficient modern option
Opus was published by the IETF in 2012. It merged Skype's SILK speech codec with Xiph's CELT music codec into one format. It switches between them, or blends them, depending on the content and bitrate. It is unusually good at low bitrates: clear speech at 24 kbps and convincing stereo music around 96 kbps. It also has very low latency, adjustable down to 5 milliseconds. That is why WebRTC requires it and why it is the codec inside almost every browser video call.
Opus is native to WebM and Ogg, and Matroska has carried it since its introduction. Its use in MP4 was standardised later and works in modern FFmpeg and in Chrome and Firefox. But older players and some Apple platforms are inconsistent about Opus in MP4 and in HLS. The safe rule: Opus with VP9 or AV1 in WebM, AAC with H.264 or H.265 in MP4. Opus always runs internally at 48 kHz, resampling other rates on input, which is invisible in practice.
MP3: everywhere, but past its best
MPEG-1 Audio Layer III dates from 1993, and its last relevant patents expired in 2017. It is decoded by every device ever made that plays audio, which keeps it useful for compatibility. At its 320 kbps ceiling it sounds fine. Below about 128 kbps its artefacts become obvious, as a swirling quality on high frequencies. AAC and Opus avoid that at half the rate. It also has a long algorithmic delay, no support for more than two channels in the original standard, and a hard 320 kbps limit.
MP3 is permitted in MP4 and in MPEG-TS, and old AVI files often hold it, so a remux can carry it through unchanged. For a new encode there is no reason to choose it when AAC is available in the same container.
MP3 still earns its place in one job: a stand-alone audio file for an unknown player. If you need just the soundtrack of a video, for a podcast feed or a transcript, the free extract audio tool saves it as MP3, M4A, WAV or Opus.
AAC or Opus for new encodes?
The choice usually follows the container and the destination.
Choose AAC when
- The video is H.264 or H.265 in MP4 or MOV.
- The file will be packaged into HLS or must play on Apple devices without a third-party player.
- The file is heading to a hosting platform; it will be decoded and re-encoded to AAC regardless.
- Compatibility with televisions, set-top boxes and car systems matters.
Choose Opus when
- The video is VP9 or AV1 in WebM.
- Bitrate is tight, for example speech at 32 kbps or music under 100 kbps.
- Latency matters: live conversation, WebRTC, interactive streams.
- You want a royalty-free stack end to end alongside AV1.
Practical settings and traps
- Match sample rates sensibly. 48 kHz is the video standard and what Opus uses inside. 44.1 kHz is fine for AAC and MP3, but resampling back and forth is pointless.
- Keep channel layouts simple. Stereo is universal. 5.1 AAC plays on many devices, but browsers usually downmix it. Opus supports multichannel, but few video players expose it.
- Watch for AC-3 and DTS in files from discs or capture cards. Both are legal in MP4 and MKV, and both fail silently in most browsers. Transcode them to AAC while copying the video:
ffmpeg -i in.mkv -c:v copy -c:a aac -b:a 192k out.mp4. - Audio bitrate is a tiny fraction of the total, so saving on it is a false economy. The bitrate guide shows where the real budget goes.
- If lip sync drifts after conversion, the cause is nearly always variable frame rate video, not the audio codec. The AVI conversion guide covers the fix.
- If a clip's sound cannot be saved, or you have no rights to the music, remove the track instead. The free mute video tool drops the audio and copies the video without re-encoding it.
Frequently asked questions
Does audio bitrate affect video quality?
Not directly, but the two share a total budget. In a constrained-bitrate stream every kilobit given to audio is one less for the picture. But audio needs so little: 128 to 192 kbps against several megabits for 1080p video. So the trade-off is tiny. The only mistake is pushing audio so low that it becomes the obvious flaw while the picture looks fine.
Is Opus supported in HLS?
Not as a first-class option. RFC 8216 lists AAC, MP3, AC-3 and Enhanced AC-3 as the audio formats for MPEG-2 transport stream segments, and Apple's HLS authoring guidance expects AAC. Opus can be carried in fragmented MP4 segments, and some players handle it. But for reliable HLS playback across Apple devices, AAC is the codec to use. VideoBB's HLS renditions use AAC for this reason.
What bitrate should I use for a talking-head video?
For AAC, 96 kbps stereo or 64 kbps mono is plenty for clear speech; 128 kbps leaves margin. For Opus, 48 kbps stereo or 32 kbps mono sounds equally clear. Going higher costs almost nothing in file size. If in doubt, encode at 128 kbps AAC and move on. The video track will dominate the file whatever you choose here.
Why does my video play with no sound in Safari but works in Chrome?
The usual cause is Opus or Vorbis audio inside an MP4, or a container and codec pairing that Safari does not handle even though Chrome does. Re-encode the audio to AAC while copying the video stream. That fixes it without touching picture quality, in a fraction of the time of a full transcode. If the file is uploaded to VideoBB, the transcoder produces AAC automatically.
Sources
- RFC 6716: Definition of the Opus Audio Codec — The Opus specification
- RFC 8216: HTTP Live Streaming — Audio formats permitted in HLS segments
- MDN: Web audio codec guide — Browser support and codec characteristics
- Apple: HTTP Live Streaming documentation — Authoring requirements including audio
Related guides

Container vs codec
A file extension names the wrapper. The codec is the compression inside it. Confusing the two is the root of most playback failures, and telling them apart takes one command.

H.264 vs H.265 vs AV1
One codec plays on everything, one halves the bitrate but carries licensing baggage, and one is royalty-free and gaining ground. How to choose between them for encoding, upload and delivery.

What is HLS streaming?
HTTP Live Streaming is a text playlist, a pile of short media files and a set of rules for a player. Here is how those pieces fit together and why it became the default way to deliver video.

Captions and subtitles for video
Captions serve viewers who cannot hear; subtitles serve viewers who cannot understand. Both are plain text files with timestamps, and getting them right is mostly craft.