Testing

FLAC: Browser Support, Features, Limitations

FLAC plays in Chrome 56+, Edge 16+, Firefox 51+, Safari 11+ iOS, Safari 13+ macOS, Opera 42+, and Samsung Internet 4+. Learn the codec, MIME types, and limits.

Author

Prince Dewani

May 1, 2026

FLAC, the Free Lossless Audio Codec, is an open-source, patent-unencumbered audio format maintained by the Xiph.Org Foundation. It plays in Chrome 56+, Edge 16+, Firefox 51+, Safari 11+ on iOS, Safari 13+ on macOS, Opera 42+, and Samsung Internet 4+, while Internet Explorer and Opera Mini never added support.

This guide covers what FLAC is, the browsers that support it, the key features, how to play FLAC in HTML5 audio, comparisons with other audio formats, and the known issues.

What is FLAC?

FLAC, short for Free Lossless Audio Codec, is an open audio format from the Xiph.Org Foundation that compresses CD-quality audio to about half its original size with zero quality loss. The IETF published the bitstream as RFC 9639. The standard file extension is .flac and the standard MIME type is audio/flac.

Which browsers does FLAC support?

Every modern browser engine supports FLAC inside the HTML5 audio element on desktop and mobile, with global support sitting at roughly 96% of all web traffic, while Internet Explorer and Opera Mini are the only holdouts.

Loading browser compatibility data...

FLAC compatibility in Chrome

Chrome supports FLAC from Chrome 56 on Windows, macOS, Linux, ChromeOS, and Android. Chrome 47 to 55 had partial FLAC support behind a flag, and Chrome 4 to 46 did not support it at all. Chrome 62 added FLAC inside MP4 fragments for Media Source Extensions, which is the path adaptive players use for chunked FLAC streaming.

FLAC compatibility in Edge

Microsoft Edge supports FLAC from Edge 16 on Windows. Pre-Chromium EdgeHTML 16 to 18 used the Windows Media Foundation FLAC pipeline. Chromium-based Edge 79+ on Windows, macOS, and Linux uses the same FLAC decoder as Chrome. Edge for Android also plays FLAC, since it tracks Chromium for Android.

FLAC compatibility in Firefox

Firefox supports FLAC from Firefox 51 on Windows, macOS, and Linux, and from Firefox 58 on Android. Firefox 2 to 50 did not ship a FLAC decoder. Mozilla bundles a software FLAC decoder, so the codec works on every desktop and mobile build without an operating-system dependency.

FLAC compatibility in Safari

Safari support for FLAC is split between iOS and macOS. Safari on iOS supports FLAC from iOS 11, since iOS uses Core Media for HTML5 audio. Safari on macOS only added FLAC playback in Safari 13 on macOS Catalina, when Apple moved macOS Safari to the same Core Media path. Safari 11 to 12.1 on macOS played FLAC only as a download, not inside the audio element. Safari 3.1 to 10.1 on macOS and Safari 3.2 to 10.3 on iOS did not support FLAC at all.

FLAC compatibility in Opera

Opera supports FLAC from Opera 42 on Windows, macOS, and Linux, the version where Opera tracked Chromium 55 features. Opera 9 to 41 did not support FLAC. Opera Mobile on Android adds FLAC from Opera Mobile 12.1, while Opera Mini does not play FLAC in any version because Opera Mini renders pages on a server-side proxy that strips the audio element.

FLAC compatibility in Samsung Internet

Samsung Internet supports FLAC from version 4.0 on Galaxy phones and tablets, since the browser ships the Chromium media stack. The FLAC decoder is on by default, so Galaxy users do not need to flip a setting in the Samsung Internet app. FLAC in Ogg and FLAC in MP4 both work on Samsung Internet 5.0 and later.

FLAC compatibility in Android Browser

Chrome for Android supports FLAC from Chrome 56, so any current Android phone or tablet running Chrome can play FLAC inside the HTML5 audio element. The legacy stock Android Browser based on WebView 2.1 to 4.4.4 never added FLAC. Firefox for Android supports FLAC from Firefox 58, and the Android System WebView used by in-app browsers tracks Chrome.

FLAC compatibility in Internet Explorer

Internet Explorer does not support FLAC in any version from IE 5.5 to IE 11. The Trident engine never added a FLAC decoder, and IE relied on the older DirectShow stack which had no public FLAC filter. Microsoft has retired Internet Explorer 11, so move FLAC-dependent web apps to Chromium-based Edge or Chrome for any new work.

Note

Note: FLAC playback breaks across older Safari, Internet Explorer, and Opera Mini. Test it on real browsers and OS with TestMu AI. Try TestMu AI free!

