Convert MP3 to CAF — Free Online Tool

Convert MP3 files to Apple's Core Audio Format (CAF) with PCM 16-bit linear audio, producing an uncompressed audio stream inside Apple's flexible container. This is ideal for importing high-quality audio assets into macOS and iOS development workflows, where CAF's large file support and native Apple toolchain integration outperform older formats like AIFF.

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

MP3 audio is a lossy compressed format encoded with the MPEG Layer III codec. During this conversion, FFmpeg decodes the MP3 bitstream back into raw PCM audio samples, then re-encodes those samples as 16-bit signed little-endian PCM (pcm_s16le) and wraps them in a CAF container. Because CAF's default codec is uncompressed PCM, the output file will be significantly larger than the source MP3 — the compressed audio is expanded to full uncompressed form. The decoded audio quality is bounded by the original MP3's lossy compression; any artifacts introduced during MP3 encoding are preserved in the output, since the PCM stage captures exactly what the MP3 decoder produces. No video or subtitle streams are involved, as both formats are audio-only containers.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg binary, the open-source multimedia processing engine that handles decoding the MP3 input, converting the audio stream, and writing the CAF output — all running here via FFmpeg.wasm directly in your browser.
-i input.mp3 Specifies the input file, an MP3 encoded with the MPEG Layer III (libmp3lame) codec. FFmpeg reads and fully decodes this compressed bitstream into raw PCM samples before passing them to the output encoder.
-c:a pcm_s16le Sets the audio codec for the output to 16-bit signed little-endian PCM, the uncompressed format that Apple Core Audio APIs natively read from CAF containers. This expands the compressed MP3 audio into its full uncompressed waveform representation.
-b:a 128k Specifies a target audio bitrate of 128 kbps. For uncompressed PCM codecs like pcm_s16le this parameter has no practical effect — the actual bitrate is determined by the sample rate and bit depth — but it is included by the tool for consistency with the format's quality parameter convention.
output.caf Defines the output filename and tells FFmpeg to wrap the PCM audio stream in Apple's Core Audio Format container, which is identified by the .caf extension and supports large file sizes and multiple audio codecs within the Apple ecosystem.

Common Use Cases

  • Preparing audio assets for an iOS or macOS app using Xcode, where CAF is the recommended container for bundled sound effects and music due to native AVFoundation support
  • Importing MP3 music or voice recordings into Logic Pro or GarageBand on Mac, which can read CAF files directly without additional codec plugins
  • Converting MP3 podcast recordings or interviews into uncompressed CAF for further audio editing in Core Audio-based tools without introducing additional lossy re-compression artifacts
  • Delivering audio to a game developer building a macOS or iOS title who requires CAF-wrapped PCM for use with Apple's Audio Queue Services or AVAudioPlayer
  • Archiving an MP3 collection in uncompressed PCM form inside CAF containers for long-term storage on Apple ecosystem NAS or Time Machine backups without relying on lossy codecs
  • Providing a sound designer working in Apple's ecosystem with a format that supports very large file sizes, bypassing the 4GB cap that would limit equivalent WAV files

Frequently Asked Questions

No. The conversion decodes the MP3's lossy audio into raw PCM samples, but the quality ceiling is set permanently by the original MP3 encoding. Any compression artifacts — such as high-frequency rolloff or pre-echo from the MPEG Layer III encoder — are baked into the waveform that gets written into the CAF file. The PCM output is a faithful, uncompressed representation of what the MP3 decoder produced, not a restoration of the original pre-compression audio.
MP3 compresses audio using perceptual lossy coding, typically achieving file sizes 10–12 times smaller than uncompressed audio. When FFmpeg decodes that MP3 and writes 16-bit PCM into the CAF container, it stores every audio sample in full with no compression. For example, a 5 MB MP3 at 128 kbps can expand to roughly 50–60 MB as 16-bit stereo PCM at 44.1 kHz in CAF. This is expected behavior — the CAF file is uncompressed by design in this conversion.
ID3 tags from the MP3 may not transfer cleanly into the CAF container, because CAF uses Apple's own metadata chunk format rather than ID3. FFmpeg will attempt to map common tags like title, artist, and album into CAF's metadata chunks, but some custom or extended ID3 fields may be silently dropped. If metadata preservation is critical, verify the output file's tags in a tool like MediaInfo or ffprobe after conversion.
CAF is an Apple-specific container and is not natively supported on Windows, Linux, or Android. While FFmpeg and some open-source libraries can read CAF files on those platforms, mainstream media players, browsers, and audio software outside the Apple ecosystem typically cannot open CAF without additional codec support. If you need broad compatibility with uncompressed audio, WAV or AIFF would be more appropriate output formats.
The default command uses uncompressed PCM, but CAF also supports AAC and other codecs. To encode with AAC instead, replace '-c:a pcm_s16le' with '-c:a aac' and set a bitrate with '-b:a 192k', giving: 'ffmpeg -i input.mp3 -c:a aac -b:a 192k output.caf'. If you want higher-resolution uncompressed audio, swap pcm_s16le for pcm_s24le or pcm_s32le, though this will not recover detail lost during MP3 encoding.
Yes, on macOS or Linux you can wrap the command in a shell loop: 'for f in *.mp3; do ffmpeg -i "$f" -c:a pcm_s16le "${f%.mp3}.caf"; done'. On Windows Command Prompt, use: 'for %f in (*.mp3) do ffmpeg -i "%f" -c:a pcm_s16le "%~nf.caf"'. Each MP3 in the folder will be decoded and written as a separate uncompressed CAF file. Note that batch processing large libraries will require significant disk space given the size expansion from lossy to uncompressed PCM.

Technical Notes

The pcm_s16le codec used in this conversion produces 16-bit signed integers in little-endian byte order, which is the standard PCM format compatible with all Apple Core Audio APIs. CAF's container design removes the 4 GB file size limitation of AIFF and WAV, making it suitable for very long-duration recordings at high sample rates. The source MP3's sample rate (commonly 44.1 kHz or 48 kHz) and channel layout (mono or stereo) are preserved through the decode-encode chain unless explicitly overridden with FFmpeg flags like '-ar' or '-ac'. One important limitation: MP3 frames use a lossy encoding that introduces a small amount of encoder delay at the start of the stream; this silence artifact is decoded into the PCM samples and will appear in the CAF output. For sample-accurate looping or precise audio alignment in game engines or DAWs, this leading silence may need to be trimmed. FFmpeg does not apply any dithering or noise shaping during the float-to-int16 quantization step by default, so users working in professional audio contexts may want to add '-af aresample=resampler=soxr' to enable higher-quality resampling if the sample rate is being changed alongside this conversion.

Related Tools