MP3 plays in Chrome 4+, Edge 12+, Firefox 22+, Safari 4+ on macOS and iOS, Opera 15+, Samsung Internet 4+, Android Browser 2.3+, and IE 9 to 11. Learn MP3 browser support and quirks.

Prince Dewani
May 1, 2026
MP3 is a lossy audio coding format that ISO/IEC standardized under MPEG-1 Audio Layer III for compressed digital sound on the web. It supports Chrome 4+, Edge 12+, Firefox 22+, Safari 4+ on macOS and iOS, Opera 15+, Samsung Internet 4+, Android Browser 2.3+, and Internet Explorer 9 to 11, while Opera Mini never added support.
This guide covers what MP3 is, which browsers support it, the key features, the format comparison, runtime detection, and known issues.
MP3, formally MPEG-1 Audio Layer III, is a lossy audio coding format that ISO/IEC standardized in ISO/IEC 11172-3 and ISO/IEC 13818-3. The Moving Picture Experts Group designed it. It uses a psychoacoustic model and a Modified Discrete Cosine Transform to shrink digital sound by 75 to 95 percent at near-CD quality. The MIME type is audio/mpeg.
MP3 plays natively in every modern desktop and mobile browser, with Chrome, Edge, Safari, Firefox, Opera, Samsung Internet, the Android Browser, and Internet Explorer 9 to 11 all supporting it without a plugin.
Chrome supports MP3 from Chrome 4 on Windows, macOS, Linux, and ChromeOS, and on Android from the earliest Play Store releases of Chrome for Android. The MIME type audio/mpeg works inside both the audio tag and the Media Source Extensions API for adaptive streaming. Chrome 1 to 3 did not support the HTML5 audio element at all.
Microsoft Edge supports MP3 in every version. Legacy EdgeHTML supports MP3 from Edge 12 onward, and Chromium Edge supports it by default from Edge 79 on Windows, macOS, and Linux. Both engines decode MP3 through Windows Media Foundation on Windows and through the Chromium media stack on other platforms.
Firefox supports MP3 from Firefox 22 on Windows Vista and later, using the operating system decoder. Android picked up MP3 in Firefox 20, Linux in Firefox 26, and macOS in Firefox 35. Cross-platform native MP3 decoding without an OS fallback shipped in Firefox 71. Firefox 3.5 to 21 had partial support, and Firefox 1 to 3 had none.
Safari supports MP3 from Safari 4 on macOS and from Safari 4 on iOS and iPadOS. Apple uses Core Audio to decode MP3, so playback stays consistent across Mac, iPhone, and iPad. Safari 3.1 to 3.2 on macOS and iOS 3 did not support MP3 in the HTML5 audio tag.
Opera supports MP3 from Opera 15 on the Chromium engine across Windows, macOS, and Linux. Earlier Opera 9 to 12.1, which used the Presto engine, did not include native MP3 decoding. Opera Mobile supports MP3 from Opera Mobile 11 on Android. Opera Mini does not support MP3 in any version because it relies on a server-side rendering proxy.
Samsung Internet supports MP3 from version 4 on Galaxy phones and tablets. It is built on Chromium and uses the Android system decoder for MP3, so support stays in line with Chrome for Android. Both the audio tag and the Web Audio API decodeAudioData call accept MP3 input.
The legacy stock Android Browser supports MP3 from Android 2.3 (Gingerbread). Modern Android phones use Chrome for Android, Samsung Internet, or Firefox for Android, all of which decode MP3 by default through the Android system codec. The audio/mpeg MIME type is recognized end to end.
Internet Explorer supports MP3 from IE 9 through IE 11 on Windows 7 and later. IE 5.5 to 8 did not support MP3 in the audio tag because they predate the HTML5 media element. Microsoft has retired Internet Explorer, so use Edge or any modern browser for new MP3 work.
Note: MP3 playback breaks across older Safari, IE, and Opera Presto builds. Test it on real browsers and OS with TestMu AI. Try TestMu AI free!
MP3 packs several technical traits that explain why it became the default audio format on the web. The codec balances small file size, broad compatibility, and reasonable fidelity at standard bitrates.
MP3 is the most compatible web audio format, but other lossy codecs offer smaller files or lower latency in specific scenarios. The table compares MP3 with two common alternatives, AAC and Opus.
| Dimension | MP3 | AAC | Opus |
|---|---|---|---|
| Compression type | Lossy | Lossy | Lossy |
| Container | MP3, ADTS, MP4, 3GP | MP4, ADTS, 3GP | OGG, WebM, CAF |
| MIME type | audio/mpeg | audio/mp4, audio/aac | audio/ogg, audio/webm |
| Browser reach | Every browser, including IE 9 to 11 | Every modern browser, plus IE 9+ | Chrome 25+, Firefox 15+, Edge 79+, Safari 11+, no IE |
| Size at 128 kbit/s | Baseline reference | About 20 to 30% smaller than MP3 | About 30 to 50% smaller than MP3 at low bitrates |
| Patent status | Core patents expired worldwide | Patent fees through Via LA | Royalty-free, IETF RFC 6716 |
| Best fit | Maximum compatibility, music libraries, podcasts | MP4 video soundtracks, Apple ecosystem, broadcast | Voice, real-time chat, WebRTC, low-latency streams |
You can confirm MP3 support inside any browser using the HTMLMediaElement.canPlayType() API. The call returns one of three strings for the MIME type audio/mpeg.
The return values are probably (the browser is sure it can play the file), maybe (likely yes, decoding the file header is needed to confirm), or "" (an empty string, which means no). Test both the canonical type audio/mpeg and the alias audio/mp3, since some browsers only recognize the canonical form. The MediaSource.isTypeSupported() API returns the same result for adaptive streaming.
Paste this snippet into the browser DevTools console to confirm MP3 support and the MSE pipeline:
// Run in the DevTools console of any browser to test MP3 playback.
const a = document.createElement("audio");
const canMpeg = a.canPlayType("audio/mpeg");
const canMp3Alias = a.canPlayType("audio/mp3");
console.log("audio/mpeg support:", canMpeg || "no");
console.log("audio/mp3 alias support:", canMp3Alias || "no");
if (window.MediaSource) {
console.log(
"MSE MP3 (audio/mpeg):",
MediaSource.isTypeSupported("audio/mpeg")
);
}If every result is empty, the browser cannot play MP3 and the page should fall back to OGG Vorbis or AAC inside MP4. The MDN cross-browser audio basics guide recommends pairing two source elements inside the audio tag so the browser picks whichever format it can decode.
MP3 is the safest audio choice for cross-browser reach, but a few real edge cases still break in production. The biggest hits are mobile autoplay policies, variable-bitrate seeking, and the latency floor that rules MP3 out for real-time voice.
In my experience, the autoplay block on mobile Safari is the most surprising failure. The audio element loads, the canplay event fires, and play() returns a rejected Promise that silently does nothing if the page forgot a user-gesture handler. Always wire a tap or click listener before calling .play() on iPhone, and surface a play button in the UI so the user can recover.
All MP3 version numbers and platform notes in this guide come from these primary sources:
Did you find this page helpful?
More Related Hubs
TestMu AI forEnterprise
Get access to solutions built on Enterprise
grade security, privacy, & compliance