Convert VOC to WEBA — Free Online Tool

Convert VOC audio files — the classic Creative Labs Sound Blaster format used in DOS-era games — to WEBA, an audio-only WebM container encoded with the modern Opus codec. This brings retro PCM audio (pcm_u8 or pcm_s16le) into a streaming-ready, browser-compatible format at a fraction of the original file size.

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

VOC files store raw uncompressed PCM audio, typically as 8-bit unsigned (pcm_u8) or 16-bit signed little-endian (pcm_s16le) samples. During this conversion, FFmpeg reads those raw PCM samples and encodes them using the Opus codec (libopus) into a WEBA container — the audio-only variant of WebM. This is a full re-encoding, not a remux: the uncompressed PCM data is analyzed and compressed using Opus's perceptual audio model, which is optimized for both speech and music. At the default 128k bitrate, the output will be dramatically smaller than the original VOC while retaining perceptibly transparent quality. The -vn flag ensures no spurious video stream is added, keeping the output as a clean audio-only WEBA file.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg command-line tool. In the browser-based version of this tool, FFmpeg runs locally via WebAssembly (ffmpeg.wasm), so no files leave your machine.
-i input.voc Specifies the input file — a VOC audio file using Creative Labs' Sound Blaster block format, containing raw PCM audio (typically 8-bit unsigned or 16-bit signed little-endian samples).
-c:a libopus Selects the Opus encoder (libopus) to compress the raw PCM audio from the VOC file. Opus is the modern, royalty-free codec used in WEBA files and is optimized for both speech and music, making it well-suited to the varied sound effects and music loops found in DOS-era game audio.
-b:a 128k Sets the Opus audio bitrate to 128 kilobits per second. This is the target bitrate for the lossy Opus encoding of what was previously uncompressed PCM data. At 128k, Opus delivers perceptibly transparent quality far above the fidelity ceiling of typical 8-bit VOC source material.
-vn Disables any video stream in the output. Although VOC files contain no video, this flag is included as a safeguard to ensure the WEBA output remains a clean audio-only file, consistent with the WEBA format's audio-only design.
output.weba Specifies the output filename with the .weba extension, which tells FFmpeg to write an audio-only WebM container. The WEBA format is natively supported by modern browsers, making this file immediately usable for web playback without any additional transcoding.

Common Use Cases

  • Porting sound effects from a classic DOS game (such as Doom, Commander Keen, or early Sierra titles) to a web-based remake or fan project that requires browser-native audio playback
  • Archivists and retro-gaming preservationists converting large collections of VOC sound clips to a modern, compressed format that saves storage while remaining playable on any current browser or device
  • Game modders who need to repurpose original VOC voice lines or sound effects into a web-compatible format for use in tools like Howler.js or the Web Audio API
  • Audio historians digitizing Sound Blaster multimedia content from the early 1990s into a streamable format suitable for online exhibits or educational demos
  • Developers building browser-based DOSBox-style emulators who want to serve original VOC audio assets efficiently over the network using a low-latency streaming codec
  • Hobbyists converting VOC sound samples extracted from vintage CD-ROM games into WEBA clips to share on modern websites or embed in blog posts about retro computing

Frequently Asked Questions

VOC files store uncompressed PCM audio, so converting to WEBA with Opus at 128k introduces lossy compression for the first time. For the typical audio content found in VOC files — 8-bit sound effects, speech clips, and simple music from DOS-era games — Opus at 128k is more than sufficient and any quality difference is generally imperceptible to most listeners. However, if the source VOC file contains 8-bit (pcm_u8) audio, the inherent quality ceiling is already limited by that bit depth, so the Opus encoding adds negligible perceptual degradation on top of what is already a lo-fi source.
Yes — WEBA is specifically designed for web playback. All major modern browsers including Chrome, Firefox, Edge, and Opera support WEBA with Opus audio natively via the HTML5 audio element or the Web Audio API. Safari added WebM/Opus support in version 15 (2021), so coverage is now very broad. This makes WEBA an ideal delivery format for web-based retro gaming projects that source their sounds from original VOC assets.
Replace the 128k value in the -b:a 128k flag with your desired bitrate. Opus supports a wide range: 64k works well for simple mono sound effects typical of DOS games, while 192k or 256k is appropriate if you want a higher-quality archive of richer audio. For example, use -b:a 64k for small file sizes or -b:a 192k for near-transparent quality. Note that Opus is already very efficient, so increases above 128k yield diminishing returns for the kinds of audio typically found in VOC files.
No. The VOC format supports proprietary block-based metadata including loop points, silence blocks, and sample rate markers that were specific to the Sound Blaster hardware playback pipeline. None of these are mapped to WEBA or Opus metadata during conversion — FFmpeg only extracts the raw PCM audio stream. If your project depends on loop timing from the original VOC, you will need to implement that logic separately in your application code.
Yes. On Linux or macOS you can run a shell loop: for f in *.voc; do ffmpeg -i "$f" -c:a libopus -b:a 128k -vn "${f%.voc}.weba"; done. On Windows (PowerShell) use: Get-ChildItem *.voc | ForEach-Object { ffmpeg -i $_.FullName -c:a libopus -b:a 128k -vn ($_.BaseName + '.weba') }. This is especially useful when digitizing entire game sound libraries from the DOS era that may contain dozens or hundreds of individual VOC clips.
This almost always indicates a sample rate mismatch. Early VOC files often used non-standard sample rates like 11025 Hz or 22050 Hz, and if FFmpeg misreads the rate from the VOC header, the audio will play back at the wrong speed. You can force the correct input sample rate by adding -ar 11025 (or whichever rate applies) before the output filename — for example: ffmpeg -i input.voc -c:a libopus -b:a 128k -vn -ar 22050 output.weba. Checking the VOC header with ffprobe first is recommended.

Technical Notes

VOC files use a block-based structure where each block defines the audio type, sample rate (encoded as a divisor of 1,000,000), and codec — either 8-bit unsigned PCM (pcm_u8) or 16-bit signed little-endian PCM (pcm_s16le). The 8-bit variant is by far the most common, reflecting the original Sound Blaster hardware's capabilities. When FFmpeg encodes this to Opus via libopus, it will upsample if necessary to meet Opus's minimum internal sample rate of 8000 Hz or preferred rates of 16000, 24000, or 48000 Hz. Opus internally operates at 48000 Hz, so FFmpeg will resample the VOC audio accordingly — this is normal and does not degrade quality meaningfully for retro game audio. The WEBA container (audio-only WebM) carries no chapter or subtitle support, and since VOC files also lack these features, nothing is lost in that regard. File sizes will shrink dramatically: a 1MB VOC of 8-bit mono audio at 22050 Hz will compress to roughly 40–80KB as WEBA at 128k, depending on content. One known limitation: VOC files that use creative compression variants (ADPCM blocks, type 0x09 extended headers) may not be fully decoded by all FFmpeg builds — if you encounter decoding errors, ensure you are using a recent FFmpeg version (5.0+).

Related Tools