Encode raw audio samples to any format.
JS / WASM – no ffmpeg, no native bindings, works in both node and browser.
Small API, minimal size, near-native performance, stream encoding.
import encode from 'encode-audio';
const buf = await encode.wav(channelData, { sampleRate: 44100 });| Format | Package | Engine |
|---|---|---|
| WAV | @audio/wav-encode | JS |
| MP3 | @audio/mp3-encode | WASM |
| OGG Vorbis | @audio/ogg-encode | WASM |
| Opus | @audio/opus-encode | WASM |
| FLAC | @audio/flac-encode | WASM |
| AIFF | @audio/aiff-encode | JS |
Specify the format as method name. Input is Float32Array[] (one per channel), a single Float32Array (mono), or an AudioBuffer.
import encode from 'encode-audio';
const wav = await encode.wav(channelData, { sampleRate: 44100 });
const aiff = await encode.aiff(channelData, { sampleRate: 44100 });
const mp3 = await encode.mp3(channelData, { sampleRate: 44100, bitrate: 128 });
const ogg = await encode.ogg(channelData, { sampleRate: 44100, quality: 5 });
const flac = await encode.flac(channelData, { sampleRate: 44100 });
const opus = await encode.opus(channelData, { sampleRate: 48000, bitrate: 96 });Call with just options (no data) to create a streaming encoder:
import encode from 'encode-audio';
const enc = await encode.mp3({ sampleRate: 44100, bitrate: 128 });
const a = await enc(chunk1); // Uint8Array
const b = await enc(chunk2);
const c = await enc(null); // end of stream — flush + free
// explicit control: enc.flush(), enc.free()import encodeStream from 'encode-audio/stream';
audioSource
.pipeThrough(encodeStream('mp3', { sampleRate: 44100, bitrate: 128 }))
.pipeTo(destination);| Option | Description | Applies to |
|---|---|---|
sampleRate |
Output sample rate (required) | all |
bitrate |
Target bitrate in kbps | mp3, opus |
quality |
Quality 0–10 (VBR) | ogg, mp3 |
channels |
Output channel count | all |
bitDepth |
Bit depth: 16 or 32 (wav), 16 or 24 (aiff, flac) | wav, aiff, flac |
compression |
FLAC compression level 0–8 | flac |
application |
'audio', 'voip', or 'lowdelay' |
opus |
- audio-decode – decode any audio format to raw samples.
- wasm-media-encoders – compact WASM MP3 & Vorbis encoders.
- AudioEncoder – native WebCodecs encoder API.
