Compress VOC Online — Free File Size Reducer

Compress a VOC file to another VOC file by re-encoding the audio stream to 8-bit unsigned PCM (pcm_u8), reducing file size compared to 16-bit PCM source material while preserving full Sound Blaster compatibility. Ideal for optimizing retro game audio assets or DOS-era sound effects without leaving the VOC ecosystem.

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

Both the input and output are VOC files, but this tool performs an actual audio re-encoding step rather than a simple copy. If the source VOC uses 16-bit signed PCM (pcm_s16le), the audio is transcoded down to 8-bit unsigned PCM (pcm_u8), cutting the raw audio data size in half. If the source is already pcm_u8, the stream is re-encoded at the same bit depth, which can still normalize sample rate or block alignment. The VOC container format and its chunk-based structure are preserved, and the output remains fully compatible with Creative Labs Sound Blaster hardware and DOS emulators like DOSBox.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg tool, which handles the VOC demuxing, audio decoding from pcm_s16le or pcm_u8, re-encoding to pcm_u8, and remuxing back into the VOC chunk-based container format.
-i input.voc Specifies the source VOC file to read. FFmpeg will detect the VOC container header and identify the audio codec (pcm_u8 or pcm_s16le) from the sound data chunks inside.
-c:a pcm_u8 Sets the output audio codec to 8-bit unsigned PCM, which is the original Sound Blaster audio format. If the input was 16-bit (pcm_s16le), this re-encodes to 8-bit, halving the audio data size. If the input was already pcm_u8, this ensures the output is normalized to the same encoding.
output.voc The filename of the resulting compressed VOC file. FFmpeg infers the VOC container format from the .voc extension and writes a valid Creative Voice File with the re-encoded 8-bit unsigned PCM audio data inside standard sound data chunks.

Common Use Cases

  • Reducing the file size of 16-bit VOC sound effects ripped from a DOS game so they fit within tight memory constraints on original Sound Blaster hardware or cartridge-limited retro platforms.
  • Normalizing a library of mixed-depth VOC files (some pcm_s16le, some pcm_u8) to a uniform 8-bit format for consistent playback behavior across a DOSBox game mod.
  • Preparing VOC audio assets for use in a homebrew DOS game where the game engine only supports 8-bit unsigned PCM playback via the Sound Blaster DAC.
  • Archiving or distributing a smaller version of VOC sound banks from early 1990s multimedia CD-ROMs while maintaining the original VOC container format expected by the accompanying software.
  • Testing how a DOS game's audio sounds when downsampled to 8-bit before committing to a full batch conversion of an entire game's sound library.
  • Generating compact 8-bit VOC files for use in retro demo scene productions where strict file size limits are enforced.

Frequently Asked Questions

Yes, transcoding from pcm_s16le (16-bit, 65,536 amplitude steps) to pcm_u8 (8-bit, 256 amplitude steps) reduces dynamic range and introduces quantization noise. For typical DOS game sound effects — short, lo-fi samples already recorded at low sample rates — the degradation is often minimal and may be imperceptible. For music or high-fidelity recordings, the 8-bit reduction will produce a noticeably grainier, noisier sound characteristic of classic Sound Blaster audio.
Some DOS applications, game engines, and hardware emulators (like DOSBox with specific game configurations) explicitly require VOC files and will not load other formats. If you need to reduce file size while keeping the output usable by software that only understands VOC, staying within the VOC format is the correct approach. Converting to MP3 or OGG would break compatibility with such software entirely.
Because pcm_u8 uses exactly half the bytes per sample compared to pcm_s16le, a VOC file containing 16-bit audio will produce an output roughly 50% smaller in raw audio data size. The overall file size reduction will be very close to 50% since the VOC container's overhead (headers and chunk markers) is negligibly small relative to the audio payload.
Yes. The FFmpeg command as written does not specify a target sample rate with the -ar flag, so the output VOC will retain the same sample rate as the input file — whether that is 8000 Hz, 11025 Hz, 22050 Hz, or another rate stored in the original VOC header. Only the bit depth changes, from pcm_s16le to pcm_u8 if applicable.
Add the -ar flag followed by your target sample rate between the codec flag and the output filename. For example: ffmpeg -i input.voc -c:a pcm_u8 -ar 22050 output.voc would re-encode to 8-bit unsigned PCM at 22050 Hz. Common Sound Blaster sample rates are 8000, 11025, and 22050 Hz. Lowering the sample rate further reduces file size but also reduces audio fidelity and high-frequency content.
Yes. On Linux or macOS, use a shell loop: for f in *.voc; do ffmpeg -i "$f" -c:a pcm_u8 "compressed_${f}"; done. On Windows Command Prompt, use: for %f in (*.voc) do ffmpeg -i "%f" -c:a pcm_u8 "compressed_%f". This applies the same pcm_u8 re-encoding to every VOC file in the directory, which is useful for processing a full DOS game sound library in one pass.

Technical Notes

The VOC format stores audio in a chunk-based structure defined by Creative Labs, with each chunk tagged by type (sound data, silence, loop markers, etc.). FFmpeg's VOC muxer writes standard sound data chunks and preserves the format's characteristic header signature ('Creative Voice File'). When re-encoding to pcm_u8, FFmpeg converts audio samples to unsigned 8-bit representation where silence is at 128 (0x80) rather than 0 — this is a critical distinction from signed formats and matches the original Sound Blaster hardware expectation. The VOC format does not support metadata tags, album art, chapters, or multiple audio tracks, so none of these are a concern during conversion. One known limitation is that FFmpeg's VOC muxer may not preserve loop chunk blocks (block type 6 and 7) from the source file, which could affect looping behavior in games that rely on the VOC loop chunk rather than application-level looping. If loop chunk preservation is critical, verify the output in DOSBox before using it in production. The format is inherently mono or single-channel in most real-world usage; multi-channel VOC files are extremely rare and not well supported.

Related Tools