MP3 vs AAC vs Opus: Modern Audio Codec Comparison
Why the Codec You Choose Actually Matters
Most people pick an audio format like they pick a font: grab the first familiar option and move on. MP3 has been the default for so long that it’s easy to think it's the only 'audio format.' But your choice of codec has real consequences. File size, audio fidelity at low bitrates, device compatibility, and even streaming costs all change dramatically depending on whether you pick MP3, AAC, or Opus. Here’s a practical example. A four-minute pop song encoded at 128 kbps as an MP3 is about 3.7 MB. The same song as an AAC file at 128 kbps will sound noticeably cleaner—on par with a 160–192 kbps MP3—while taking up the same space. Encode it to Opus at just 96 kbps, and you often get audio quality that beats both, with a file size closer to 2.8 MB. These differences add up fast, whether you’re managing thousands of tracks, running a podcast network, or streaming audio over a shaky mobile connection. This article will break down the real-world differences between these three codecs. We'll explore where each one shines and give you specific settings to use when converting. The goal isn't to crown a single winner, because there isn't one. It's to give you the knowledge to make an informed choice for your project.
MP3: The Codec That Refuses to Retire
MP3 (MPEG-1 Audio Layer III) was standardized back in 1993 and took over the world by the late 90s. Its patents finally expired in 2017, making it completely free to use. That freedom, combined with three decades of hardware and software support, is why MP3 is still an inescapable part of digital audio. Technically, MP3 relies on a psychoacoustic model to throw away audio information your ears are least likely to miss. This includes sounds masked by louder ones, very high frequencies above ~16 kHz, and some transient detail. At high bitrates (256–320 kbps), the results sound perfect to most people on most gear. But drop to 128 kbps, and you start to hear it. Once you notice the pre-echo on drums or that slight 'swirly' texture on cymbals, you can't un-hear it. For encoding, just use Variable Bit Rate (VBR). It almost always delivers better quality than Constant Bit Rate (CBR) for the same file size. The LAME encoder's V0 preset (averaging 220–260 kbps) is transparent for critical listening. V2 (averaging 170–210 kbps) is a fantastic balance of quality and size for everyday use. The only time to use CBR is for legacy hardware that demands it, like old car stereos or some fitness trackers. In that case, 192 kbps is a safe bet. So where does MP3 fall short? Its 'joint stereo' mode can degrade the stereo image at low bitrates, and quality falls off a cliff below 128 kbps compared to modern codecs. It also lacks native support for gapless playback, a constant frustration for anyone listening to live albums or DJ mixes.
AAC: The Intended Successor That Mostly Delivered
Developed as the formal successor to MP3, AAC (Advanced Audio Coding) was standardized in 1997. It might have languished in obscurity if not for a major boost: Apple's decision to use it for the iTunes Store in 2003. That move gave it the mainstream foothold it needed. Today, AAC is the standard for Apple Music, YouTube audio, and most digital broadcasting. The engineers behind AAC made some smart upgrades over MP3. The codec supports up to 48 audio channels (MP3 is practically limited to stereo), uses a more efficient filterbank, and handles stereo information much more intelligently at low bitrates. The proof is in the listening: in blind tests run by communities like Hydrogenaudio, AAC at 128 kbps consistently sounds better and closer to the original than MP3 at the same bitrate. AAC isn't one-size-fits-all; it has several profiles. AAC-LC (Low Complexity) is the workhorse for music and general audio, used by both iTunes and YouTube. For very low bitrates (32–64 kbps), HE-AAC (High Efficiency) uses a clever trick called Spectral Band Replication to reconstruct high frequencies, making it great for streaming speech or radio. HE-AAC v2 takes it a step further with Parametric Stereo, squeezing out usable voice quality at an impressive 24–32 kbps. For your own music, AAC-LC at 256 kbps (Apple's standard) is nearly impossible to distinguish from lossless on consumer gear. For podcasts, 96–128 kbps mono is a great target. But AAC's Achilles' heel is licensing. It is still patent-encumbered, which is why some open-source Linux distros don't include it by default and why developers of some embedded systems simply skip it to avoid legal headaches.
Opus: The Engineering Achievement Nobody Talks About Enough
Opus is an open, royalty-free codec standardized by the IETF in 2012 (RFC 6716). Developed by the folks at Xiph.Org and Mozilla, it cleverly combines two different technologies: SILK for voice (from Skype) and CELT for music. The result is a hybrid powerhouse. It can scale from crystal-clear narrowband speech at 6 kbps all the way to high-fidelity stereo music at 510 kbps, all while maintaining incredibly low algorithmic latency (as little as 2.5 ms). The quality-per-bit is stunning. In formal listening tests, Opus at 96 kbps consistently matches or beats AAC-LC at 128 kbps for music. At 64 kbps, Opus even competes with 96 kbps AAC. These are not small, academic differences. For anyone paying for bandwidth or storage at scale, those are massive savings. So why isn't Opus everywhere? One word: compatibility. There's no native support in iOS without a third-party library, and it wasn't supported on Android before version 5.0. Most dedicated music players—from portable hi-fi players to car stereos and smart TVs—simply won't play Opus files. That makes it a risky default if you're distributing audio to unknown devices. But for server-side processing, web delivery, or any internal workflow where you control the playback environment? Frankly, you should be using Opus. It's the best tool for the job at low-to-medium bitrates.
Head-to-Head: Quality, Bitrate, and File Size
Let's ditch the vague claims and look at the hard numbers from published listening tests and encoder benchmarks. The following figures use reference encoders: LAME 3.100 for MP3, Apple's AAC encoder, and libopus for Opus, all with typical stereo music. At the very low end of 64 kbps stereo, MP3 is a mess of audible artifacts like metallic reverb and smeared percussion. AAC-LC is merely acceptable for casual listening. Here, Opus is the undisputed champion, with most listeners rating it as good as a 96 kbps MP3. Move up to 128 kbps stereo, and the picture changes. MP3 becomes decent but isn't transparent. AAC-LC gets very close to transparency for most music. Opus, however, is effectively transparent for the vast majority of listeners and material. Once you hit 192 kbps, the differences between all three become academic on typical consumer gear. In terms of file size for a 60-minute audio file: a 128 kbps MP3 is about 55 MB. A 128 kbps AAC-LC file is the same size but sounds better. An Opus file at 96 kbps offers similar perceived quality to the 128 kbps AAC file but is only ~41 MB. For speech, the gap is even wider. HE-AAC at 48 kbps mono produces solid podcast-quality voice. Opus can deliver comparable or better results at just 32 kbps mono. Over a 10-hour audiobook, that's the difference between 216 MB and 144 MB—a 33% reduction with no drop in quality. One final, non-negotiable rule: transcoding between lossy formats is a recipe for disaster. Converting an MP3 to AAC or Opus cannot recover information already discarded by the MP3 encoder. Anyone who's been handed a garbled 96kbps MP3 and asked to 'make it sound good' knows this pain. Always, always start from a lossless source like WAV, FLAC, or AIFF when quality is on the line.
Which Codec to Choose for Your Specific Use Case
The right codec depends entirely on your distribution target, not on which one scores highest in abstract lab tests. Here's how to choose. When you're distributing music to end users for their own libraries (think Bandcamp downloads, personal collections, USB drives for the car), use MP3. A high-quality VBR file (LAME V0) or 320 kbps CBR is your best bet. When you can't control the playback device, universal compatibility trumps the marginal quality gains of other codecs. For podcasts and spoken-word content, AAC-LC mono at 96 kbps is the sweet spot. It's a widely-compatible choice that major platforms like Apple Podcasts, Spotify, and Pocket Casts handle perfectly. If your audience is heavy on Apple users, AAC is the native choice and plays beautifully. If you're streaming audio on the web or in a browser, Opus in a WebM container is the clear technical winner at any bitrate below 160 kbps. Just be sure to pair it with an AAC or MP3 fallback for older iOS Safari users if your analytics show they're a significant part of your audience. When it comes to archiving your audio, the answer is simple: never use a lossy format. Store your masters as FLAC or WAV files, and then encode to your delivery format as needed. You can use CocoConvert for FLAC-to-MP3, FLAC-to-AAC, and FLAC-to-Opus conversions to generate these delivery files from your lossless masters. For voice communications and real-time audio, the answer is Opus. Period. Its low latency and incredible efficiency at voice bitrates (6–32 kbps) is exactly why every major VoIP app from Discord to WhatsApp uses it. MP3 and AAC simply weren't built for this. In the world of video game audio assets, AAC is a common choice in both Unity and Unreal Engine workflows. Opus is also gaining ground, with native support in Unity 2019.3 and later. MP3 will work, but it offers no real advantages over AAC in a modern game engine.
Converting Between Formats with CocoConvert
Ready to convert? CocoConvert handles MP3, AAC (in an M4A container), and Opus (in OGG or WebM) with fully configurable bitrate settings. Converting a FLAC file to AAC is straightforward. Upload your source file, select M4A as the output, and pick your bitrate. For music, 256 kbps AAC-LC is a great default. For voice, 96 kbps mono will cut the file size in half with no meaningful loss in speech quality. CocoConvert uses the standard AAC-LC profile, with HE-AAC available for bitrates under 80 kbps. For Opus, you'll select either OGG Opus or WebM Opus as the output. We recommend a bitrate of 96 kbps for music or 32–48 kbps for voice. Our encoding is handled by libopus, the reference implementation, ensuring quality is identical to what you'd get from command-line tools. And for the classic MP3, select your format and then choose between VBR and CBR. We strongly recommend VBR at the V2 quality level (around 190 kbps average) over a fixed 192 kbps CBR. You get comparable quality with a slightly smaller average file size. Let's be upfront about a few limitations. CocoConvert doesn't currently support multi-channel surround sound encoding. Batch conversion is a feature for Pro accounts; free users are limited to one file at a time. For very large files (over 500 MB), a slow connection might cause the upload to time out, so splitting the audio into segments first is a good workaround. CocoConvert also doesn't perform audio normalization or loudness targeting (LUFS). If you need that, you'll have to run your audio through a tool like FFmpeg or Auphonic before or after converting. The format recommender in our interface defaults to MP3 for maximum compatibility, but the settings panel gives you total control. There's no single right answer, but the numbers and use cases in this article should help you make the right call for your workflow.