FLAC Audio: The Complete Guide to Lossless Music
Everything you need to know about FLAC — the most popular lossless audio format. Learn how FLAC works, why it sounds better than MP3, and how to play FLAC files on any device.
What Is FLAC?
FLAC stands for Free Lossless Audio Codec, and it does exactly what the name suggests: it compresses audio without throwing anything away. Unlike MP3 or AAC, which permanently discard parts of the audio signal to shrink file sizes, FLAC reduces file size while preserving every single sample from the original recording.
The way it works is straightforward — FLAC looks at the patterns in an audio signal, models them mathematically, and stores the difference between its prediction and the actual data. That difference is much smaller than the original, so it compresses well. When you decompress it, you get back the exact same audio data that went in. Bit for bit, sample for sample. Nothing lost, nothing approximated. That’s what “lossless” means.
FLAC was created in 2001 and has since become the standard format for lossless music distribution. Qobuz, Bandcamp, and Tidal all use it for their lossless and hi-res catalogs. It supports sample rates from 44.1 kHz all the way up to 384 kHz, and bit depths from 16-bit CD quality to 24-bit and even 32-bit hi-res recordings.
The format is completely open-source and royalty-free, which means any developer can build FLAC support into their app without licensing fees. That openness is a big part of why it won.
FLAC vs MP3 vs AAC: What’s the Difference?
The audio format landscape can be confusing, so here’s a straightforward comparison of the most common formats you’ll encounter.
| Format | Compression Type | Typical Bitrate | File Size (4-min song) | Quality |
|---|---|---|---|---|
| FLAC | Lossless | 800 - 1,400 kbps | 30 - 50 MB | Perfect reproduction of source |
| ALAC | Lossless | 800 - 1,400 kbps | 30 - 50 MB | Perfect (Apple ecosystem) |
| WAV | Uncompressed | 1,411 kbps (CD) | ~40 MB | Perfect, but no compression |
| MP3 320 | Lossy | 320 kbps | ~10 MB | Very good, some loss |
| MP3 128 | Lossy | 128 kbps | ~4 MB | Acceptable, noticeable loss |
| AAC 256 | Lossy | 256 kbps | ~8 MB | Good (more efficient than MP3) |
| OGG Vorbis | Lossy | 160 - 320 kbps | 5 - 10 MB | Good, open-source alternative |
The tradeoff is simple: file size vs. fidelity. FLAC files are roughly three to five times larger than a high-quality MP3, but they preserve the original audio perfectly. MP3 and AAC use psychoacoustic models to discard sounds that most people are unlikely to notice — quiet tones masked by louder ones, frequencies at the extreme edges of hearing, and subtle details in complex passages.
AAC deserves a mention because it’s technically more efficient than MP3 at the same bitrate. A 256 kbps AAC file generally sounds as good as a 320 kbps MP3. But both are still lossy — they permanently remove information from the audio signal.
FLAC gives you none of those compromises, at the cost of larger files. With storage being cheap and plentiful these days, that’s a pretty easy trade to make.
Can You Actually Hear the Difference?
Everyone asks this, and the honest answer is: it depends.
In controlled double-blind listening tests, most people can’t reliably distinguish a well-encoded 320 kbps MP3 from the original CD-quality FLAC source. This is especially true when listening through typical consumer earbuds or Bluetooth headphones in a noisy environment. The psychoacoustic models used by modern lossy encoders are genuinely good at hiding what they remove.
But there are scenarios where the difference becomes more noticeable:
- High-quality headphones or speakers — Better equipment reveals more detail, including the subtle artifacts that lossy compression introduces.
- Quiet, critical listening — In a controlled environment where you’re actively focusing on the music, compression artifacts in cymbals, reverb tails, and stereo imaging can become apparent.
- Sensitive source material — Solo acoustic instruments, classical recordings with wide dynamic range, and tracks with lots of high-frequency detail (jazz cymbals, string quartets) tend to expose lossy compression more readily.
- Repeated encoding — If a file gets re-encoded (transcoded from one lossy format to another), quality degrades noticeably. FLAC avoids this problem entirely because you always have the original.
Here’s the thing about FLAC, though: it’s not just about what you can hear right now, on your current gear, in your current listening environment. It’s about keeping your options open. A FLAC file is a perfect archive. You can always convert it down to MP3 or AAC later if you need a smaller file, but you can never go the other way. Once lossy compression discards information, it’s gone. Forever. You don’t get it back by wishing.
For the 16-bit/44.1 kHz CD-quality standard, FLAC preserves all frequencies up to 22.05 kHz — comfortably beyond the ~20 kHz upper limit of human hearing. Hi-res FLAC at 24-bit/96 kHz extends that to 48 kHz and adds greater dynamic range (144 dB theoretical vs. 96 dB for 16-bit). Whether that extra headroom is audible is the subject of endless debate, but as an archival format, there’s no downside to keeping it.
FLAC on Mobile: Android and iOS
This is where things get occasionally frustrating.
Android
Android has supported FLAC natively since Android 3.1 (Honeycomb, 2011). Any music player app on Android can decode and play FLAC files without needing a special codec or library. That’s the good news.
The catch: what happens after decoding. Android’s audio subsystem — specifically AudioFlinger, the system mixer — runs at a fixed sample rate, typically 48 kHz on most devices. If your FLAC file is at 44.1 kHz (standard CD quality), AudioFlinger will resample it to 48 kHz before sending it to the hardware.
This resampling isn’t catastrophic. Modern Android devices use decent Speex-based resamplers, and the quality degradation is minimal. But it’s an extra conversion step that purists would rather avoid. For bit-perfect playback, you need an app that can bypass AudioFlinger entirely — usually by using the AAudio or OpenSL ES APIs to talk directly to the hardware.
Things get more interesting with external USB DACs, which can accept audio at multiple sample rates. A well-designed player can negotiate the correct rate with the DAC and avoid resampling altogether.
iOS
Apple’s ecosystem doesn’t natively support FLAC in the built-in Music app. Apple has its own lossless codec, ALAC (Apple Lossless Audio Codec), which serves the same purpose. Apple Music’s lossless tier uses ALAC.
To play FLAC files on iOS, you need a third-party app like VLC, Foobar2000, or a dedicated audiophile player. These apps decode FLAC in software and route the audio through Core Audio. Like Android, iOS has its own audio mixing layer that may resample your audio, though Apple has been better about supporting native sample rates on recent hardware.
If you’re deeply invested in the Apple ecosystem, converting your FLAC library to ALAC is a practical option — it’s also lossless, so no quality is lost in the conversion.
How Echobox Handles FLAC Playback
Most players hand audio off to the OS and hope for the best. We don’t. Echobox manages the entire playback pipeline from decode to output, because every handoff to the OS is a chance for something to go wrong.
Native Decoding
We decode FLAC files using the Symphonia library, which handles the full range of FLAC sample rates — from standard 44.1 kHz up to 384 kHz. The decoder outputs raw audio samples which are then converted to 32-bit floating point for internal processing. This 32-bit float representation provides approximately 24 bits of mantissa precision (around 144 dB of dynamic range), which exceeds the precision of any source material you’re likely to encounter.
Preserving Sample Rate and Bit Depth
Rather than blindly outputting at whatever rate the OS defaults to, Echobox queries the device’s native sample rate and makes an intelligent decision:
- If your FLAC file matches the device rate (e.g., 48 kHz file on a 48 kHz device), the audio passes through with zero resampling. This is the ideal scenario.
- If the rates differ (e.g., a 44.1 kHz CD-rip on a typical 48 kHz Android device), we resample using a high-quality sinc interpolation algorithm with a 256-tap FIR filter and a BlackmanHarris window. This is a significantly better resampler than what most operating systems use internally.
- For hi-res audio files at 96 kHz or 192 kHz, the same high-quality resampler brings the rate down to match the device, preserving all audible frequency content.
The critical advantage: by handling resampling ourselves, we avoid the hidden double-resampling that happens when an app outputs at one rate and Android’s AudioFlinger converts it to another. You get one clean conversion instead of two stacked ones.
Bit-Perfect Output
For listeners with external USB DACs, Echobox offers a bit-perfect mode that changes the equation entirely. In this mode:
- The device is reinitialized at the track’s native sample rate — so a 44.1 kHz FLAC plays at exactly 44.1 kHz, and a 96 kHz hi-res file plays at 96 kHz.
- The entire DSP processing chain (EQ, volume, gain, limiter) is bypassed. Raw decoded samples go straight to the DAC.
- No resampling occurs whatsoever. The bits that the artist and mastering engineer approved are the bits your DAC receives.
This requires a DAC that supports the target sample rate, but most modern USB DACs handle 44.1, 48, 88.2, 96, 176.4, and 192 kHz without issue.
Signal Path Diagnostics
One of the most useful features for FLAC playback is Echobox’s signal path display. It shows you exactly what’s happening to your audio at every stage: the source format and sample rate, whether resampling is active, what DSP processing is applied, and the final output rate to your device.
You never have to wonder whether your FLAC file is being played back correctly. You can see, in real time, that your 44.1 kHz/24-bit FLAC is being resampled to 48 kHz with a high-quality sinc filter — or that your DAC is receiving bit-perfect 96 kHz output with no processing applied.
If you’ve ever questioned whether your “lossless” audio is actually reaching your ears intact, that kind of transparency matters.
Streaming to Network Devices
Echobox also handles FLAC when streaming to network speakers and receivers via UPnP/DLNA. Most modern network receivers — including Chromecast, Denon, and Yamaha AV receivers — support FLAC natively. Echobox detects each device’s capabilities and sends the FLAC file directly when possible, or automatically transcodes to a compatible format when necessary.
For more on how Bluetooth audio codecs affect your listening experience over wireless connections, or what to look for in an audiophile music player, see our dedicated guides. You can also check our roadmap for platform availability beyond Android.
The Bottom Line
FLAC is the format that makes the fewest promises and keeps all of them. It doesn’t claim to sound better than the source — it claims to sound exactly like the source, and it does. Files are 3-5x larger than MP3 (a typical 4-minute song runs 30-50 MB), and most people can’t reliably tell the difference from a well-encoded 320 kbps MP3 in casual listening. Be honest with yourself about your equipment and environment. But FLAC isn’t really about today’s listening session — it’s about never having to re-buy or re-rip your music because you chose a format that threw away data you might want later. Android supports it natively (though the system mixer may resample your audio), iOS requires a third-party app or conversion to ALAC, and Echobox handles the whole pipeline — native decoding, high-quality resampling, bit-perfect output to USB DACs, and signal path diagnostics so you can verify exactly what’s happening to your audio at every stage.