How to Convert MP4 Videos to MP3 for Free with ffmpeg
To convert MP4 to MP3 for free you need one command, and you get to pick the quality instead of accepting whatever an ad supported website decides for you. Free does not mean bad here. The MP3 encoder ships inside ffmpeg, the setting that controls quality is a single flag, and the whole thing runs on your own machine in seconds. This guide covers the command and every flag that matters, the batch loop for a folder full of videos, and the honest tradeoff about where the audio quality actually goes.
The one command to convert MP4 to MP3
Open Command Prompt or Windows Terminal and run this, adjusting the two file names to match your own:
ffmpeg -i "C:\Videos\interview.mp4" -vn -c:a libmp3lame -q:a 2 "C:\Videos\interview.mp3"
Anything before -i is an input option, anything after it is an output option, and that ordering matters. The input file comes straight after -i, the encoder and quality settings follow, and the output file goes last. Notice the quotes around both paths: they are optional for simple names, but a path with a space in it will break the command without them.
ffmpeg prints a wall of output while it works. It reads the file, reports the streams it found, shows the progress bar, and ends with the size of the file it wrote. Scroll to the bottom of that output to check for errors, because ffmpeg keeps going through some warnings rather than stopping.
What every flag in that command does
| Flag | What it does | What to use |
|---|---|---|
-i "input.mp4" |
Points at the source file | Quote the path if it contains spaces |
-vn |
Drops the video stream | Required for an audio only file |
-c:a libmp3lame |
Selects the MP3 encoder | LAME, which is built into the build |
-q:a 2 |
Variable bitrate quality | 0 is best, 9 is worst, 2 to 4 is normal |
-ar 44100 |
Sample rate | 44100 for CD quality, 48000 for video |
-ac 2 |
Number of audio channels | 2 for stereo, 1 for mono |
-b:a 192k |
Fixed bitrate | Use instead of -q:a, not with it |
-y |
Overwrites the output without asking | Add it for batch runs |
On the quality scale, -q:a 0 gives the best quality and the largest file, and -q:a 9 gives the worst quality and the smallest. The number is not a percentage and it is not a bitrate, it is a quality target that ffmpeg converts into a bitrate per moment. -q:a 2 lands near 190 kbps on typical speech and music, which is a good default for material that has already been through a lossy encoder once. Below 2 you waste space without much audible gain, and above 4 you start hearing artefacts on cymbals and long reverb tails.
For a fixed target instead, swap -q:a 2 for -b:a 192k. The file then gets exactly 192 kbps regardless of content, which is useful when you need a predictable size for an upload limit. Keep -ar and -ac only when the source differs from what you want, since resampling to a higher rate does not add any detail that was not recorded.
Cut the audio before you convert it
If you want a section of a long recording rather than the whole file, place -ss before the input so ffmpeg seeks straight to the timestamp:
ffmpeg -ss 00:01:30 -i "C:\Videos\long.mp4" -vn -c:a libmp3lame -q:a 2 "C:\Videos\cut.mp3"
Placing -ss before -i makes ffmpeg jump rather than decode everything that came before, and with current ffmpeg versions the cut is accurate to the frame. Putting -ss after -i forces a full decode of the file up to that point, which on a three hour recording can add minutes for no benefit. Add -t 00:05:00 after the input when you also want to stop after a fixed length.
Keep the original audio quality when you can
Here is the part people miss. If your goal is to strip the video and keep the audio, you do not need MP3 at all. Copying the existing audio stream keeps it bit for bit:
ffmpeg -i "C:\Videos\interview.mp4" -vn -c:a copy "C:\Videos\interview.mkv"
-c:a copy moves the AAC audio without re-encoding it, so nothing is lost and the conversion takes about a second. MKV accepts AAC without complaint, and the same command with an .m4a extension gives you the audio in an MP4 container, which is what a phone expects. Choose this when quality matters more than the file extension.
Batch convert a whole folder in one go
One file is a single command. Twenty files are a loop. In Command Prompt this walks every MP4 in the folder and writes an MP3 with the same base name next to it:
for %f in ("C:\Videos\*.mp4") do ffmpeg -y -i "%f" -vn -c:a libmp3lame -q:a 2 "%~dpn.mp3"
The %f is the current file, and %~dpn expands to its drive and folder plus the name without the extension, so the output lands at C:\Videos\interview.mp3. Inside a batch file you double the percent signs and write %%f and %%~dpn. The -y flag matters here, because without it ffmpeg stops and asks whether to overwrite every time it hits an existing file.
The PowerShell equivalent uses $_.BaseName for the same job:
Get-ChildItem "C:\Videos\*.mp4" | ForEach-Object {
ffmpeg -y -i $_.FullName -vn -c:a libmp3lame -q:a 2 "$($_.DirectoryName)\$($_.BaseName).mp3"
}
Both loops keep the original file name and change only the extension, and both write the results next to the source videos. If one file fails, the error prints for that file and the loop carries on, so a single bad download will not stop the batch.
Where the MP3 bitrate quality actually goes
Both MP3 and AAC are lossy formats, so a conversion is not free. When ffmpeg turns an MP4 into an MP3 it decodes the AAC audio into plain samples and then encodes those samples to MP3. The result carries one extra generation of loss on top of what the video file already had. A 256 kbps AAC source that ends up as a 128 kbps MP3 sounds noticeably thinner than the original, mostly in the high end and on percussion.
Practical advice for the quality setting:
- For music,
-q:a 2sits comfortably above the noise floor of a lossy source. - For speech,
-q:a 4is genuinely fine, and even-b:a 96ksounds acceptable on a voice recording. - For anything you plan to keep, use
-c:a copyinto an M4A or MKV and skip MP3 entirely.
When a free GUI converter is the faster route
Not every job needs a command line. VLC media player converts a single file through Media, Convert or Save, then the Audio - MP3 profile. It is free, it is already installed on plenty of machines, and for one file with no quality requirements it takes about as long as typing the command.
HandBrake is a different tool. It is built for re-encoding video into MP4, MKV and M4A, and it does not write MP3 at all. Reach for it when you want a smaller video file rather than an audio file, which is a separate job covered in the guide to compressing large video files with ffmpeg.
Both are free and both are good. They are simply less precise, because the bitrate and quality settings sit behind panels you have to go looking for. For a folder of files or a specific quality target, the command line wins.
Why skip the online MP4 to MP3 converters
Free converter websites work by uploading your file to somebody's server. That means the audio leaves your machine, and personal audio is exactly the material people do not want floating around: a voice note, a podcast episode before it is published, a phone call you were told to keep. There is no way to ask the site to delete it, because you never found out who runs it.
The free tier also tends to cap file size, hide the quality setting, sit in a queue, and bury the download behind adverts and installers of things you did not ask for. Some of these pages are simply malware bait. Running ffmpeg locally takes one command, needs no account, and leaves the file on the disk it was already on.
Every command on this page assumes ffmpeg is installed and on your PATH. If you type ffmpeg and get 'ffmpeg' is not recognized as an internal or external command, the problem is the setup rather than the conversion. The guide to fixing ffmpeg not working covers each error in order, and the FFmpeg install walkthrough for Windows 11 covers the PATH step that most people skip.
Frequently asked questions
What is the best ffmpeg command to convert MP4 to MP3?
Use ffmpeg -i input.mp4 -vn -c:a libmp3lame -q:a 2 output.mp3. The -vn flag drops the video stream, -c:a libmp3lame selects the MP3 encoder, and -q:a 2 sets variable bitrate quality where 0 is best and 9 is worst. Values from 2 to 4 are the usual working range.
How do I convert a whole folder of MP4 files to MP3?
In Command Prompt run for %f in ("C:\Videos\*.mp4") do ffmpeg -y -i "%f" -vn -c:a libmp3lame -q:a 2 "%~dpn.mp3". In PowerShell use Get-ChildItem with ForEach-Object and $_.BaseName for the output name. Both keep the original file name and change only the extension.
Will converting MP4 to MP3 lose quality?
Yes, one generation of it. ffmpeg decodes the AAC audio and re-encodes it to MP3, and MP3 is a lossy format. To keep the audio exactly as it is, copy the stream instead of re-encoding it with ffmpeg -i input.mp4 -vn -c:a copy output.m4a, which stores the untouched AAC audio in an M4A file.
What is the difference between -q:a 2 and -b:a 192k?
The -q:a 2 setting is variable bitrate quality, so ffmpeg spends more bits on the parts of the audio that need them. The -b:a 192k setting is a fixed 192 kbps for the whole file. Use one or the other. On typical material -q:a 2 lands close to 190 kbps, so the two end up at a similar file size.
Can I cut part of a video and save it as MP3?
Yes. Put -ss before -i for a fast seek, for example ffmpeg -ss 00:01:30 -i long.mp4 -vn -c:a libmp3lame -q:a 2 cut.mp3. Add -t 00:05:00 after the input file if you also want to limit the length of the output.
Is there a free MP4 to MP3 converter without installing anything?
VLC handles a one off conversion with Media, Convert or Save and the Audio - MP3 profile. It is free and it covers the basics, but it gives you less control over bitrate and it is slower across a folder of files. HandBrake is also free, though it produces M4A or MKV rather than MP3.
What to remember
- One command covers the job:
ffmpeg -i input.mp4 -vn -c:a libmp3lame -q:a 2 output.mp3. -vndrops the video,libmp3lameis the encoder, and-q:a 2is the quality setting worth remembering.- Use
-q:a 2for music,-q:a 4for speech, and-b:a 192kwhen you need a fixed size. - A loop in Command Prompt or a
ForEach-Objectpipeline in PowerShell handles a whole folder. - Copy the audio with
-c:a copyinto an M4A or MKV when you want zero loss. - Keep personal audio on your own machine rather than uploading it to a converter site.
Open a terminal, drop the path to your MP4 into the command, and compare the size of the result with the source. A ten minute recording at -q:a 2 should land somewhere near 15 MB, so a 400 KB file means the encoder fell back to something else. If the command is not found at all, fix the install first, then come back and run the conversion again.