Radio Streamer
Guide

MP3 vs AAC vs Opus for Icecast streaming

Most stations default to MP3 because it works everywhere. That is a fine baseline, but it leaves quality and bandwidth on the table. Here is what each codec is actually good at.

Published 2026-05-08 / 9 minute read

Black mixing console
Photo: Simone Impei on Unsplash

Quick recommendation

If you stop reading here, that is the answer. The rest of this post is the reasoning.

MP3 (libmp3lame)

Pros. Universal compatibility. Every browser plays it natively, every podcast app supports it, every smart speaker, every car stereo. Has been the lingua franca of internet radio for 25 years and isn't going anywhere.

Cons. Oldest codec on this list. Below 128 kbps the artifacts get audible, especially on cymbals, brass, and complex orchestral material. The MP3 patents finally expired in 2017, but the codec design is from 1993 and shows its age.

Bitrate guidance:

Mount file extension: .mp3. Most listeners and apps expect this.

AAC

Pros. Better psychoacoustic model than MP3. AAC at 128 kbps usually sounds as good as MP3 at 192 kbps in listening tests. Native support across modern browsers, iOS, Android, podcast apps, and most managed Icecast platforms.

Cons. Not as universally supported as MP3 in older players or pre-2018 in-car infotainment. Some Icecast clients and CDN edges occasionally have framing quirks with AAC mounts. The codec is patented but practically every modern playback chain has a license, so this rarely matters for non-commercial broadcasters.

Bitrate guidance:

Mount file extension: .aac.

Opus (libopus)

Pros. Best perceptual quality per kilobit, hands down. Opus at 96 kbps typically beats MP3 at 192 kbps in blind listening. Designed for both speech and music, switches automatically. Royalty-free. The codec of choice for WebRTC, Discord, and modern voice apps.

Cons. Adoption story is uneven over Icecast specifically. Browser <audio> elements handle Opus correctly, but embedded player widgets, smart speakers, podcast directories, and some CDN edges have rough edges. Real-world Opus over Icecast can require listener-side workarounds. Test before relying on it for a public mount.

Bitrate guidance:

Mount file extension: .opus or .ogg.

Person at a desk in a music studio
Photo: Sincerely Media on Unsplash

Side-by-side

AspectMP3AACOpus
Quality at 128 kbpsAcceptableVery goodExcellent
Browser supportUniversalModernModern
Smart speakersUniversalGoodMixed
Podcast directoriesUniversalMostLimited
In-car infotainmentUniversalMostly OK after 2018Poor
CDN edge handlingTrivialGenerally fineSometimes finicky
LicenseRoyalty-free since 2017Patented but widely licensedRoyalty-free
FFmpeg encoderlibmp3lameaac (native)libopus

"Quality at 128 kbps" is approximate and subjective. Real perception depends on content type, listener device, and what you grew up listening to.

Decision framework

Pick MP3 if

Pick AAC if

Pick Opus if

Common mistakes

Codec/mount extension mismatch

A .mp3 mount expects MP3 framing. Send AAC bytes, listeners get a 4xx error or a silent stream. The file extension on the mount path tells listeners and intermediaries what to expect; match it to your encoder.

Higher bitrate doesn't fix bad source

If your input is muddy or clipped, encoding at 320 kbps just preserves the mud accurately. Fix the source first, then pick a codec.

AAC at very low bitrates

Most Icecast AAC encoders are AAC-LC. At 64 kbps and below, AAC-HE (HE-AAC v1 or v2) sounds dramatically better, but it isn't widely available in standard Icecast pipelines. If you need very low bitrates with quality, Opus is usually the better answer.

Opus VBR vs CBR

Some old Icecast clients and players prefer constant bitrate. Radio Streamer uses CBR by default for predictable bandwidth and player compatibility.

Multiple mounts, multiple codecs

Icecast handles many simultaneous mounts. A common multi-codec pattern:

Each mount needs a separate source connection. Radio Streamer broadcasts one mount per OBS instance, so a multi-mount setup needs either a Liquidsoap front-end (consume one mount, transcode and republish to others) or a second OBS instance.

Wrap up

For most stations, MP3 at 192 kbps is the safe default and there is nothing wrong with picking it. If your audience is primarily modern, AAC at 128 kbps is the smarter quality-per-byte choice. Opus is the best codec on paper and increasingly fine in practice; just budget time to test player coverage before going public.