The browser has no MP3 encoder, so extracts come back as WAV
Audio extractor writes 16-bit PCM because browsers decode many codecs but ship no MP3/AAC encoder, and the sample rate is whatever AudioContext decoded to, often 48 kHz from a 44.1 source.
Audio extractor writes 16-bit PCM because browsers decode many codecs but ship no MP3/AAC encoder, and the sample rate is whatever AudioContext decoded to, often 48 kHz from a 44.1 source.
That is the whole product of Audio Extractor. You pick a video or an audio file. The tab runs decodeAudioData. The download is uncompressed WAV, written by hand from the Float32 samples. There is no “export MP3” toggle because the encoder does not exist in the browser. Asking for one would be a lie about what the tab can write.
Decode is not encode
Browsers are good at hearing files. MP4/AAC, WebM, MP3, WAV — decodeAudioData turns those into an AudioBuffer. AC-3, some MPEG variants, and files with no audio track fail outright. A silent track still exports: a valid WAV of silence. The failure is the codec the browser does not ship, not a missing cloud transcoder.
What the browser will not do is the reverse for MP3 or AAC. There is no standard encoder for those in the Web Audio API. The extractor therefore writes 16-bit little-endian PCM, channels interleaved, 44-byte header, audio/wav. The function is audioBufferToWav. Bit depth is 16. There is no high-quality toggle. There is no bitrate. PCM has no bitrate in the MP3 sense.
The file is large. Every editor opens it. That is the trade. If you needed a small compressed download, you needed a tool that actually ships an MP3 encoder — not a tab. Do not pay a video model to “make a version with just the voice as mp3.” You will get a new take, billed, restyled, still not a demux.
Audio Trimmer uses the same writer. A trimmed MP3 becomes a larger WAV for the same reason: decode first, then PCM. That is a re-encode of what the tab heard, not a lossless cut of the original packets. If you needed the AAC inside an MP4 left untouched, you needed an offline muxer that copies the track. This page is the decode you can run without uploading.
Sixteen-bit PCM of whatever the tab heard
The extractor reports the buffer before you export: N channels, N Hz, mm:ss — will export 16-bit PCM WAV at this rate. Channels and duration are facts of the decode. Sample rate is not guaranteed to be the source rate.
decodeAudioData resamples to the AudioContext rate. On a lot of machines that context is 48 kHz. A 44.1 kHz master therefore leaves the tab at 48 kHz. The WAV is honest about the buffer. It is not a clone of the source header. Pitch is preserved; the clock of the file has moved.
This is also why a small mp3 can blow the RAM ceiling. Decode expands the whole file into PCM. A compressed podcast becomes hundreds of megabytes of Float32 samples. The guard is 80 MB on disk and 20 minutes once decoded, with a 20 MB warning so you see the RAM cost before the tab dies. Compressed size is not the working set.
The download name is {original}.wav. Nothing is uploaded. Unplug the network and the write still finishes, because there is nowhere for the samples to go. Login state does not add an MP3 encoder.
Extract is not isolate
Demuxing a track that is already in the file is this page. Pulling a voice out of a mix is a different job.
Isolate vocals from a track runs isolate_audio on any mixed audio_url. Background music and instrumentation leave; a vocal track comes back. It is billed per clip. Quality follows the source mix. That is a model. It is not WAV-from-decode.
separate_music_vocals is another door again: it needs a prior generate_music taskId/audioId. Arbitrary uploads are not valid there. Those go to isolate.
Do not confuse the three:
- Extractor — the samples are already the track you want. Flatten them to 16-bit WAV in the tab. Free. No encoder for MP3.
- Isolate — the voice is buried in a mix. Pay for a separator. You still will not get MP3 from the browser tool sitting next to it.
- Generate — you wanted a new performance. Pick a speech or video row on purpose.
Sending a finished clip through a model with “export just the voice” spends the meter and restyles the take. If the take already has the voice you want, demux it here and live with WAV.
What the WAV is for
Use the extract when an editor, a DAW, or a caption pass needs an audio file and you already have the picture. WAV is the interchange format this tool can actually emit. Import it. Compress later in a tool that owns an encoder, if you must ship MP3.
Do not:
- Expect 44.1 out because the source was 44.1. Read the Hz line on the page.
- Treat a 20-minute extract as a small file. PCM is the point; size follows.
- Run isolate on a file that is already a clean voice, just to “get MP3.” You will pay, and the browser still will not write MP3 for you.
The encoder lives in the tab as a WAV writer. That is not a limitation we forgot to toggle. It is the format the platform can produce without lying.
FAQ
Why WAV and not MP3 or AAC?
Browsers decode many codecs. They do not ship an MP3 or AAC encoder. Uncompressed PCM is the format this tool can write from the decoded samples. Editors open WAV. The file is large because PCM is large.
Why is the WAV 48 kHz when my video was 44.1?
decodeAudioData resamples to the AudioContext rate. That is often 48 kHz. The export matches the buffer, not the source header. The info line on the page is the rate you will get.
Is this a lossless copy of the original track?
No. The browser has already decoded. You are writing 16-bit PCM of what the tab heard, possibly at a new sample rate. Packet-copy demux is a different class of tool.
Should I isolate vocals in the browser extractor?
No. Extractor demuxes. Isolation is isolate_audio on a mixed file, billed by length. Use extract when the track you want is already the audio in the file.