Compress CAF Online — Free File Size Reducer
Compress a CAF file into a smaller CAF by re-encoding its audio stream with a lossy or lossless codec while keeping the Apple-native container intact. This is particularly useful for reducing the size of uncompressed PCM audio (such as pcm_s16le or pcm_s24le) stored in CAF files by switching to AAC, Opus, or FLAC within the same container.
to
FFmpeg Command
Copy this command to run the same conversion locally with FFmpeg on your desktop. Download FFmpeg
Drop your CAF 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
Because the input and output are both CAF containers, no container remuxing takes place — the operation is purely a codec transcode. The tool reads the existing audio stream (commonly uncompressed PCM, which is CAF's default codec) and re-encodes it to the target codec specified in the command, such as pcm_s16le at a controlled bitrate. If the source is already PCM and the target is a lossy codec like AAC or Opus, the audio is decoded and re-encoded with perceptual compression, permanently discarding inaudible frequency data to achieve smaller file sizes. If the target is FLAC, the audio is compressed losslessly — all samples are preserved perfectly, but file size reduction is more modest. The CAF wrapper is written fresh around the new stream, preserving CAF's structural advantages like large file support and chunk-based metadata.
What Each Flag Does
| Flag | What it does |
|---|---|
ffmpeg
|
Invokes the FFmpeg binary. In the browser-based version of this tool, this runs as FFmpeg.wasm compiled to WebAssembly, executing entirely within your browser tab with no server involvement. |
-i input.caf
|
Specifies the input CAF file. FFmpeg automatically detects the CAF container and probes the internal audio codec (which could be any of CAF's supported codecs, such as pcm_s24le, AAC, or FLAC) before beginning the transcode. |
-c:a pcm_s16le
|
Sets the output audio codec to signed 16-bit little-endian PCM — the standard CD-quality uncompressed format and CAF's own default codec. This re-encodes the audio stream regardless of the source codec, converting higher bit-depth formats like pcm_s32le or pcm_f32le down to 16-bit. |
-b:a 128k
|
Targets an audio bitrate of 128 kilobits per second. For the default pcm_s16le codec this flag has no practical effect (PCM bitrate is determined solely by sample rate and channel count), but it becomes significant if you substitute a lossy codec like AAC or Opus in the command. |
output.caf
|
Defines the output file as a CAF container. FFmpeg uses the .caf extension to select the CAF muxer, which writes the re-encoded pcm_s16le audio stream into a new, valid Core Audio Format file compatible with macOS, iOS, and any Core Audio-aware application. |
Common Use Cases
- Reduce the size of a large uncompressed CAF recording from Logic Pro or GarageBand before archiving or sharing with collaborators on lower-storage devices.
- Convert a raw PCM CAF capture from Core Audio on macOS to an AAC-encoded CAF to shrink podcast or voiceover sessions while staying in the Apple ecosystem.
- Compress multi-hour field recordings stored as uncompressed CAF files from an iOS audio app into FLAC-within-CAF for lossless archival at roughly half the original size.
- Prepare CAF audio assets for use in an Apple platform app by re-encoding to a lower-bitrate AAC CAF, reducing the app bundle's audio asset footprint.
- Batch-reduce the bitrate of a library of CAF sound effects exported from Final Cut Pro before distributing them to a team working on bandwidth-constrained networks.
- Transcode a 32-bit float PCM CAF (pcm_f32le) down to 16-bit PCM CAF to meet compatibility requirements for legacy Core Audio workflows that do not handle floating-point samples.
Frequently Asked Questions
The container format and file extension remain .caf, so any Apple application that reads CAF files will continue to open the result. However, if you switch from a lossless codec (like pcm_s16le or FLAC) to a lossy one (like AAC or Opus), the audio quality is irreversibly reduced — the waveform will not be bit-identical to the original even if the difference is inaudible. The internal codec tag embedded in the CAF chunk headers will change to reflect the new codec.
AAC is a lossy codec that achieves very high compression ratios (a 200 MB PCM CAF might become 10–20 MB at 128k), but some audio data is permanently discarded through psychoacoustic modelling. FLAC is lossless — every sample is perfectly preserved — but the compression ratio is lower, typically reducing uncompressed PCM by 40–60%. Choose FLAC when bit-perfect fidelity is required (mastering, archival) and AAC when file size is the priority (distribution, streaming, app assets).
CAF with PCM, AAC, or FLAC audio is natively supported by Apple's Core Audio framework on both macOS and iOS. Codecs like Opus (libopus) and Vorbis (libvorbis) inside a CAF container are not natively supported by Core Audio and may fail to play in QuickTime Player, GarageBand, or Logic Pro — those are better suited for cross-platform workflows requiring open codecs. If Apple-native playback is your goal, stick to AAC, FLAC, or PCM variants.
Replace 'pcm_s16le' in '-c:a pcm_s16le' with your desired codec, such as 'aac', 'flac', 'libopus', or 'pcm_s24le'. Then adjust '-b:a 128k' to your target bitrate (e.g., '64k', '192k', '320k'). Note that bitrate has no effect on lossless codecs like FLAC or PCM — for those, simply omit '-b:a' entirely. For example, to produce a high-quality AAC CAF: ffmpeg -i input.caf -c:a aac -b:a 256k output.caf
Yes. In a Unix shell (macOS Terminal), you can loop over all CAF files in a directory: for f in *.caf; do ffmpeg -i "$f" -c:a pcm_s16le -b:a 128k "compressed_${f}"; done. On Windows Command Prompt, use: for %f in (*.caf) do ffmpeg -i "%f" -c:a pcm_s16le -b:a 128k "compressed_%f". This processes each file sequentially, producing a new compressed output alongside the original.
CAF uses a chunk-based structure where metadata is stored in info and MIDI chunks. FFmpeg will attempt to copy recognized metadata tags to the output CAF, but not all CAF-specific chunk types are fully supported by FFmpeg's CAF muxer, so some metadata fields may be lost. The audio sample rate and channel layout are preserved because they are encoded in the audio stream header. If metadata fidelity is critical, verify the output with a tool like afinfo (macOS) after conversion.
Technical Notes
CAF (Core Audio Format) is unique among audio containers in that it supports both uncompressed PCM at any bit depth and a wide variety of compressed codecs within the same .caf wrapper, all while removing the 4 GB file size ceiling that limits WAV and AIFF. When performing a CAF-to-CAF compression, FFmpeg must fully decode the source stream and re-encode it — there is no stream copy shortcut available when changing codecs. The default codec used by this tool is pcm_s16le (signed 16-bit little-endian PCM), which is uncompressed and lossless but produces larger files than lossy alternatives. The '-b:a' bitrate parameter only meaningfully applies to variable-bitrate-capable lossy codecs like AAC, Opus, and Vorbis; it is ignored by PCM and has limited effect on FLAC (which is constrained by source material entropy rather than a target bitrate). A known limitation is that FFmpeg's CAF muxer does not support writing all codec types that Apple's own Core Audio framework supports — notably, Apple Lossless (ALAC) cannot currently be written into a CAF container via FFmpeg, even though it can be read. For maximum Apple compatibility in the output, AAC or PCM variants are the safest choices. Multi-channel audio (beyond stereo) may require explicit channel mapping flags if the source contains more than two channels.