What are the key features of FLAC?

FLAC pairs lossless audio with an open, royalty-free license, and the bitstream is flexible enough to fit archival, streaming, and high-resolution use cases. The headline features cover compression behavior, audio quality limits, container choices, and playback ergonomics.

  • Lossless compression: FLAC reduces a CD-quality file to about 50% of its original size while keeping the decoded samples bit-identical to the source. The MD5 of the original PCM stream is stored in the header so a player can verify the decode.
  • High-resolution audio: FLAC supports bit depths from 4 to 32 bits and sample rates up to 655,350 Hz, which covers DSD-style high-res masters that 24-bit 192 kHz studio workflows produce.
  • Up to 8 channels: The bitstream encodes mono, stereo, and surround layouts up to 7.1, with optional inter-channel decorrelation that improves compression on stereo and matrixed multi-channel material.
  • Multiple containers: FLAC ships in three containers, native .flac, Ogg FLAC, and FLAC in ISO-BMFF (MP4). The native container uses audio/flac, Ogg FLAC uses audio/ogg with codecs=flac, and ISO-BMFF FLAC uses audio/mp4 with codecs=flac.
  • Streamable bitstream: Frame headers are self-synchronizing and carry their own sample number, so a player can seek inside a long file or recover from a network drop without parsing the whole file.
  • Vorbis comment metadata: Tags use the Vorbis comment scheme, the same scheme Ogg Vorbis and Opus use. Common tags such as TITLE, ARTIST, ALBUM, and REPLAYGAIN_TRACK_GAIN map to the same fields used by every major media player.
  • Embedded album art: The PICTURE block holds JPEG, PNG, or GIF cover images, with up to 20 distinct picture types per file. Players read the block to render thumbnails without an external lookup.
  • Open and royalty-free: The reference encoder, decoder, and bitstream are released under permissive licenses with no patent encumbrance. IETF RFC 9639 codifies the same bitstream so any project can implement FLAC without legal review.

How do you play FLAC in HTML5 audio?

You play FLAC in HTML5 audio by serving the file with the audio/flac MIME type and pointing an audio element at the URL. The browser handles the rest, just as it would for an MP3 file. To handle older browsers gracefully, list a fallback source so the engine can pick a format it can decode.

  • Serve audio/flac from your origin: Configure the web server so .flac files return Content-Type: audio/flac, and add Accept-Ranges: bytes so the browser can request a byte range and seek inside the file.
  • Add an audio element with multiple sources: Use one source pointing at the FLAC file with type="audio/flac" and a second source pointing at an MP3 fallback. The browser walks the list and picks the first one it can decode.
  • Feature-detect with canPlayType: Call audio.canPlayType("audio/flac") at runtime and read the return value. probably or maybe means the browser will try to decode FLAC, and an empty string means it cannot.
  • Confirm support in the DevTools console: Paste the snippet below into Chrome, Firefox, Safari, Edge, or Opera. The output prints the support level for native FLAC, Ogg FLAC, and FLAC in MP4 in one pass.
// Paste this into the DevTools console to confirm the browser plays FLAC.
const audio = document.createElement("audio");
const flacMimeTypes = [
  "audio/flac",
  "audio/x-flac",
  'audio/ogg; codecs="flac"',
  'audio/mp4; codecs="flac"'
];

for (const mime of flacMimeTypes) {
  const result = audio.canPlayType(mime);
  console.log(mime, "->", result || "(empty: not supported)");
}

// 'probably' or 'maybe' means the browser will try to decode FLAC.
// An empty string means the engine has no FLAC decoder for that container.

If every line prints an empty string, the browser is Internet Explorer, Opera Mini, or a pre-FLAC build of Chrome, Firefox, or Safari. Fall back to MP3 or AAC for those visitors and warn anyone serving live FLAC streams that iOS Safari only handles progressive FLAC downloads, not Icecast or HLS streams.

...

FLAC vs MP3 vs WAV vs ALAC

FLAC sits in the lossless lane against ALAC and WAV, while MP3 sits in the lossy lane. The table below sums up the differences across compression, file size, browser reach, and use case.

DimensionFLACMP3WAVALAC
CompressionLossless, about 50% of sourceLossy, about 10% of sourceUncompressed, 100% of sourceLossless, about 60% of source
File size, 3-min song20 to 25 MB3 to 5 MB30 to 35 MB22 to 27 MB
Max bit depth32-bit16-bit equivalent32-bit float32-bit
Max channels82 (stereo)Up to 188
LicensingOpen, royalty-free, RFC 9639Royalty-free since patent expiryOpen, Microsoft and IBMOpen-source, Apple-led
Browser supportChrome 56+, Firefox 51+, Safari 11+ iOS, Safari 13+ macOS, Edge 16+Every browser, including IE 9+Every browser, including IE 9+Safari 13+ macOS only
Best forArchival, hi-res streaming, music librariesPodcasts, low-bandwidth audioStudio masters, audio editingApple Music, iTunes downloads

