Convert AAC to FLAC — Free Online Tool
Convert AAC audio files to FLAC losslessly in your browser — no uploads, no quality loss beyond what was already introduced by AAC encoding. The FLAC codec preserves every bit of the decoded AAC audio in a mathematically lossless compressed container, making it ideal for archiving or editing AAC content at its maximum recoverable quality.
to
FFmpeg Command
Copy this command to run the same conversion locally with FFmpeg on your desktop. Download FFmpeg
Drop your AAC file here
or click to browse
Free — no uploads, no signups. Your files never leave your browser.
Settings
Note: Browser-based encoding uses approximate quality targets. For precise CRF compression, copy the FFmpeg command above and run it on your desktop.
Estimated output:
Conversion Complete!
DownloadHow It Works
AAC is a lossy format, meaning audio data was permanently discarded when the AAC file was originally created. During this conversion, FFmpeg decodes the AAC bitstream back to raw PCM audio, then re-encodes it using the FLAC codec — a lossless compression algorithm. The resulting FLAC file is a perfect, bit-for-bit representation of the decoded AAC audio; no further quality is lost in the conversion itself. However, the original lossy compression artifacts from the AAC encode remain baked into the audio. File sizes will typically increase significantly because FLAC does not throw away audio data to achieve compression — it uses a mathematically reversible algorithm instead.
What Each Flag Does
| Flag | What it does |
|---|---|
ffmpeg
|
Invokes the FFmpeg command-line tool, the underlying engine powering this browser-based converter via its WebAssembly build (FFmpeg.wasm). |
-i input.aac
|
Specifies the input file — an AAC audio file. FFmpeg automatically detects the ADTS stream format and selects the appropriate AAC decoder to demux and decode the audio. |
-c:a flac
|
Instructs FFmpeg to encode the decoded AAC audio using the native FLAC encoder, producing a lossless output that captures the full decoded PCM signal without any further quality reduction. |
-compression_level 5
|
Sets FLAC's compression effort to level 5 (the format default), which balances encoding speed and output file size. This does not affect audio quality — all FLAC compression levels decode to identical PCM audio. |
output.flac
|
Defines the output filename. The .flac extension signals FFmpeg to wrap the encoded FLAC audio stream in a native FLAC container, complete with the STREAMINFO metadata block required by the FLAC specification. |
Common Use Cases
- Archiving AAC audio from iTunes purchases or Apple Music exports into a lossless container so the decoded audio is preserved exactly without any further generation loss if you re-edit or re-export the file
- Preparing AAC podcast recordings or voice memos for editing in a DAW that works best with lossless formats like Audacity or Logic Pro, eliminating re-encoding artifacts during the edit cycle
- Converting AAC audiobook files to FLAC so they can be ingested into a library management system like Beets or MusicBrainz Picard that prefers lossless formats for tagging and organization
- Creating a FLAC master from an AAC source file before applying audio processing chains (EQ, normalization, noise reduction) that would otherwise stack lossy-encoding degradation on each save
- Extracting and archiving AAC audio tracks from app-downloaded content to FLAC for long-term storage on a NAS or media server running Plex or Jellyfin, which natively supports FLAC
- Converting AAC files received from a collaborator into FLAC so they can be mixed alongside other lossless stems in a project without container or codec mismatch issues
Frequently Asked Questions
No — and this is a common misunderstanding. AAC is a lossy format, so audio information was permanently discarded when the file was first encoded. Converting to FLAC does not restore that lost data. What FLAC guarantees is that no additional quality is lost beyond what was already removed by the AAC encoder. Think of FLAC here as a lossless container for a lossy-origin signal: the decoded AAC audio is preserved perfectly, but the original encoding artifacts (compression smearing, high-frequency rolloff) remain unchanged.
AAC achieves its small file size by permanently discarding audio data the encoder deems perceptually irrelevant. FLAC, by contrast, compresses audio losslessly — it keeps all audio information and uses a reversible algorithm similar in principle to ZIP. Because FLAC cannot throw data away, the decoded PCM audio it must represent is far larger than the compact AAC bitstream. A 128 kbps AAC file converted to FLAC at compression level 5 will typically balloon to 5–10x the original size depending on the audio content, dynamic range, and sample rate.
AAC files store metadata in iTunes-style MP4 atom tags, while FLAC uses Vorbis comment blocks. FFmpeg will attempt to map common tags (title, artist, album, track number, date) from the AAC container to FLAC's Vorbis comment format during conversion. However, some iTunes-specific tags such as podcast flags, gapless playback data, or proprietary Apple metadata may not transfer cleanly. It is worth inspecting the output FLAC with a tag editor like Mp3tag or Kid3 after conversion.
The -compression_level flag in FLAC controls how aggressively the encoder tries to reduce file size, on a scale from 0 (fastest, largest file) to 8 (slowest, smallest file). Critically, it has absolutely no effect on audio quality — all compression levels produce bit-identical decoded audio. Level 5 is the FLAC reference encoder's default and offers a well-balanced trade-off between encoding speed and file size. Unless you are encoding thousands of files and need speed (use 0–2) or are optimizing for storage on an archive drive (use 8), level 5 is the right choice.
To change the compression level, replace the 5 in -compression_level 5 with any integer from 0 to 8, for example: ffmpeg -i input.aac -c:a flac -compression_level 8 output.flac. To batch-convert all AAC files in a directory on Linux or macOS, use a shell loop: for f in *.aac; do ffmpeg -i "$f" -c:a flac -compression_level 5 "${f%.aac}.flac"; done. On Windows Command Prompt, use: for %f in (*.aac) do ffmpeg -i "%f" -c:a flac -compression_level 5 "%~nf.flac".
Not necessarily. AAC has near-universal support on Apple devices, Android, and streaming platforms, partly because it is the default format for iTunes and iOS. FLAC support, while now widespread, is still absent from iTunes and Apple's native playback stack on older macOS and iOS versions. Android has natively supported FLAC since version 3.1. Dedicated music players like VLC, foobar2000, and most Hi-Fi streamers support FLAC without issue. If your target playback device is an Apple ecosystem device, verify FLAC compatibility before committing to the conversion.
Technical Notes
AAC audio typically uses the AAC-LC (Low Complexity) profile and can be stored in either an ADTS stream (raw .aac file) or within an MP4/M4A container. When FFmpeg reads a raw .aac file, it demuxes the ADTS stream and decodes it to 16-bit or 24-bit PCM depending on the source sample depth before handing it to the FLAC encoder. FLAC supports up to 32-bit integer PCM and sample rates up to 655,350 Hz, so it can represent any decoded AAC signal without truncation. The FLAC encoder used by FFmpeg is the native flac codec (not an external library), which is fully specification-compliant. One known limitation: if the source AAC file uses parametric stereo or spectral band replication (common in HE-AAC and HE-AACv2 profiles at low bitrates like 64 kbps), FFmpeg may not fully decode these profiles correctly with the built-in AAC decoder — using libfdk_aac for decoding via a custom FFmpeg build would improve accuracy in those cases. For standard AAC-LC files at 128 kbps and above, the native decoder is fully reliable.