Convert VOC to CAF — Free Online Tool
Convert VOC audio files — the classic Creative Labs Sound Blaster format used in DOS-era games — to CAF, Apple's modern container format, with PCM audio re-encoded to 16-bit signed little-endian. This is useful for bringing retro game sound assets into macOS and iOS audio workflows while preserving lossless audio quality.
to
FFmpeg Command
Copy this command to run the same conversion locally with FFmpeg on your desktop. Download FFmpeg
Drop your VOC 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
VOC files store raw PCM audio, typically as 8-bit unsigned PCM (pcm_u8) or occasionally 16-bit signed PCM (pcm_s16le), inside a simple block-based container developed by Creative Labs in the early 1990s. During this conversion, FFmpeg reads the raw PCM audio stream from the VOC container and re-encodes it as 16-bit signed little-endian PCM (pcm_s16le) inside a CAF container. If your source VOC uses 8-bit unsigned PCM, the bit depth is upgraded to 16-bit, which expands dynamic range from 48 dB to 96 dB — a significant quality improvement with no lossy compression introduced. The CAF container itself is Apple's answer to the limitations of WAV and AIFF, supporting large file sizes and a broad range of codecs, making it natively compatible with Core Audio on macOS and iOS.
What Each Flag Does
| Flag | What it does |
|---|---|
ffmpeg
|
Invokes the FFmpeg binary, the open-source multimedia processing engine that powers this conversion both in the browser via WebAssembly and locally on your desktop. |
-i input.voc
|
Specifies the input file — a VOC audio file in the Creative Labs Sound Blaster format. FFmpeg reads its block-based structure and extracts the raw PCM audio stream, handling either pcm_u8 or pcm_s16le source encoding. |
-c:a pcm_s16le
|
Sets the audio codec for the output to 16-bit signed little-endian PCM, which is the default and most compatible uncompressed audio encoding for the CAF container on Apple platforms. If the source VOC is 8-bit unsigned PCM, this re-encodes it with expanded dynamic range and corrected DC offset. |
-b:a 128k
|
Specifies a target audio bitrate of 128 kbps. For uncompressed PCM output (pcm_s16le), this flag has no functional effect since PCM bitrate is fixed by sample rate and bit depth — it becomes relevant only if you switch to a lossy codec like AAC. |
output.caf
|
Defines the output file as a CAF (Core Audio Format) container. FFmpeg infers the CAF format from the .caf extension and wraps the PCM audio stream in Apple's modern container, which supports large file sizes and is natively readable by macOS, iOS, and tvOS applications. |
Common Use Cases
- Importing sound effects ripped from classic DOS games into Logic Pro, GarageBand, or other Core Audio-based DAWs on macOS, which natively support CAF files.
- Upgrading 8-bit VOC audio assets from retro game mods or demoscene projects to 16-bit PCM in CAF for use in modern game engines like Unity or Godot on Apple platforms.
- Archiving a collection of Sound Blaster-era VOC sound banks into CAF for long-term storage on Apple systems, where CAF's large file size support and lossless PCM encoding ensure full fidelity.
- Preparing vintage DOS game audio for use in iOS apps or tvOS projects, where Core Audio's native CAF support makes integration straightforward without additional transcoding steps.
- Converting VOC voice-over recordings from legacy multimedia CD-ROM titles into CAF so they can be edited, pitch-corrected, or processed in macOS audio tools without lossy intermediate formats.
- Batch-converting a library of VOC sound assets for a retro game soundtrack remaster project targeting Apple Silicon Macs, using the FFmpeg command to script the process at scale.
Frequently Asked Questions
The conversion from pcm_u8 (8-bit unsigned PCM) to pcm_s16le (16-bit signed PCM) increases the bit depth, which expands the theoretical dynamic range from about 48 dB to 96 dB. However, the original audio information was captured at 8-bit, so no new detail is created — you won't recover frequencies or nuances that weren't in the source. What you do gain is a clean, standards-compliant 16-bit file that avoids any quantization noise that might be introduced if a downstream application performed its own bit-depth conversion. Think of it as future-proofing the asset rather than enhancing the original recording.
CAF does support PCM audio, including pcm_s16le, pcm_s24le, and pcm_s32le, among other codecs. However, VOC's native 8-bit unsigned PCM (pcm_u8) is not a supported codec in CAF, which means re-encoding is always required when the source VOC uses 8-bit audio. The FFmpeg command in this tool targets pcm_s16le as the output codec, which is CAF's default PCM format and the most universally compatible choice for Apple's Core Audio framework.
Yes, CAF supports AAC and other lossy codecs. You can modify the FFmpeg command by replacing '-c:a pcm_s16le' with '-c:a aac' and adjusting '-b:a' to your desired bitrate, such as 128k or 192k. For short, punchy sound effects from DOS games, lossy compression can introduce artifacts like pre-ringing or reverb tails, so PCM is generally the better choice for preserving the character of retro audio. AAC is more practical when you're converting longer VOC voice-over recordings where file size is a concern.
VOC files have very limited metadata support — the format was designed for simple embedded audio in DOS applications and carries essentially no standard metadata fields like artist, title, or album. As a result, there is no meaningful metadata to lose or transfer during this conversion. The CAF container supports rich metadata, so if you want to tag the output file, you can do so after conversion using a tool like afinfo or a metadata editor on macOS.
For PCM codecs like pcm_s16le, the '-b:a 128k' bitrate flag has no practical effect because PCM is uncompressed and its bitrate is determined entirely by the sample rate and bit depth. If you switch to a lossy codec such as AAC (using '-c:a aac'), the '-b:a' flag becomes meaningful — for example, '-b:a 192k' will produce higher quality AAC audio at the cost of larger file size. To also change the sample rate, add '-ar 44100' or '-ar 48000' before the output filename.
Yes, the FFmpeg command shown on this page works for single files, but you can adapt it for batch processing in a shell script. On macOS or Linux, a simple loop like 'for f in *.voc; do ffmpeg -i "$f" -c:a pcm_s16le "${f%.voc}.caf"; done' will convert every VOC file in a directory to CAF. This is especially useful for converting entire DOS game sound asset libraries, and it runs locally on your machine without any file size restrictions.
Technical Notes
VOC is a block-structured format where audio data is organized into typed chunks, including sound data blocks, silence blocks, and loop markers — features that were useful for Sound Blaster hardware but are entirely ignored during FFmpeg conversion, as only the raw PCM audio stream is extracted. The most common VOC encoding is 8-bit unsigned PCM (pcm_u8) at sample rates between 8,000 Hz and 22,050 Hz, reflecting the hardware limitations of early Sound Blaster cards. When writing to CAF, FFmpeg outputs pcm_s16le, which is the signed 16-bit variant — this involves a DC offset correction (unsigned 8-bit PCM centers at 128, signed 16-bit centers at 0), which FFmpeg handles automatically. CAF files produced by this conversion are fully compatible with macOS's Core Audio framework, iOS, and tvOS, and can be opened directly in Logic Pro, GarageBand, and Xcode audio asset pipelines. One known limitation: if the source VOC file uses variable sample rates across its block segments (a legal but rare feature of the VOC spec), FFmpeg may only extract the audio from the first block or produce unexpected results — in such cases, inspecting the file with 'ffprobe' first is recommended.