What are the known issues with FLAC?

FLAC plays cleanly in every modern browser engine, so the painful edge cases land on legacy Safari, live streaming on iOS, server MIME types, and the file-size cost of a lossless codec.

  • Safari on macOS Catalina and earlier splits behavior: Safari 11 to 12.1 on macOS plays FLAC only as a file download, not inside the audio element. Visitors on those builds see a broken player even though the OS holds the file. The fix is to fall back to MP3 for Safari user agents below version 13.
  • iOS Safari does not handle live FLAC streams: Safari on iOS plays progressive FLAC downloads, but it has no FLAC streaming demuxer for Icecast or HLS, so live FLAC radio fails on iPhone and iPad. Workarounds include encoding the stream as AAC for iOS, or directing iOS listeners to a native player like VLC or foobar2000.
  • Misconfigured MIME types break playback: Some web servers still serve .flac as application/octet-stream, which trips Chrome and Firefox sniffing rules. Set the MIME type to audio/flac in the server config, since audio/x-flac is a non-standard alias and not every browser maps it to the FLAC decoder.
  • FLAC in MP4 needs Chrome 62+ or fMP4 packaging: Adaptive streaming with Media Source Extensions requires FLAC inside MP4 fragments. Chrome supports the path from Chrome 62, while Safari only handles FLAC in HLS when the segments are fMP4. Plain MPEG-2 transport stream segments fail.
  • File size hits cellular budgets: A FLAC track is roughly five times larger than an MP3 at common bitrates, so a 60-minute FLAC podcast eats around 400 MB of mobile data. Offer a lossy fallback for cellular listeners or warn them on the player UI.
  • Internet Explorer never supported FLAC: IE 5.5 to IE 11 cannot decode FLAC, and the audio element falls back to source list iteration. Provide an MP3 source so legacy IE intranet users still hear audio, even though Microsoft has retired IE 11.
  • Opera Mini renders pages on a server proxy: Opera Mini strips the audio element on its server and replaces it with a download link, so FLAC playback never starts on a low-end Opera Mini device. The fallback is a native player launched from a tap.
  • FLAC in Ogg is widely supported but rarely served: Every Chromium browser, Firefox, and modern Safari plays FLAC inside Ogg using audio/ogg; codecs=flac, but most CDNs default to native FLAC. Pick the native container for streaming and the Ogg container only when interoperability with Vorbis-era tooling matters.

In my experience, the trickiest failure is the iOS live-stream gap. A FLAC internet radio station that works in Chrome on Windows and Safari on macOS will silently fail on iPhone, because iOS Safari only progressive-loads FLAC and rejects FLAC frames inside an HLS or Icecast stream. Always probe the user agent and route iOS listeners to a parallel AAC stream, or your iPhone analytics will show a flat zero on play events.

...

Citations

All FLAC version numbers and platform notes in this guide come from these primary sources:

Author

Prince Dewani is a Community Contributor at TestMu AI, where he manages content strategies around software testing, QA, and test automation. He is certified in Selenium, Cypress, Playwright, Appium, Automation Testing, and KaneAI. Prince has also presented academic research at the international conference PBCON-01. He further specializes in on-page SEO, bridging marketing with core testing technologies. On LinkedIn, he is followed by 4,300+ QA engineers, developers, DevOps experts, tech leaders, and AI-focused practitioners in the global testing community.

Open in ChatGPT Icon

Open in ChatGPT

Open in Claude Icon

Open in Claude

Open in Perplexity Icon

Open in Perplexity

Open in Grok Icon

Open in Grok

Open in Gemini AI Icon

Open in Gemini AI

Copied to Clipboard!
...

3000+ Browsers. One Platform.

See exactly how your site performs everywhere.

Try it free
...

Write Tests in Plain English with KaneAI

Create, debug, and evolve tests using natural language.

Try for free

Frequently asked questions

Did you find this page helpful?

More Related Hubs

TestMu AI forEnterprise

Get access to solutions built on Enterprise
grade security, privacy, & compliance

  • Advanced access controls
  • Advanced data retention rules
  • Advanced Local Testing
  • Premium Support options
  • Early access to beta features
  • Private Slack Channel
  • Unlimited Manual Accessibility DevTools Tests