Browser Audio Format Support
Supplemental reference for Listen Here (browser-side playback).
It covers exactly the audio extensions GET /stream serves.
This table is documentation, not configuration
The product never reads it. The play page asks each browser live via
canPlayType and only a definite “no” blocks a track — so when a browser
gains a codec, Listen Here picks it up with zero code change. This page exists so humans can
reason about what listeners will experience.
The table
As of July 2026, current browser versions. ✅ plays · ⚠ see note · ❌ does not play
| Extension | Codec / container | Chrome / Edge | Firefox | Safari macOS | Safari iOS |
|---|---|---|---|---|---|
| .mp3 | MPEG-1 Layer 3 | ✅ | ✅ | ✅ | ✅ |
| .aac | AAC (ADTS) | ✅ | ✅ | ✅ | ✅ |
| .m4a | AAC in MP4 | ✅ | ✅ | ✅ | ✅ |
| .m4a | ALAC in MP4 | ❌ | ❌ | ✅ | ✅ |
| .flac | FLAC | ✅ 56+ | ✅ 51+ | ✅ 13+ | ✅ iOS 11+ |
| .ogg / .oga | Vorbis in Ogg | ✅ | ✅ | ✅ 18.4+ ⚠ | ✅ 18.4+ ⚠ |
| .opus | Opus in Ogg | ✅ 33+ | ✅ 15+ | ⚠ 18.4+ | ⚠ 18.4+ |
| .wav | PCM | ✅ | ✅ | ✅ | ✅ |
| .aiff / .aif | PCM (AIFF) | ❌ | ❌ | ✅ | ✅ |
| .wma | Windows Media | ❌ | ❌ | ❌ | ❌ |
Notes
- FLAC — broadly supported since ~2017: Chrome 56+, Edge 16+, Firefox 51+, Safari 11+ on iOS, but only Safari 13+ (Catalina) on macOS. Source: caniuse.com/flac.
- Ogg Vorbis — native in Safari only from 18.4 (macOS Sequoia 15.4 / iOS 18.4, March 2025). Safari 14.1–18.3 was partial: playback depended on the system’s AudioToolbox components, so it worked on some Macs and not others. Source: caniuse.com/ogg-vorbis.
- Opus — Safari 18.4 release notes claim Opus-in-Ogg support (previously Opus played only inside CAF or WebM containers on Apple platforms); at least one field report says it still fails in practice. Treat Safari Opus as unknown-leaning-yes on 18.4+ — exactly the case the live probe decides better than any table. Opus-in-MP4 remains unplayable on Safari. Source: caniuse.com/opus.
- ALAC in .m4a — Apple-ecosystem only; Chromium and Firefox decode the MP4
container’s AAC branch but not ALAC. This is also the classic container-vs-codec trap:
canPlayType('audio/mp4')answers “maybe”, then the load fails — which is why a “maybe” is attempted and any real failure is shown on the output chip rather than guessed at. - AIFF — Safari plays PCM AIFF; Chromium and Firefox do not.
- WMA — no browser plays WMA. Listen Here disables it up front: WMA tracks never enter the device queue and playback steps past them, noted on the output chip.
What the play page actually probes
Per extension, Listen Here probes candidate MIME strings and blocks only when
every candidate returns '' (a definite no):
| Extension | Candidates probed |
|---|---|
| .opus | audio/ogg; codecs="opus", audio/opus |
| .flac | audio/flac, audio/ogg; codecs="flac" |
| .m4a | audio/mp4, audio/mp4; codecs="mp4a.40.2" |
| others | the single MIME type /stream sends as Content-Type |
The .opus double-probe exists because audio/opus is the
RTP payload type, not the file type — Chromium answers it '' while playing the file
fine; audio/ogg; codecs="opus" is the honest question.
Practical reading
- An all-green library for Listen Here on any device: MP3, AAC/M4A (AAC), WAV, and FLAC on anything newer than ~2017.
- Formats that will show “⚠ not playable here” on real devices today: WMA everywhere; AIFF and ALAC off-Apple; Vorbis and Opus on pre-18.4 Safari (iPhones not updated past iOS 18.3).
- Hearing those anyway would require server-side transcoding, which MBXHub does not currently do.