When I decided to self-host my music alongside Bandcamp, I needed to choose an audio codec — it matters more than you'd think. It's part of how people experience and perceive your work.
Having recently discovered the miraculous AVIF image codec that simply annihilates JPEG, PNG and WEBP, I thought I better investigate if there is something better than MP3 / AAC.
After testing my own tracks, Opus won decisively.
The codec question
MP3 is universal and often considered "good enough." But it's a 30-year-old codec never designed for the modern web. Opus was built specifically for internet streaming and consistently outperforms MP3 at the same bitrates.Opus and MP3 achieve similar compression (87–93% reduction from FLAC), but Opus delivers noticeably better quality at equivalent bitrates — especially for complex textures, layered ambience, and field recordings.
Opus at 96kbps sounds excellent. Comparable to MP3 at much higher bitrates. I've listened to my 96kbps Opus files and found no initial cause for concern.
Opus at 160kbps approaches transparency — essentially indistinguishable from lossless for most material. Files are roughly 50-80% larger than 96kbps, but you're getting near-perfect fidelity.
Quality for Field Recordings: My music relies heavily on environmental textures and field recordings. Opus excels at both speech and music, making it ideal for work that sits between those worlds.
Lower Latency: Opus was designed for real-time communication via WebRTC (powers Discord, WhatsApp, Zoom). For streaming, this means faster startup and more responsive seeking.
Open and Future-Proof: Royalty-free, open source, mandatory for WebRTC. Not going anywhere.
Universal: Opus works everywhere now — Chrome, Firefox, Safari (since 2022), Opera, Edge. No compatibility trade-offs.
Some numbers
I compressed several of my tracks to compare codecs: FLAC: Lossless compression; Opus: VBR via libopus (through ffmpeg), 24kbps, 96kbps and 160kbps targets; MP3: CBR via LAME (through ffmpeg), 96kbps.To illustrate just how much compression this is – from completely uncompressed to streaming-ready — Cricket Shuffle (2nd Draft):
WAV 37.5MB
██████████████████████████████ 100% baselineFLAC 23.9MB
███████████████████░░░░░░░░░░░ 64%Opus 160kbps 5.0MB
████░░░░░░░░░░░░░░░░░░░░░░░░░░ 13%Opus 96kbps 3.0MB
██░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 8%Opus 24kbps 785KB
█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 2%My choice
After testing, my player defaults to Opus 96kbps with an option to upgrade to 160kbps on demand. I haven't received user feedback yet, so I may reverse this to favour higher fidelity by default.Honestly, I haven't done formal A/B testing yet. I've just listened extensively to the 96kbps files and found them to be excellent under non-critical listening conditions — no red flags, no obvious artefacts, even on revealing equipment: Yamaha HS5 studio monitors (stereo pair); Audeze Penrose headphones (100mm planar magnetic drivers); Creative Aurvana Ace 2 IEMs (xMEMS drivers)
Let the people decide?!
I'm considering building a double-blind A/B test — let listeners compare 96kbps Opus vs 160kbps Opus vs lossless FLAC, then tell me if they can hear the difference. UPDATE: I built it!A cautionary codec tale
Back in 1999, when I moved country, I ripped my entire CD collection to 160kbps MP3 using an old Fraunhofer codec. At the time, I was auditioning on crappy PC speakers and thought it sounded great.I quickly came to regret it as I began to invest in even slightly better quality headphones. I later experimented extensively with Ogg Vorbis too and decided that 160kbps was basically transparent – although there wasn't much hardware support for it.
These days, I archive everything in FLAC. It's lossless, and you can batch transcode to whatever format comes next. Learn from my mistakes: lossless matters.
