Convert AU to CAF — Free Online Tool

Convert Sun AU audio files to Apple's Core Audio Format (CAF), transcoding the big-endian PCM audio common in AU files to little-endian PCM (pcm_s16le) that Apple's frameworks expect. Ideal for bringing legacy Unix audio into macOS and iOS development workflows.

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

AU files store audio as raw PCM data with a minimal header, most commonly in big-endian byte order (pcm_s16be) as defined by Sun Microsystems' original specification. CAF, Apple's modern container, uses little-endian PCM (pcm_s16le) as its default uncompressed format to align with x86 and ARM processor architectures used in Apple hardware. During this conversion, FFmpeg reads the AU container, decodes the big-endian 16-bit signed PCM samples, and re-encodes them as little-endian 16-bit signed PCM wrapped in a CAF container. Because both formats carry uncompressed PCM audio at the same bit depth (16-bit), there is no perceptible quality loss — the conversion is essentially a byte-order swap and container repackaging. No lossy compression is introduced at any stage.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg program, the open-source multimedia processing engine that powers this conversion both on the command line and inside the browser via FFmpeg.wasm (WebAssembly).
-i input.au Specifies the input AU file. FFmpeg reads the Sun AU header to determine the audio encoding (typically pcm_s16be, pcm_mulaw, or pcm_alaw), sample rate, and channel count before processing begins.
-c:a pcm_s16le Sets the output audio codec to 16-bit signed little-endian PCM, which is the default uncompressed audio format for CAF files and the byte order expected by Apple's Core Audio framework on x86 and ARM hardware.
-b:a 128k Specifies a target audio bitrate of 128 kbps. For uncompressed PCM codecs like pcm_s16le, FFmpeg does not apply this as a compression target — the actual bitrate is determined by the sample rate and channel count — but the flag is included for completeness and takes effect if you switch to a compressed codec like AAC.
output.caf Defines the output filename with the .caf extension, which instructs FFmpeg to write a Core Audio Format container. FFmpeg infers the CAF muxer from this extension and wraps the pcm_s16le audio stream in a valid CAF structure readable by macOS and iOS.

Common Use Cases

  • Importing legacy Sun workstation or NeXT audio samples into Logic Pro, GarageBand, or other Core Audio-based macOS applications that prefer or require CAF input
  • Preparing AU audio files recorded on early Unix systems for use in iOS app development, where AVFoundation natively reads CAF but not AU
  • Migrating an archive of early internet audio (ULAW or ALAW-encoded .au files from 1990s web pages) into CAF for long-term storage with better tool support on Apple platforms
  • Converting AU sound effects from Unix or Java applications into CAF for use in Xcode projects targeting macOS or tvOS
  • Re-packaging AU files produced by scientific or telephony equipment into CAF so they can be opened directly in macOS's QuickTime Player or Audio MIDI Setup without third-party codecs
  • Batch-converting a library of Sun AU test tones or reference signals into CAF for use with Apple's AudioUnit testing tools

Frequently Asked Questions

No, not with this conversion. The AU file's default codec is pcm_s16be (16-bit big-endian PCM) and the CAF output uses pcm_s16le (16-bit little-endian PCM). Both are uncompressed formats at the same bit depth, so no quantization or lossy compression is applied. The only change is the byte order of the samples and the surrounding container structure. The audio waveform is bit-for-bit identical in terms of precision.
Yes. FFmpeg supports pcm_mulaw (ULAW) and pcm_alaw (ALAW) as valid AU codecs, both of which were widely used in early internet audio and telephony. When the input AU file uses one of these compressed encodings, FFmpeg will decode it to raw PCM internally and then encode the output as pcm_s16le in CAF. This means the output CAF will be uncompressed and larger than the source AU file, but it will be fully compatible with Core Audio and will sound identical to the original within the fidelity limits of ULAW/ALAW encoding (which is itself lossy at 8-bit logarithmic compression).
If your AU source used a compressed codec like pcm_mulaw or pcm_alaw (common in old .au web audio), those formats achieve compression by encoding 16-bit audio into 8 bits using logarithmic scaling. The CAF output uses uncompressed pcm_s16le, which stores 16 bits per sample — roughly doubling the raw audio data size. If your AU file was already pcm_s16be, the file size should be nearly identical since both formats store 16 bits per sample with only the container overhead differing.
Yes. CAF is Apple's native audio container and is supported natively across macOS, iOS, tvOS, and watchOS through Core Audio and AVFoundation. A CAF file containing pcm_s16le audio — exactly what this tool produces — will open in QuickTime Player, play in AVPlayer, and load via AudioFile APIs in Xcode projects without requiring any additional codecs or libraries.
To use AAC instead of uncompressed PCM in the CAF container, replace '-c:a pcm_s16le' with '-c:a aac' and set a bitrate with '-b:a 128k' (or 192k, 256k, etc.). The full command would be: ffmpeg -i input.au -c:a aac -b:a 128k output.caf. CAF supports AAC natively, so this produces a smaller file at the cost of lossy compression. If you want higher-resolution uncompressed audio, substitute '-c:a pcm_s24le' or '-c:a pcm_s32le' — formats that CAF supports but AU does not.
On macOS or Linux, you can use a shell loop: for f in *.au; do ffmpeg -i "$f" -c:a pcm_s16le "${f%.au}.caf"; done. This iterates over every .au file in the current directory and produces a corresponding .caf file with the same base name. On Windows PowerShell, the equivalent is: Get-ChildItem *.au | ForEach-Object { ffmpeg -i $_.FullName -c:a pcm_s16le ($_.BaseName + '.caf') }. The browser-based tool processes files one at a time, so the FFmpeg command is especially useful for bulk conversions.

Technical Notes

AU (Sun Audio) files carry a four-byte magic number (0x2e736e64, or '.snd') followed by fields describing data offset, data size, encoding type, sample rate, and channel count. The format is intentionally minimal with almost no metadata support — there are no tags for artist, title, or album, and no chapter or subtitle structures. CAF is a far richer container: it stores per-packet table data, audio channel layouts, marker lists, and arbitrary metadata chunks, but this conversion will produce a CAF with only the essential audio description and data chunks populated, since AU provides nothing more. The byte-order difference between AU's big-endian PCM and CAF's little-endian PCM is the central technical transformation. FFmpeg handles this transparently via its internal sample format conversion pipeline. One known limitation: AU files using pcm_s8 (8-bit signed PCM) will be upconverted to pcm_s16le in the CAF output, since CAF does not have a signed 8-bit PCM codec — this increases file size but does not improve dynamic range. AU files with sample rates outside Core Audio's supported range (e.g., unusual rates from scientific instruments) should still convert correctly, as CAF supports arbitrary sample rates.

Related Tools