Audio

Convert FLAC to MP3 on Mac, Keeping the Album Art

By the Smol team9 min read

To convert FLAC to MP3 on a Mac and keep the album art, run ffmpeg -i in.flac -map 0 -c:a libmp3lame -q:a 2 -c:v copy -id3v2_version 3 out.mp3. The flag that matters is -c:v copy. Without it, ffmpeg re-encodes your cover image and our 33,236-byte JPEG came out as a 393,721-byte PNG.

That is an eleven-fold inflation of the artwork, and on a single 30-second track it made the output file 52% larger than it needed to be. Across an album it is the difference between a clean rip and a folder you convert twice.

We make a Mac compression app and we will say this at the top rather than bury it: on this specific job, free ffmpeg beats us. Smol keeps every text tag and drops the embedded cover. The whole measurement is in the first table.

Which route keeps the album art?

One source: a 3,819,136-byte FLAC, 30.000 seconds, 44.1 kHz 16-bit stereo, carrying seven text tags and a 33,236-byte 1000×1000 JPEG cover. Machine: Apple M2 Pro, macOS 27.0 (build 26A428), 26 September 2026. Art measured by extracting the attached picture stream from each output and stat-ing it.

RouteOutput sizeAudio bitrateCover in the outputText tags
Source FLAC3,819,136 Blossless33,236 B JPEGAll 7
ffmpeg, no flags874,829 B128,000 bps393,721 B PNGAll 7
ffmpeg -map 0 -q:a 21,048,922 B174,417 bps393,721 B PNGAll 7
ffmpeg -c:v copy -q:a 2688,438 B174,417 bps33,236 B JPEG, byte-identicalAll 7
ffmpeg -c:v copy -b:a 320k1,236,160 B320,000 bps33,236 B JPEGAll 7
Smol, convert to MP3655,178 B in 1,013 ms174,417 bpsDroppedAll 7
Smol, compress to M4A727,243 B192,116 bpsDroppedAll 7
afconvertCannot write MP3n/an/an/a

Do the subtraction on the two rows that matter. The correct ffmpeg command produced 688,438 bytes; we produced 655,178. The gap is 33,260 bytes. The cover is 33,236 bytes. Our entire size advantage is your album art, plus 24 bytes of frame header. The audio is not smaller: both files measure 174,417 bps and the decoded audio hashes identically at MD5 28b40b35df3cbb559ee7654db98c2b98.

This is the same behaviour reported in batch converting audio on a Mac, where a fourteen-file corpus showed the identical pattern. It is consistent, it is measured, and it is a real limitation rather than a rounding error.

What is the ffmpeg command to convert FLAC to MP3 with artwork?

The most-viewed question on this exact problem is “Program to convert flac to mp3?” on Super User, asked 17 February 2010, score 22 with 12,809 views and eight answers as of 26 September 2026. The body has not aged at all:

“I’m looking for a program to convert flac files to mp3, while preserving the embedded metadata (including album art). I’m pretty sure this is possible with ffmpeg, but I don’t know the command”

Sixteen years later, here it is:

ffmpeg -i input.flac -map 0 -c:a libmp3lame -q:a 2 \
       -c:v copy -id3v2_version 3 output.mp3

Each flag is load-bearing, and dropping any of them costs something measurable:

FlagWhat happens without it
-map 0ffmpeg picks streams automatically and may leave the cover behind entirely
-c:v copyThe 33,236 B JPEG is re-encoded as a 393,721 B PNG. Output grows from 688,438 B to 1,048,922 B
-q:a 2You get 128 kbps constant bitrate, which is LAME’s documented default
-id3v2_version 3Tags are written as ID3v2.4, which older car stereos and players ignore

The PNG inflation is not a bug, it is a default nobody expects. ffmpeg preserves embedded art, which is right, and then encodes it into the ID3 APIC frame as PNG. Our cover is a lightly noisy 1000×1000 image, so lossless PNG had nothing to work with and grew it 11.8 times. -c:v copy passes the original JPEG bytes through untouched, which we confirmed by extracting the picture from the output and comparing it to the source: both 33,236 bytes.

You can verify which ID3 version you got in one command, and it is worth doing once:

exiftool -Picture -a -G1 output.mp3
# [ID3v2_4]  Picture : (Binary data 393721 bytes ...)   <- no -c:v copy
# [ID3v2_3]  Picture : (Binary data 33236 bytes ...)    <- correct

Why is converting FLAC to MP3 worse than it sounds?

FLAC is lossless. Decode a FLAC file and you get the original samples back, bit for bit. We checked ours rather than assuming: the decoded audio from the FLAC hashes to MD5 a1c36cb0b913d496cbf4f5850d77d393, and so does the WAV it was made from.

MP3 is not. Converting FLAC to MP3 is the one direction where you go from a perfect copy to a permanent approximation, and there is no route back. That makes it different from converting M4A to MP3, which is lossy-to-lossy and merely adds a second round of damage on top of a first.

So keep the FLAC. Convert a copy. The reason to do this at all is a device or a service that will not read FLAC, not storage: our FLAC was 3,819,136 bytes against 5,292,078 for the WAV, which is 72.2% of the original. That ratio is at the pessimistic end because our fixture is noise-heavy and noise does not predict, so a real recording usually does better.

On the setting to use, we will report what the encoder authors say and stop there. LAME’s own --longhelp output opens with RECOMMENDED: lame -V2 input.wav output.mp3, which is the -q:a 2 in the command above. Xiph, who wrote Opus, state on their recommended settings page that “Opus at 128 KB/s (VBR) is pretty much transparent”. Whether a given setting is transparent to you on your material is not something we can measure on your behalf, and any page that tells you a specific number is transparent for everyone is guessing. The honest test is a double-blind ABX comparison on your own headphones, and if you cannot tell V2 from the FLAC, V2 is your answer.

