Skip to main content

Video to MP3

Video to MP3 extracts the audio track from an MP4, WebM or MOV file and encodes it to MP3 at 128–320 kbps using the browser's own decoders and the LAME encoder. Everything runs locally — the video is never uploaded, there are no queues, and conversion is unlimited.

Local-only

Drop a video here, or click to choose one

or drop anywhere on this page · Choose a file · 100 MB

Accepted: MP4, M4V, MOV, WebM, MKV, AVI, WMV, ASF, FLV, 3GP, 3G2, MPG, MPEG, M2V, VOB, TS, M2TS, MTS, OGV, MXF, DV, F4V, RM, RMVB, DIVX

How does in-browser video-to-audio extraction work?

A video file is a container — MP4, WebM and MOV are just wrappers that interleave one or more audio streams with the video stream, plus metadata. Extracting the audio therefore has nothing to do with the pictures: the task is to demux the container, decode the compressed audio stream (usually AAC or Opus) to raw PCM samples, and re-encode those samples as MP3. On a server this is a one-line ffmpeg invocation. In the browser, the same pipeline is assembled from web platform primitives: the browser's media stack already knows how to demux and decode every format it can play, and a JavaScript port of the LAME encoder handles the MP3 side.

Stage 1: demuxing and decoding with the Web Audio API

AudioContext.decodeAudioData() accepts the video file's bytes and returns anAudioBuffer of 32-bit float PCM samples at the file's native sample rate (typically 44.1 or 48 kHz). The browser's demuxer skips the video stream entirely — only the audio track is decoded, which is why a typical video converts in seconds rather than minutes. Multi-channel audio (5.1 surround from a camera or screen capture) is preserved as separate channels through this stage; the MP3 encoder later downmixes to stereo, since MP3's joint stereo is a two-channel format.

Memory is the binding constraint: decoded PCM costs about 10 MB per minute of stereo audio at 44.1 kHz (60 × 44100 × 2 channels × 4 bytes). The tool caps input at 100 MB of file size and 30 minutes of audio so a pathological file can't exhaust the tab's memory and crash the page. Files beyond the cap fail fast with a clear message instead of hanging.

Stage 2: MP3 encoding with lamejs

lamejs is a faithful JavaScript port of LAME 3.100, the reference MP3 encoder whose psychoacoustic model has been tuned over two decades. Encoding proceeds in 1152-sample granules: for each granule, the model computes masking thresholds across 32 subbands, allocates bits where the ear is most sensitive, and quantizes the spectrum accordingly. The float samples are first converted to 16-bit integers (the encoder's native input), then processed granule by granule with periodic yields to the UI thread so the progress bar keeps painting.

The bitrate ladder — 128, 192, 256, 320 kbps — covers the useful range of constant-bitrate MP3. LAME's VBR modes can be marginally more efficient, but CBR is what the vast majority of “video to mp3” searchers expect and what every player on earth handles identically. Output size is deterministic: bitrate × duration / 8, so a 3-minute song at 192 kbps is always about 4.3 MB. The tool shows this estimate up front, computed from the decoded duration before encoding starts.

Why MP3 in 2026? Containers, compatibility and the long tail

Opus and AAC are technically superior at equivalent bitrates, and this site's audio-cutter already exports WAV for lossless work. MP3 endures for one reason: universality. Every car stereo built since 2005, every cheap Bluetooth speaker, every DJ deck and every podcast workflow accepts MP3 without questions. When someone searches “video to mp3”, they usually want a file that plays everywhere — the car, the gym speaker, the old laptop. MP3 at 192 kbps is the rational answer to that intent, and generating it locally removes the traditional costs of the server-side converters: upload queues, daily conversion caps, and handing your personal videos to an ad-supported third party.

Privacy: the file never leaves the tab

Server-side converters must receive your video to process it — which means your personal recordings transit their infrastructure, sit in their job queues, and are deleted (or not) on their schedule. The in-browser pipeline has no network leg at all: the File object goes from the drop zone to decodeAudioData to lamejs to a Blob URL, and the download is triggered from that object URL. The service worker only caches same-origin app assets. There is simply no code path that could transmit the video anywhere, which is a stronger guarantee than any privacy policy paragraph.

Which keyboard shortcuts does the video-to-MP3 converter support?

Tab / Shift+TabMove between the drop zone, bitrate options and action buttons
1 – 4 (on bitrate group)Bitrate options are arrow-key navigable as a radio group
EscapeCancel an in-progress conversion

Frequently asked questions

How can a video be converted to MP3 without uploading it?

Your browser already contains everything needed. The Web Audio API's decodeAudioData() reads the audio track straight out of MP4, WebM and MOV containers — the same decoder your browser uses for <video> playback — producing raw PCM samples. Those samples are then fed to lamejs, a JavaScript port of the LAME MP3 encoder, which compresses them to MP3 at your chosen bitrate. Both stages run on your device's CPU inside the page. No server, no queue, no upload: the architecture that makes the conversion private is the same architecture that makes it unlimited.

Which video formats are supported?

MP4 (H.264/AAC — the overwhelmingly common case), WebM (VP8/VP9/Opus) and MOV are supported, because the browser's built-in decoders handle their audio tracks natively. If a file fails to decode, it is almost always an exotic codec (e.g. some MKV files with DTS audio, or ProRes MOV from professional cameras). Re-exporting as MP4/AAC from any editor fixes it. The tool caps input at 100 MB and 30 minutes so decoding stays responsive — audio is decoded to 32-bit float samples in memory, roughly 10 MB per minute of stereo audio.

What bitrate should I choose: 128, 192, 256 or 320 kbps?

128 kbps is fine for spoken word — podcasts, lectures, interviews — where the content is voice and file size matters. 192 kbps is the sweet spot for music: in blind ABX tests, the large majority of listeners cannot distinguish 192 kbps LAME MP3 from the original CD audio. 256 kbps adds headroom for critical listening on good equipment, and 320 kbps is the maximum MP3 allows — audibly identical to 192 for nearly everyone, but ~67% larger. The tool shows an estimated output size before you convert, computed directly from bitrate × duration.

Will the MP3 sound exactly like the video's audio?

MP3 is a lossy perceptual codec: it discards audio information the psychoacoustic model predicts you can't hear (frequencies masked by louder simultaneous sounds, content above ~16 kHz at lower bitrates). At 192 kbps and above, the difference from the source is inaudible to almost all listeners on almost all material. One honest caveat: if the video's audio was already heavily compressed (a low-bitrate stream re-uploaded several times), converting cannot restore what was lost — but it won't audibly degrade it further at 192+ kbps either.

Is it legal to extract audio from a video?

Extracting audio from a video you own or created — your own recordings, screen captures, family videos — is unambiguously fine. For third-party content, the same copyright rules apply as to the video itself: personal, fair-use purposes (studying a lecture offline, sampling your own purchased media) are generally acceptable, while redistributing extracted music commercially is not. The tool itself is format-shifting technology, like ripping a CD you own; what you do with the output is governed by your local copyright law.

Why does encoding take a while on long videos?

MP3 encoding is pure CPU work: every second of audio is analyzed by the psychoacoustic model and quantized, block by 1152-sample block. On typical hardware this runs at roughly 5–20× real time — a 3-minute song encodes in seconds, a 30-minute video in a couple of minutes. The progress bar reflects actual encoder progress, and the page stays responsive because the encode loop yields to the UI thread regularly. Your device may warm up on long encodes; that is normal.