.m4a is the usual file type for iTunes downloads, voice memos and many podcast feeds, but not everything accepts it. Older car stereos, some DJ software and some upload forms still want .mp3. FFmpeg converts M4A to MP3 with one command. M4A usually holds AAC, so this is often a lossy-to-lossy re-encode (if the file holds ALAC, it is lossless-to-lossy). Either way the audio is re-encoded, so your bitrate and quality settings decide whether the MP3 sounds the same as the original or audibly worse.

1. M4A to MP3 Is Always a Re-encode

An .m4a file usually holds AAC audio (lossy: some detail is thrown away to save space) and sometimes ALAC (Apple Lossless). MP3 is a different codec, so FFmpeg must decode the source and compress it again as MP3. There is no lossless “copy” path between these formats.

That means:

  • From AAC (lossy) to MP3 (lossy): the audio goes through a second lossy encode on top of the first. Quality can only go down, never up. Use a generous bitrate so the loss stays inaudible.
  • From ALAC (lossless) to MP3 (lossy): this is a normal lossy encode from a clean source, like ripping a CD.

Either way, choose a setting with some quality to spare (Section 4).

2. The Basic Conversion

The most common command makes 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 … a constant bitrate (CBR) of 192 kbps. A safe default for music that works with most players.

It finishes quickly, and every MP3 player accepts the result.

3. Variable Bitrate (VBR) — Better Quality Per Megabyte

With VBR, the encoder spends more bits on complex passages and fewer on simple ones. This usually gives better quality at a smaller average size than CBR. With LAME, you set VBR with -q:a (a lower number means higher quality):

ffmpeg -i input.m4a -c:a libmp3lame -q:a 2 output.mp3

-q:a 2 averages about 190 kbps. For music it is widely considered near-transparent, meaning most listeners cannot tell it from the source. For most people, VBR -q:a 2 is the best general-purpose setting.

4. Choosing a Bitrate or VBR Level

Pick a setting for your use from this table:

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 the source is already lossy, stay toward the higher-quality end (for example -q:a 2 or -b:a 256k) to hide the effect of compressing twice. For music, going below 128 kbps 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 MP3 tags. The embedded cover image is also carried over by default, but it is re-encoded as PNG. To keep the original image unchanged, map the streams yourself:

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 there is one. The ? makes it optional, so files without a cover do not cause an error. The quotes stop zsh (the macOS default shell) from reading ? as a wildcard.
  • -c:v copy … keep the cover image as it is, without re-encoding it.
  • -id3v2_version 3 … write ID3v2.3 tags, the version most players can read.

6. Channels and Sample Rate

For speech, you can make files smaller by switching to mono and lowering the bitrate:

ffmpeg -i input.m4a -c:a libmp3lame -b:a 96k -ac 1 output.mp3
  • -ac 1 … mix down to one channel (mono).

To force the standard 44.1 kHz sample rate (some old players have trouble with 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 a build that includes LAME, for example the gyan.dev full build linked from ffmpeg.org’s download page on Windows, or a distro package that includes libmp3lame. Most mainstream builds include it.

Error 2: The MP3 sounds dull or “swirly”

Cause: The bitrate is too low for a source that is already lossy AAC, so the artifacts from both compressions add up. Fix: Raise the quality: use -q:a 2 or -b:a 256k.

Error 3: Cover art is missing in the MP3

Cause: -vn, or a mapping with only -map 0:a, leaves the cover image out of the output. Fix: Remove -vn and use the mapping from Section 5, with -map "0:v?" and -c:v copy.

Error 4: Player shows wrong or garbled tags

Cause: The player reads only older ID3 versions. Fix: Add -id3v2_version 3 to write ID3v2.3, which most players can read.

FAQ

Q1. Will converting M4A to MP3 lose quality? A. Yes, somewhat. The AAC inside most M4A files and MP3 are both lossy, so the audio goes through a second lossy encode. Use a high-quality setting (-q:a 2 or better) to keep the loss inaudible.

Q2. Can I convert M4A to MP3 without quality loss? A. No. There is no lossless path from AAC or ALAC to MP3; the audio must be re-encoded. If your M4A holds ALAC (lossless), at least you start from a clean source.

Q3. Should I use CBR or VBR? A. VBR (-q:a 2) usually 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. Most listeners can hardly tell either from the original. 320 kbps is the practical ceiling for MP3.

Q5. How do I convert a whole folder of M4A files at once? A. Use a loop in a shell such as bash:

for f in *.m4a; do ffmpeg -i "$f" -c:a libmp3lame -q:a 2 "${f%.m4a}.mp3"; done