Opus vs AAC vs MP3 vs FLAC

Compare Opus, AAC, MP3 and FLAC on one file. Opus at 64k beat AAC at 128k on size, and one codec missed its own nominal bitrate by 16 percent.

Share

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.

Audio codecs and bitrates
What does an audio codec choice cost in bytes?
Held constant: Same source audio, 5 seconds, video stripped
Bar chart. Audio codecs and bitrates. Encode time and output size for each variant, each metric scaled to its own maximum.
VariantEncodeSizeCost
Opus 64k128 ms50.5 KB$0.0022
Opus 128k101 ms93.2 KB$0.0016
AAC 128k257 ms80.2 KB$0.0017
AAC 192k170 ms119.4 KB$0.0017
MP3 192k108 ms118.7 KB$0.0016
FLAC lossless62 ms fastest453.0 KB$0.0016
Measured 2026-08-20 on the Rendobar API. Encode time is the FFmpeg step alone, separated from download and upload. 6 of 6 runs succeeded. Sizes are exact and repeatable. Timings are a single sample and vary up to 2x run to run, so treat small differences as noise. Why.

Opus at 64k beat AAC at 128k

NominalDelivered
Opus 64k64 kbps50.5 KB
AAC 128k128 kbps80.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.

Frequently asked questions

Is Opus better than AAC?

On size, clearly. Opus at 64k produced 50.5 KB against AAC at 128k's 80.2 KB, so half the nominal bitrate gave 37% fewer bytes. AAC still wins on playback support, particularly on older Apple hardware.

Why is my audio file bigger than the bitrate suggests?

libopus defaults to variable bitrate, so -b:a is a target it averages toward rather than a ceiling. We measured Opus at 128k delivering 16% more bytes than bitrate times duration predicts.

Should I use FLAC for delivery?

No. FLAC produced 453 KB against Opus 64k's 50.5 KB, nine times the size. It is the right choice for archival masters and the wrong one for anything sent over a network.

MP3 or AAC at 192k?

They came out within 1% of each other on size, so storage is not the deciding factor. Choose AAC for quality per bit and MP3 for universal decode support.

Sources

Tags #ffmpeg#audio#opus#aac#codecs#benchmarks
All posts
Share
  1. AV1 vs H.264 VMAF compared Engineering blog
  2. AV1 vs VP9 vs HEVC vs H.264 Engineering blog
  3. AVIF vs WebP vs JPEG compared Engineering blog