# Opus vs AAC vs MP3 vs FLAC

Canonical: https://rendobar.com/blog/audio-codecs-measured/
Author: Abdelrahman Essawy
Published: 2026-08-20
Updated: 2026-08-20

---

## Key takeaways

- Opus at 64k produced 50.5 KB against AAC at 128k's 80.2 KB, so half the nominal bitrate gave 37% fewer bytes.
- Nominal bitrate is not delivered bytes. AAC 128k hit its target almost exactly at 80.2 KB, while Opus 128k delivered 93.2 KB, about 16% over.
- FLAC was the FASTEST to encode at 62 ms, and 9x the size of Opus 64k. Lossless is cheap in CPU and expensive in bytes.
- MP3 192k and AAC 192k came out within 1% of each other on size, at 118.7 KB and 119.4 KB, so the choice between them is about quality and support, not storage.
- Audio encoding is a rounding error in time. Every variant finished inside 260 ms, and FLAC was fastest at 62 ms.

Audio gets a fraction of the attention video does, which is why the defaults
people carry around are usually a decade out of date. Six encodes on one file.

Short version. Opus at **half the bitrate** of AAC produced a **37% smaller
file**, and the nominal bitrate you request is not the number of bytes you get.

## Opus at 64k beat AAC at 128k

| | Nominal | Delivered |
|---|---:|---:|
| Opus 64k | 64 kbps | **50.5 KB** |
| AAC 128k | 128 kbps | 80.2 KB |

Half the bitrate, 37% fewer bytes, and for speech and most mixed content Opus at
64k is widely held to be at least competitive with AAC at 128k. That is the case
for Opus in one line, and it is why WebRTC, Discord and most modern voice stacks
standardised on it.

The caveat that belongs next to it: **support**. Opus in an Ogg or WebM
container does not play everywhere AAC in an MP4 does, particularly on older
Apple hardware. The codec question is settled; the container and platform
question is not.

## The nominal bitrate lied

This is the detail worth taking away, because it quietly breaks storage
estimates.

Five seconds at 128 kbps should be **80 KB**. AAC delivered **80.2 KB**, which
is essentially exact. Opus delivered **93.2 KB**, about **16% over** its own
nominal figure.

Two things cause that. `libopus` defaults to variable bitrate, so `-b:a` is a
target it averages toward rather than a ceiling it respects. And the Ogg
container carries more per-page overhead than MP4's, which is proportionally
visible on a clip this short.

Neither is a bug. Both mean the same thing for planning: **if you are sizing
storage from bitrate multiplied by duration, add a margin, and measure the codec
you actually ship.**

## FLAC encoded fastest

FLAC took **62 ms**, the fastest of all six, and produced **453 KB**, nine times
Opus 64k.

That is not a paradox once you see what lossless does. There is no psychoacoustic
model to run and no decisions to make about what to discard, so the encoder does
far less thinking. Lossless is **cheap in CPU and expensive in bytes**, which is
the exact inverse of the tradeoff people assume.

For archival masters that is the right trade. For anything delivered over a
network it is not close.

## MP3 and AAC are the same size at 192k

**118.7 KB** against **119.4 KB**, a difference of under 1%.

So at 192 kbps the storage argument between them does not exist. The reasons to
pick one over the other are quality per bit, where AAC is better, and universal
decode support, where MP3 remains unbeatable. Nothing on the size column should
inform that decision.

## Audio time is a rounding error

Every variant finished inside **260 ms**, and the whole sweep is a fraction of
one 720p video encode. Run to run these move by tens of milliseconds, which is
its own lesson: at this scale the timings are noise and only the sizes are worth
reading closely.

Worth remembering when a pipeline re-encodes audio it could have copied.
`-c:a copy` is still free and still the right answer when the codec already
suits the target, but the cost of getting it wrong is much smaller than on the
video side.

## Where this stops

Five seconds of one file's audio track, video stripped. Container overhead is
proportionally larger on a short clip, so the Opus overshoot would shrink as a
percentage on a full-length track. Content matters too: these results are for
one mixed source, and speech-only or music-only material will move the numbers.

Audio is one part of a wider codec comparison on the same source, collected in [Video codec comparison, measured](/blog/video-codec-comparison/).
