Extract Audio from MP4 to CAF — Free Online Tool
Extract audio from an MP4 video and save it as a CAF file using Apple's Core Audio Format container with uncompressed PCM audio. This tool is ideal for macOS and iOS workflows where you need lossless-quality audio extraction compatible with Core Audio, GarageBand, Logic Pro, and other Apple audio tools.
to
FFmpeg Command
Copy this command to run the same conversion locally with FFmpeg on your desktop. Download FFmpeg
Drop your MP4 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
During this conversion, FFmpeg discards the MP4's video stream entirely and extracts only the audio. The AAC or MP3 audio encoded inside the MP4 is not simply copied — it is decoded and then re-encoded as 16-bit signed little-endian PCM (pcm_s16le), which is uncompressed raw audio. This re-encoding step ensures maximum compatibility within the CAF container, since pcm_s16le is CAF's default and most universally supported codec in Apple's Core Audio stack. The result is a losslessly uncompressed representation of the original audio, though any quality ceiling introduced by the MP4's original lossy codec (typically AAC at 128k) is preserved — the PCM output is lossless in format but not a recovery of the original pre-compression audio.
What Each Flag Does
| Flag | What it does |
|---|---|
ffmpeg
|
Invokes the FFmpeg tool. In the browser version of this tool, FFmpeg runs locally via WebAssembly (FFmpeg.wasm) — no data leaves your machine. The same command runs identically in a desktop terminal for files over 1GB. |
-i input.mp4
|
Specifies the input MP4 file. FFmpeg reads the MP4 container and identifies all streams inside — typically a video stream (often H.264) and one or more audio streams (often AAC). Both will be examined, but only the audio stream proceeds through the rest of this command. |
-vn
|
Disables video output entirely. This is required because CAF is a pure audio container with no video codec support — without this flag, FFmpeg would attempt to include the MP4's video stream and fail. This flag ensures only the audio track is processed. |
-c:a pcm_s16le
|
Decodes the MP4's audio track (typically AAC) and re-encodes it as 16-bit signed little-endian PCM — an uncompressed audio format and the default codec for CAF in Apple's Core Audio stack. This produces lossless-format output fully compatible with GarageBand, Logic Pro, and Core Audio APIs. |
-b:a 128k
|
Specifies a target audio bitrate of 128 kbps. For PCM codecs like pcm_s16le, this flag has no effect — PCM bitrate is fixed by sample rate and bit depth rather than a compression target. It is inherited from the default command template and can safely be omitted when working with PCM output. |
output.caf
|
Defines the output filename and triggers FFmpeg to use the CAF (Core Audio Format) container based on the .caf extension. The resulting file is an Apple-native audio container holding uncompressed PCM audio, ready for use in macOS and iOS audio workflows. |
Common Use Cases
- Extracting a voiceover track from an MP4 screen recording to import into GarageBand or Logic Pro for further audio editing on macOS
- Pulling dialogue audio from an MP4 video clip to use as an uncompressed source in Final Cut Pro's audio timeline via CAF import
- Stripping audio from an MP4 interview recording to produce a high-compatibility CAF file for use in Apple's Core Audio development and testing workflows
- Converting MP4 audio to CAF as an intermediate uncompressed format before re-encoding to ALAC or AAC for Apple device distribution
- Extracting audio from large MP4 files (up to 1GB) locally in the browser without uploading sensitive video footage to any server, then using the displayed FFmpeg command to process larger files via the desktop CLI
Frequently Asked Questions
The PCM output is uncompressed and introduces no additional lossy compression, but the conversion does not recover quality lost during the MP4's original encoding. If the MP4's audio track was AAC at 128k, that lossy compression already occurred — decoding it to PCM produces a lossless-format file that still reflects the original AAC quality ceiling. Think of it as freezing the current audio quality in an uncompressed container rather than restoring it.
CAF with pcm_s16le stores uncompressed audio — every sample is written at full bit depth with no compression. A typical AAC-encoded MP4 audio track might use 128 kbps, while pcm_s16le at 44.1kHz stereo uses roughly 1,411 kbps. That is approximately an 11x increase in audio data size. This tradeoff is intentional when you need a lossless-format source for further processing in Apple audio tools.
CAF is an Apple-native format and has limited support outside the Apple ecosystem. While FFmpeg itself can read CAF files on any platform, mainstream media players and audio editors on Windows or Linux may not open CAF natively. If cross-platform compatibility is needed, consider extracting to WAV or FLAC instead, both of which carry similar uncompressed or lossless audio.
CAF supports a limited metadata chunk (the 'info' chunk), but FFmpeg's MP4-to-CAF pipeline does not reliably map iTunes-style MP4 metadata tags into the CAF container. Metadata such as title, artist, and album embedded in the MP4 will likely be dropped in the output. If preserving metadata is critical, you should embed it manually after conversion using a tool like mp4tags or a dedicated audio tag editor.
By default, FFmpeg selects the first (default) audio stream in the MP4. CAF does not support multiple audio tracks in a single file, so only one stream can be output. If your MP4 has multiple audio tracks (for example, stereo and surround), you can specify which one to extract by adding '-map 0:a:1' to the command to select the second audio track, replacing '1' with the index of your desired track.
To change the sample rate, add '-ar 44100' (or '-ar 48000', etc.) before the output filename. To change the bit depth, replace 'pcm_s16le' with another PCM codec supported by CAF — for example, 'pcm_s24le' for 24-bit or 'pcm_s32le' for 32-bit. A full command for 24-bit at 48kHz would be: ffmpeg -i input.mp4 -vn -c:a pcm_s24le -ar 48000 output.caf. Note that the '-b:a' bitrate flag has no effect on uncompressed PCM codecs and can be omitted for clarity.
On macOS or Linux, you can batch process using a shell loop: 'for f in *.mp4; do ffmpeg -i "$f" -vn -c:a pcm_s16le "${f%.mp4}.caf"; done'. This iterates over all MP4 files in the current directory and produces a matching CAF file for each. On Windows Command Prompt, use: 'for %f in (*.mp4) do ffmpeg -i "%f" -vn -c:a pcm_s16le "%~nf.caf"'. The browser-based tool processes one file at a time, so the CLI command is especially useful for bulk conversions.
Technical Notes
CAF's default codec in this conversion is pcm_s16le — 16-bit signed integer PCM stored in little-endian byte order — which aligns with Core Audio's native sample format on Apple Silicon and Intel Macs. CAF was designed to overcome the 4GB file size limit of WAV and AIFF, making it appropriate for very long uncompressed audio recordings. The '-vn' flag is essential here because CAF has no video codec support whatsoever; without it, FFmpeg would attempt to map the video stream and fail. The '-b:a 128k' flag in the base command has no practical effect on PCM codecs since PCM bitrate is determined entirely by sample rate and bit depth, not a compression target — it is safe to omit or ignore for PCM output. If the MP4's audio was encoded with libopus or libvorbis (less common but possible), the same decode-to-PCM process applies. CAF also supports FLAC, AAC, and Opus codecs natively if you prefer a compressed output — replacing 'pcm_s16le' with 'flac' in the command would yield lossless compression with significantly smaller file sizes while remaining within the CAF container.