M4A → FLAC
M4A to FLAC converter
An Apple Lossless M4A becomes a bit-identical FLAC. An AAC M4A can be stored as FLAC too, but that only preserves the lossy audio exactly — it does not make it lossless.
…or drag files and folders here. Add as many as you like — everything is processed on this device.
.caf .m4a .m4r .m4v .mp4
In one paragraph
The good reason to do this is an Apple Lossless library. ALAC and FLAC are both lossless, so moving between them changes nothing about the audio; what changes is where it plays. Android players, Plex, Jellyfin, car head units and most hi-fi streamers read FLAC everywhere, while ALAC support outside Apple is patchy. FLAC also tends to come out a little smaller.
Sonic Batch decodes the M4A with FFmpeg’s ALAC or AAC decoder inside your browser and encodes with the native FLAC encoder, which stores an MD5 of the samples in the file. Each queue row names the codec once the engine has read the file, and an AAC source carries a lossy-source warning, so an AAC track hiding in an ALAC album is obvious rather than silently “upgraded”.
Does this change the audio quality?
From Apple Lossless this is bit-exact when the bit depth matches the source: the FLAC decodes to the same samples the ALAC did. From AAC, every decoded sample is kept, but AAC discarded information when it was encoded and FLAC cannot bring it back.
- Set Bit depth to 24 for 24-bit ALAC sources. Writing a 24-bit file at 16-bit is a real reduction and no longer bit-exact.
- An AAC M4A grows roughly 3–5× as FLAC with no gain in quality. Only do it if software requires FLAC.
- FairPlay-protected iTunes purchases cannot be decoded and are reported as unsupported.
A worked example
Moving an Apple Lossless library to an Android phone
- Drop an album folder into the queue and confirm the codec column reads ALAC on every track.
- Match the bit depth to the source — 16 for CD rips, 24 for hi-res purchases.
- Leave compression level on 8 and Keep cover art on, so artwork moves into the FLAC picture block.
- Convert all and download the ZIP; the manifest lists the size of every file before and after.
Match the source bit depth and use level 8
Read the bit depth in the file panel and mirror it: 16-bit for anything ripped from CD, 24-bit for studio or hi-res releases. Leave the sample rate on “Same as source”. Compression level only trades encoding time for file size — every level decodes to identical audio — and 8 is the smallest widely supported setting. For an AAC M4A, 16-bit is enough to hold everything the decoder produces.
Supported formats, limits and browser notes
Sonic Batch decodes with the browser when it can (faster, no engine download) and falls back to the self-hosted WebAssembly engine when it cannot. Every combination below works in every listed browser; the column only tells you which decoder does the work.
| Input | What it is | Chrome | Firefox | Safari | iOS |
|---|---|---|---|---|---|
| M4A | Apple’s default AAC container. Better quality than MP3 at the same bitrate. | Native | Native | Native | Native |
| M4R | An M4A file with a .m4r extension. iOS only lists it as a ringtone if it is ≤ 40 seconds. | Partial | Partial | Native | Native |
| MP4 | The standard video container. Its audio track is almost always AAC. | Native | Partial | Native | Native |
| CAF | Apple container used by older iOS Voice Memos. Usually holds ALAC, IMA4 or raw PCM. | Engine | Engine | Partial | Partial |
| Output | Encoder | Bitrates / depth | Sample rates | Tags |
|---|---|---|---|---|
| FLAC | flac | 16, 24-bit | 8–96 kHz | Yes + artwork |
- Max per file
- 400.0 MB
- Max per queue
- 4.00 GB
- Max duration
- 4:00:00
- Max archive
- 1.50 GB
These are enforced ceilings, checked before any decoding starts, not measured maximums — a file over the limit is rejected rather than allowed to exhaust the tab’s memory. Real-world capacity is lower on older phones, which is why the scheduler runs one file at a time on iOS and Safari.
Where your audio goes
Nowhere. Your file is read from disk into this browser tab with the File API, decoded and encoded by code running in that same tab, and handed back to you as a download. It is never transmitted.
That is a structural property of the application, not a policy promise: there are no API routes, no server actions and no third-party processing services in this project, so there is nothing capable of receiving a file. The page’s Content-Security-Policy also restricts connections to this origin, and the automated test suite includes a browser test that fails if any network request during import, preview, conversion or download carries media bytes.
The trade-off, stated plainly: results live in your tab’s memory until you download them. Closing or reloading the page discards them. There is nothing on a server to recover, because nothing was ever put there.
Troubleshooting
The FLAC is much bigger than the M4A.
The M4A was AAC, not Apple Lossless. FLAC stores the decoded audio sample for sample, which takes far more space than AAC’s lossy description. Check the codec column; for AAC sources, keeping the M4A is usually the better choice.
My 24-bit album came out 16-bit.
The bit depth control was on 16. Set it to 24 and convert again to keep the files bit-exact.
Some tags did not carry over.
Common fields — title, artist, album, track and disc number, year — map to Vorbis comments. iTunes-only fields such as ratings, play counts and sort overrides have no FLAC equivalent and are dropped.
Frequently asked questions
Is M4A to FLAC lossless?
For Apple Lossless M4A files, yes — the FLAC holds identical samples. For AAC M4A files the conversion itself adds no loss, but the result is still the lossy AAC audio in a bigger container.
How do I know whether my M4A is ALAC or AAC?
Add it to the queue and look at the bitrate in its row: ALAC runs at roughly 700–1,000 kbps for CD-quality stereo, AAC at 128–256 kbps. The row also names the codec once the engine has read the file.
Will cover art survive?
Yes, with Keep cover art switched on. The artwork in the M4A is copied into the FLAC picture block without being re-compressed.
Is anything uploaded?
No. Both the decoder and the FLAC encoder run as WebAssembly in your browser tab. The application has no upload endpoint.