What we can measure is the cost of paranoia. Going from V2 to 320 kbps CBR took the same audio from 688,438 bytes to 1,236,160, a 79.5% increase, on material V2 was already spending 174 kbps on.

Can the Music app convert FLAC?

This is the gap that sends FLAC owners to the command line. Apple’s documented conversion route in the Music User Guide works on what is already in your library, and Music does not import FLAC. So the free-and-built-in answer that works so well for converting WAV to MP3 is not available here in the same way.

afconvert, which is on every Mac, reads FLAC and can write it, but it cannot write MP3 at all:

$ afconvert -f MPG3 -d '.mp3' music30.flac out.mp3
Error: ExtAudioFileSetProperty ('cfmt') failed ('fmt?')

Exit status 1, no file written. macOS ships an MP3 decoder and no MP3 encoder. It is also the wrong tool here for a second reason: it writes no tags and no artwork on any output format, so a FLAC library converted with afconvert arrives anonymous.

That leaves ffmpeg as the free answer, which is why every good response to that Super User thread is an ffmpeg command, and why the command is worth pinning somewhere.

What does Smol actually do here?

It converts fast, it keeps all the text, and it throws the picture away. Smol took the FLAC to MP3 in 1,013 ms, 3,819,136 bytes to 655,178, an 82.8% cut. Every text tag survived:

FieldIn the FLACIn the MP3
TitlePartials in Two KeysPartials in Two Keys
ArtistSmol Test FixturesSmol Test Fixtures
Album artistSmol Test FixturesSmol Test Fixtures
AlbumSynthetic Reference BedSynthetic Reference Bed
GenreTest ToneTest Tone
Track number3/93/9
Date20262026
Embedded cover33,236 B JPEGNot present

The track position surviving as 3/9 rather than a bare 3 is worth noting, because flattening track positions is the single most common failure in cheap batch converters and it quietly breaks album ordering. That part we get right.

The cover we do not. Verified on MP3 and on M4A output from the same FLAC: the output file contains one stream, audio, and no attached picture. Asking for M4A at 192 kbps gave 727,243 bytes with all seven tags and no art. If album art matters to you, the ffmpeg command higher up this page is the better tool today and we would rather you learned that here than after 400 files.

One more thing we measured that you should know before pointing a batch at a mixed folder. Handed both music30.wav and music30.flac in a single job, Smol wrote both outputs to the same path and we got four files from five inputs. Two sources that share a basename and differ only by extension will collide. Rename first, or run them as separate jobs.

When Smol is not the answer

If you care about album art, use ffmpeg. That is the whole headline of this page and it is not a hedge. -c:v copy kept our cover byte for byte, ffmpeg is free, and the command is four flags you can paste into a loop. We drop the cover. On the single most-requested feature in this category, the free tool wins and we have published the arithmetic that proves it.

If it is one album, use ffmpeg too. A for loop over twelve tracks takes seconds. Buying an app for one album is not a sensible trade.

If your FLACs are an archive, do not convert them at all. Convert copies for the device that needs MP3 and leave the originals alone. The most common mistake on this page is treating a lossless library as an intermediate format.

Where we are genuinely useful is narrower: a folder of FLAC where the filenames and text tags are the identity and nobody will ever look at a cover, processed alongside the images, video and PDFs in the same drop, at consistent settings, without a command to remember. Voice recordings, field audio, sample packs, interview archives. If that describes your folder, the case is real and Smol is $29 once, running entirely on your Mac with nothing uploaded. If it is a music library with covers, the ffmpeg line above is the right answer and it costs nothing.

Deciding how small to go once you have picked a route is a separate question, and compressing an audio file on a Mac and audio bitrate explained cover it with the same measurements.

Frequently asked questions

How do I convert FLAC to MP3 on a Mac and keep the album art?

Run ffmpeg -i input.flac -map 0 -c:a libmp3lame -q:a 2 -c:v copy -id3v2_version 3 output.mp3. The -c:v copy flag is the one that matters: without it ffmpeg re-encodes the cover as PNG, which turned a 33,236-byte JPEG into 393,721 bytes and grew the output file from 688,438 to 1,048,922 bytes.

Why did my FLAC to MP3 conversion produce such a large file?

Almost certainly the artwork. ffmpeg preserves embedded covers and re-encodes them as PNG in the ID3 frame. Our 33,236-byte JPEG cover became a 393,721-byte PNG, an 11.8-fold increase, which on a single 30-second track accounted for more than half the output file. Add -c:v copy to keep the original JPEG.

Does Smol keep album art when converting FLAC to MP3?

No. Smol kept all seven text tags including the 3/9 track position, and dropped the embedded 33,236-byte cover, on both MP3 and M4A output. The 33,260-byte difference between our output and correct ffmpeg output is almost exactly the discarded cover. If album art matters, use ffmpeg with -c:v copy.

Can the Music app or afconvert convert FLAC to MP3?

Music does not import FLAC, so its documented conversion route does not apply. afconvert reads FLAC but cannot write MP3 at all: it fails with "Error: ExtAudioFileSetProperty ('cfmt') failed ('fmt?')" and writes no file, because macOS ships an MP3 decoder and no encoder. It also writes no tags or artwork.

What MP3 quality setting should I use when converting FLAC?

LAME's own help output recommends V2, which is -q:a 2 in ffmpeg and measured 174,417 bps and 688,438 bytes with artwork on our fixture. Going to 320 kbps constant bitrate grew the same audio to 1,236,160 bytes, a 79.5% increase. Whether a setting is transparent to your ears is only answerable by a blind ABX test.

Keep reading