WebM → WAV
WebM to WAV converter
The Opus or Vorbis track inside the WebM is decoded and written as uncompressed PCM WAV. Any video is dropped. Nothing further is lost, but the WAV cannot be better than the recording.
…or drag files and folders here. Add as many as you like — everything is processed on this device.
.m4v .mkv .mov .mp4 .oga .ogg .opus .qt .weba .webm
In one paragraph
WebM files mostly come from browsers: a voice note recorded in a web app, a Google Meet or Jitsi recording, a screen capture from a browser extension, audio saved from a web player. Audacity, Reaper and most editors open WAV without plugins, and a lot of speech-to-text and forensic tools want nothing else. Getting from one to the other is the whole job of this page.
Sonic Batch demuxes the WebM (Matroska) container with FFmpeg compiled to WebAssembly, decodes the audio and writes RIFF PCM at the bit depth you choose. Opus always decodes at 48 kHz, so the WAV keeps 48 kHz unless you ask for something else — which suits a video timeline and avoids an unnecessary resample.
Does this change the audio quality?
Decoding to PCM adds no loss of its own, but Opus and Vorbis are lossy codecs. The WAV holds exactly what the decoder produces — it sounds like the WebM, not like the microphone signal before the browser encoded it.
- Expect the WAV to be 10–20× larger than the WebM. Browser recordings use low Opus bitrates, often 32–64 kbps.
- Only the first audio track is extracted. Video-only WebM files are reported as having no audio rather than producing silence.
- Video files count against the 400 MB per-file budget in full, even though only the audio is kept.
A worked example
Editing a recorded web call in Audacity
- Drop the .webm recording into the queue. The row shows the codec (usually Opus), 48 kHz and the duration.
- Leave the sample rate on “Same as source” so the WAV stays at 48 kHz.
- If the call is quiet, turn on Normalise with a −16 LUFS target so it arrives at a usable level.
- Convert, download the WAV and open it in the editor.
Keep 48 kHz; 16-bit unless you are mixing
Opus works internally at 48 kHz, so that is the honest output rate — converting to 44.1 kHz only adds a resampling step. A browser recording has far less dynamic range than 16-bit can hold, so 16-bit is right for editing speech, cutting clips or feeding a speech-to-text tool. Choose 24-bit if the audio is going into a mix with heavy gain or processing.
Supported formats, limits and browser notes
Sonic Batch decodes with the browser when it can (faster, no engine download) and falls back to the self-hosted WebAssembly engine when it cannot. Every combination below works in every listed browser; the column only tells you which decoder does the work.
| Input | What it is | Chrome | Firefox | Safari | iOS |
|---|---|---|---|---|---|
| WebM | Open container used by browser recorders and YouTube downloads. Audio is Opus or Vorbis. | Native | Native | Partial | Partial |
| Opus | The best-sounding lossy codec below 128 kbps. Used by WhatsApp, Discord and YouTube. | Native | Native | Partial | Partial |
| OGG | Royalty-free lossy codec. Standard in game engines, Godot, Unity and Wikimedia. | Native | Native | Engine | Engine |
| MP4 | The standard video container. Its audio track is almost always AAC. | Native | Partial | Native | Native |
| MOV | QuickTime video from iPhone and DSLR cameras. Audio is normally AAC or PCM. | Partial | Engine | Native | Native |
| Output | Encoder | Bitrates / depth | Sample rates | Tags |
|---|---|---|---|---|
| WAV | pcm_s16le | 16, 24, 32-bit | 8–96 kHz | Yes |
- Max per file
- 400.0 MB
- Max per queue
- 4.00 GB
- Max duration
- 4:00:00
- Max archive
- 1.50 GB
These are enforced ceilings, checked before any decoding starts, not measured maximums — a file over the limit is rejected rather than allowed to exhaust the tab’s memory. Real-world capacity is lower on older phones, which is why the scheduler runs one file at a time on iOS and Safari.
Where your audio goes
Nowhere. Your file is read from disk into this browser tab with the File API, decoded and encoded by code running in that same tab, and handed back to you as a download. It is never transmitted.
That is a structural property of the application, not a policy promise: there are no API routes, no server actions and no third-party processing services in this project, so there is nothing capable of receiving a file. The page’s Content-Security-Policy also restricts connections to this origin, and the automated test suite includes a browser test that fails if any network request during import, preview, conversion or download carries media bytes.
The trade-off, stated plainly: results live in your tab’s memory until you download them. Closing or reloading the page discards them. There is nothing on a server to recover, because nothing was ever put there.
Troubleshooting
The duration of the WebM looks wrong or missing.
MediaRecorder often writes WebM without a duration in the header. The engine reads the stream to the end, so the WAV gets a correct length even when the source did not state one.
It says no audio stream was found.
Screen captures made without microphone or tab-audio permission contain only video. Play the file first; if it is silent there, there is nothing to extract.
The WAV is very quiet.
Browser microphone capture often sits around −30 dBFS. Turn on Normalise in LUFS mode rather than raising the volume later, and the gain applied is recorded in the manifest.
Frequently asked questions
Is WebM to WAV lossless?
The conversion step adds no loss. The audio was already lossy when the browser encoded it to Opus or Vorbis, and the WAV preserves that exactly without restoring anything.
Why WAV rather than MP3?
WAV is what editors, DAWs and analysis tools open natively, and it avoids a second lossy encode. If you only need a small file to share, the WebM to MP3 page is the better fit.
Does it work with WebM video files?
Yes. The video stream is ignored without being decoded and only the audio is written, so a long screen recording converts quickly.
Is the recording uploaded?
No. The file is read into your browser tab and decoded there by a WebAssembly engine served from this site. There is no upload endpoint.