Big News: Socket Selected for OpenAI's Cybersecurity Grant Program.Details
Socket
Book a DemoSign in
Socket

audio-decode

Package Overview
Dependencies
Maintainers
3
Versions
48
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

audio-decode

Decode audio data in node or browser

latest
Source
npmnpm
Version
3.9.3
Version published
Weekly downloads
279K
4.03%
Maintainers
3
Weekly downloads
 
Created
Source

audio-decode test

Decode any audio format to raw samples.
JS / WASM – no ffmpeg, no native bindings, works in both node and browser.
Small API, minimal size, near-native performance, lazy-loading, chunked decoding.

npm install audio-decode

import decode from 'audio-decode';

const { channelData, sampleRate } = await decode(anyAudioBuffer);

Supported formats

FormatPackageSizeEngine
MP3@audio/decode-mp392 KBWASM
WAV@audio/decode-wav4 KBJS
OGG Vorbis@audio/decode-vorbis164 KBWASM
FLAC@audio/decode-flac133 KBWASM
Opus@audio/decode-opus178 KBWASM
M4A / AAC@audio/decode-aac368 KBWASM
QOA@audio/decode-qoa8 KBJS
AIFF@audio/decode-aiff20 KBJS
CAF@audio/decode-caf7 KBJS
WebM@audio/decode-webm263 KBWASM
AMR@audio/decode-amr241 KBWASM
WMA@audio/decode-wma91 KBWASM

Whole-file

Auto-detects format. Input can be ArrayBuffer, Uint8Array, or Buffer.

import decode from 'audio-decode'

let { channelData, sampleRate } = await decode(buf)

Chunked

let dec = await decode.mp3()
let a = await dec(chunk1)    // { channelData, sampleRate }
let b = await dec(chunk2)
await dec()                  // close

Streaming

import decode from 'audio-decode'

for await (let { channelData, sampleRate } of decode.mp3(response.body)) {
  // process chunks
}

Works with ReadableStream, fetch body, Node stream, or any async iterable.

Formats: mp3, flac, opus, oga, m4a, wav, qoa, aac, aiff, caf, webm, amr, wma.

Browser

Each codec is a self-contained bundle under @audio/* — no transitive deps, no import map bloat. For selective loading in the browser (avoids bundling all codecs):

<script type="importmap">
{
  "imports": {
    "audio-decode": "https://esm.sh/audio-decode",
    "audio-type": "https://esm.sh/audio-type",
    "@audio/decode-mp3": "https://esm.sh/@audio/decode-mp3",
    "@audio/decode-wav": "https://esm.sh/@audio/decode-wav",
    "@audio/decode-flac": "https://esm.sh/@audio/decode-flac",
    "@audio/decode-opus": "https://esm.sh/@audio/decode-opus",
    "@audio/decode-vorbis": "https://esm.sh/@audio/decode-vorbis",
    "@audio/decode-aac": "https://esm.sh/@audio/decode-aac",
    "@audio/decode-qoa": "https://esm.sh/@audio/decode-qoa",
    "@audio/decode-aiff": "https://esm.sh/@audio/decode-aiff",
    "@audio/decode-caf": "https://esm.sh/@audio/decode-caf",
    "@audio/decode-webm": "https://esm.sh/@audio/decode-webm",
    "@audio/decode-amr": "https://esm.sh/@audio/decode-amr",
    "@audio/decode-wma": "https://esm.sh/@audio/decode-wma"
  }
}
</script>
<script type="module">
  import decode from 'audio-decode'
  let { channelData, sampleRate } = await decode(buf)
</script>

Only list the codecs you need — each @audio/decode-* package bundles all its WASM/JS deps internally.

WebWorker

Each @audio/decode-* package is a self-contained ESM module — import directly in a worker:

// decode-worker.js
import decode from '@audio/decode-mp3'

self.onmessage = async ({ data }) => {
  let pcm = await decode(data)
  self.postMessage(pcm, pcm.channelData.map(ch => ch.buffer))
}

// main.js
let worker = new Worker('./decode-worker.js', { type: 'module' })
worker.postMessage(mp3buf, [mp3buf])
worker.onmessage = ({ data }) => { /* { channelData, sampleRate } */ }

See also

  • audio-encode – encode PCM into any audio format.
  • audio-type – detect audio format from buffer.

MIT

Keywords

audio

FAQs

Package last updated on 18 Apr 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts