.m4a files — the standard audio format from iTunes, Apple Music downloads, voice memos, and many podcast feeds — aren’t accepted everywhere. Older car stereos, some DJ software, and certain upload forms still want plain .mp3. FFmpeg converts M4A to MP3 in one command, but there’s an important catch: M4A is usually AAC, so this is often a lossy-to-lossy re-encode (if it’s ALAC, it’s lossless-to-lossy). Either way you must re-encode, so understanding bitrate and quality settings is the difference between a transparent conversion and an audibly degraded one. Estimated time: 5 minutes.
Tested with: FFmpeg 8.1
What You’ll Learn
- Why M4A to MP3 always re-encodes (and what that costs)
- The basic conversion with a fixed bitrate
- Variable bitrate (VBR) for better size/quality
- How to choose a bitrate or VBR quality level
- Preserving metadata and cover art
- Mono, sample rate, and channel tweaks
- Troubleshooting and FAQ
1. M4A to MP3 Is Always a Re-encode
An .m4a container usually holds AAC audio (lossy) or sometimes ALAC (Apple Lossless). MP3 is a completely different codec, so FFmpeg must decode the source and re-compress it as MP3 — there is no lossless “copy” path between these formats.
That means:
- From AAC (lossy) to MP3 (lossy): you are stacking a second lossy generation on top of the first. Quality only goes down, never up. Use a generous bitrate to keep the loss inaudible.
- From ALAC (lossless) to MP3 (lossy): this is a normal lossy encode from a clean source, like ripping a CD.
Either way, choose settings that leave headroom (Section 4).
2. The Basic Conversion
The most common command — a constant 192 kbps MP3:
ffmpeg -i input.m4a -c:a libmp3lame -b:a 192k output.mp3
-c:a libmp3lame… the LAME MP3 encoder, the recommended high-quality MP3 encoder in FFmpeg.-b:a 192k… constant bitrate (CBR-ish) of 192 kbps. A safe, widely compatible default for music.
This finishes quickly and produces a file every MP3 player accepts.
3. Variable Bitrate (VBR) — Better Quality Per Megabyte
VBR lets the encoder spend more bits on complex passages and fewer on simple ones, usually giving better quality at a smaller average size than CBR. With LAME, VBR is controlled by -q:a (lower number = higher quality):
ffmpeg -i input.m4a -c:a libmp3lame -q:a 2 output.mp3
-q:a 2 targets roughly 190 kbps on average and is widely considered near-transparent for music. For most people, VBR -q:a 2 is the best general-purpose setting.
4. Choosing a Bitrate or VBR Level
Use this table to pick a setting for your use case:
| Setting | Mode | Approx. bitrate | Best for |
|---|---|---|---|
-q:a 0 | VBR | ~245 kbps | Archival, critical listening |
-q:a 2 | VBR | ~190 kbps | Music, general use (recommended) |
-q:a 4 | VBR | ~165 kbps | Casual listening, smaller files |
-b:a 320k | CBR | 320 kbps | Maximum MP3 quality, fixed size |
-b:a 192k | CBR | 192 kbps | Safe, compatible default |
-b:a 128k | CBR | 128 kbps | Voice, podcasts, small size |
-b:a 96k | CBR | 96 kbps | Speech only, minimal size |
Because you’re re-encoding from a lossy source, leaning toward the higher-quality end (e.g. -q:a 2 or -b:a 256k) helps mask the double-compression. Going below 128 kbps for music is rarely worth it.
5. Keeping Metadata and Cover Art
By default FFmpeg copies common tags (title, artist, album) when it can map them. To be explicit and also carry the embedded cover image:
ffmpeg -i input.m4a -map 0:a -map 0:v? -c:a libmp3lame -q:a 2 -c:v copy -id3v2_version 3 output.mp3
-map 0:a… take the audio stream.-map 0:v?… take the cover image if present (the?makes it optional, so files without art don’t error).-c:v copy… keep the cover image without re-encoding it.-id3v2_version 3… write ID3v2.3 tags, the most compatible variant.
6. Channels and Sample Rate
For spoken-word content you can shrink files by going mono and lowering the bitrate:
ffmpeg -i input.m4a -c:a libmp3lame -b:a 96k -ac 1 output.mp3
-ac 1… downmix to a single (mono) channel.
To force a standard 44.1 kHz sample rate (some old players dislike 48 kHz MP3):
ffmpeg -i input.m4a -c:a libmp3lame -q:a 2 -ar 44100 output.mp3
7. Troubleshooting
Error 1: Unknown encoder 'libmp3lame'
Cause: Your FFmpeg build was compiled without LAME.
Fix: Use an official full build (e.g. gyan.dev on Windows, or a distro package that includes libmp3lame). Most mainstream builds include it.
Error 2: The MP3 sounds dull or “swirly”
Cause: Too low a bitrate on top of an already-lossy AAC source (double compression artifacts).
Fix: Raise quality — use -q:a 2 or -b:a 256k.
Error 3: Cover art is missing in the MP3
Cause: The default mapping dropped the attached picture.
Fix: Use the explicit mapping in Section 5 with -map 0:v? and -c:v copy.
Error 4: Player shows wrong or garbled tags
Cause: The player only reads older ID3 versions.
Fix: Add -id3v2_version 3 to write the widely-compatible ID3v2.3.
FAQ
Q1. Will converting M4A to MP3 lose quality?
A. Yes, somewhat. Both AAC (inside most M4A files) and MP3 are lossy, so this is a second lossy generation. Use a high bitrate (-q:a 2 or higher) to keep the loss inaudible.
Q2. Can I convert M4A to MP3 without quality loss? A. No. There is no lossless path between AAC/ALAC and MP3 — re-encoding is mandatory. If your M4A is ALAC (lossless), you at least start from a clean source.
Q3. CBR or VBR — which should I use?
A. VBR (-q:a 2) generally gives better quality per megabyte. Use CBR (-b:a 192k) when a tool or device requires a fixed bitrate.
Q4. What bitrate is “good enough” for music?
A. 192 kbps CBR or VBR -q:a 2 is near-transparent for most listeners. 320 kbps is the practical MP3 ceiling.
Q5. How do I convert a whole folder of M4A files at once? A. Loop over them in a shell:
for f in *.m4a; do ffmpeg -i "$f" -c:a libmp3lame -q:a 2 "${f%.m4a}.mp3"; done
Related Articles
Tested with FFmpeg 8.1 — verified with our command-check script Primary sources: ffmpeg.org/ffmpeg.html / trac.ffmpeg.org/wiki/Encode/MP3