No files yet. Drop audio or video above to start.
Idle.
How this works: Every file is decoded with the browser's native audio pipeline, resampled + re-channeled if you asked, then encoded to the chosen output — MP3 via lamejs (WASM), WAV via a raw PCM writer, Opus via the native
Practical notes: MPEG / MP4 / MOV → MP3 any → 16 kHz mono WAV (perfect input for /transcribe/) MP3 patents expired 2017 — no licensing concern. Video → audio extraction runs in real time (a 10-min video = ~10 min to extract), because the browser can't fast-forward captured streams. Audio-only conversion runs 4–8× real-time.
MediaRecorder. Video files: the audio track is extracted client-side via <video>.captureStream() first. Everything runs locally — open DevTools → Network during a run and you'll see zero POST requests.
Practical notes: MPEG / MP4 / MOV → MP3 any → 16 kHz mono WAV (perfect input for /transcribe/) MP3 patents expired 2017 — no licensing concern. Video → audio extraction runs in real time (a 10-min video = ~10 min to extract), because the browser can't fast-forward captured streams. Audio-only conversion runs 4–8× real-time.