Convert AAC to CAF — Free Online Tool

Convert AAC audio files to Apple's Core Audio Format (CAF) with PCM audio, producing uncompressed 16-bit audio suitable for use in macOS and iOS development environments. This tool decodes your lossy AAC source and outputs a lossless PCM_S16LE stream inside a CAF container — ideal when Apple's native toolchain requires uncompressed audio.

FFmpeg Command

Copy this command to run the same conversion locally with FFmpeg on your desktop. Download FFmpeg

Free — no uploads, no signups. Your files never leave your browser.

Estimated output:

Conversion Complete!

Download

How It Works

AAC is a lossy compressed format, meaning audio data has already been permanently discarded during its original encoding. When converting to CAF, FFmpeg decodes the AAC bitstream back to raw PCM audio and then re-encodes it as uncompressed 16-bit signed little-endian PCM (pcm_s16le) inside the CAF container. This is not a lossless round-trip — any quality loss introduced when the AAC was originally created is baked in — but from this point forward, no additional compression artifacts are introduced. The resulting CAF file will be significantly larger than the AAC source because PCM audio is uncompressed: a 3-minute AAC file at 128k (~3MB) will expand to roughly 30MB as 16-bit stereo PCM at 44.1kHz in CAF.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg command-line tool. In this browser-based tool, the same FFmpeg engine runs locally in your browser via WebAssembly (FFmpeg.wasm), so no files leave your machine.
-i input.aac Specifies the input AAC file. FFmpeg detects the AAC container and audio codec automatically, preparing to decode the compressed AAC bitstream into raw PCM for further processing.
-c:a pcm_s16le Sets the output audio codec to 16-bit signed little-endian PCM. This decodes the lossy AAC audio into uncompressed samples, which are then stored inside the CAF container — the most common PCM format used in Apple development toolchains.
-b:a 128k Specifies a target audio bitrate of 128 kbps. For the pcm_s16le codec used here, this flag has no practical effect since uncompressed PCM has a fixed bitrate determined entirely by sample rate and bit depth — it is included for command consistency but is effectively ignored.
output.caf Defines the output file as a CAF (Core Audio Format) file. FFmpeg infers the CAF container from the '.caf' extension and muxes the decoded PCM audio stream into Apple's CAF format, which supports large files and is natively compatible with macOS and iOS audio APIs.

Common Use Cases

  • Preparing audio assets for Xcode projects where CAF is the preferred format for iOS and macOS app sound effects and UI audio
  • Supplying uncompressed audio to Logic Pro or GarageBand workflows that require a CAF-wrapped PCM source rather than compressed AAC
  • Converting AAC podcast recordings to CAF for use with Apple's AVFoundation framework during audio processing pipelines on macOS
  • Decompressing AAC audio downloaded from iTunes or Apple Music backups into an editable, uncompressed CAF file for archiving or re-mastering
  • Providing CAF audio assets to Core Audio APIs on macOS that expect PCM data and do not handle AAC decoding internally in certain contexts
  • Expanding an AAC sound library into lossless-container CAF files to avoid repeated lossy re-encoding during iterative audio editing sessions

Frequently Asked Questions

No. AAC is a lossy format, so the compression artifacts introduced when the AAC was originally encoded are permanent. Converting to CAF with pcm_s16le simply decompresses the AAC and stores the result as uncompressed PCM — it preserves whatever quality exists in the AAC file but cannot recover the audio data that was discarded during the original AAC encoding. Think of it as unfolding a crumpled piece of paper: it becomes flat again, but the original creases remain.
AAC compresses audio aggressively, often achieving file sizes 10–15 times smaller than uncompressed audio. The output CAF file uses pcm_s16le, which stores every audio sample without compression. A stereo 44.1kHz 16-bit PCM stream consumes approximately 10MB per minute, so a 3-minute AAC file around 3MB will become roughly 30MB in CAF. This size increase is expected and is the nature of storing uncompressed audio.
Yes, CAF supports AAC as a codec alongside PCM. The FFmpeg command would change to use '-c:a aac' instead of '-c:a pcm_s16le', and you could retain the original bitrate with '-b:a 128k'. However, this would involve decoding the AAC and re-encoding it as AAC again, introducing a second generation of lossy compression. If your goal is simply to wrap the audio in a CAF container without re-encoding, you could instead copy the stream with '-c:a copy', though AAC-in-CAF compatibility varies across Apple tools.
For uncompressed codecs like pcm_s16le, the '-b:a' bitrate flag has no meaningful effect. PCM audio has a fixed, mathematically determined bitrate based on sample rate, bit depth, and channel count — for 16-bit stereo at 44.1kHz it is always 1,411 kbps regardless of what value is passed. The flag is included in the command template for consistency across tools, but FFmpeg will effectively ignore it for PCM output.
To change the bit depth, swap 'pcm_s16le' for another PCM codec: 'pcm_s24le' gives 24-bit audio, and 'pcm_s32le' gives 32-bit. To change the sample rate, add '-ar 48000' (or whatever target rate you need) before the output filename. For example: 'ffmpeg -i input.aac -c:a pcm_s24le -ar 48000 output.caf' produces 24-bit PCM at 48kHz, which is common in professional audio and video production pipelines.
Metadata handling depends on the tags present in the AAC source and CAF's own metadata support. CAF uses a dedicated metadata chunk and supports a limited set of annotations compared to AAC's iTunSMPB and ID3/MP4 atom system. FFmpeg will attempt to map common metadata fields, but format-specific tags like iTunes-specific atoms may not transfer cleanly. If metadata preservation is critical, verify the output with a tool like 'ffprobe output.caf' after conversion.

Technical Notes

The conversion from AAC to CAF with pcm_s16le is essentially an asymmetric operation: the compressed AAC bitstream is fully decoded, and the resulting raw PCM samples are written into Apple's CAF container without any further compression. CAF was designed by Apple specifically to overcome the 4GB file size ceiling of AIFF and WAV, making it well-suited to very long audio recordings. The pcm_s16le codec produces 16-bit signed little-endian samples, which is the standard CD-quality bit depth; however, CAF natively uses big-endian byte ordering on Apple hardware, so FFmpeg correctly handles the byte-order for cross-platform compatibility. Because AAC in practice is typically encoded at 44.1kHz stereo, the output CAF will usually match those parameters unless you explicitly override them. One key limitation: since AAC does not support more than two channels in standard profiles (though HE-AAC and xHE-AAC extend this), multichannel upmixing is not possible from a standard AAC source. The '-b:a' flag from the command template is effectively a no-op for PCM output and can be omitted when running the command locally. Ensure you are using an FFmpeg build that supports the CAF muxer ('ffmpeg -formats | grep caf') as some minimal builds omit it.

Related Tools