Convert AAC to MP3

Converting AAC to MP3 is usually about the file rather than the sound: a bare `.aac` is a raw ADTS stream with no duration, no seek index and no container around it, which is why players show 00:00 and half your software refuses to open it. The MP3 that comes out carries a proper Xing header and plays normally everywhere, at the cost of one more round of lossy compression.

  • Where it runs In your browser. The file is never uploaded.
  • Lossy Some detail is traded for size. MP3 cannot hold everything an AAC can.
  • File size limit Up to 100 MB per file, free, without an account.
  • Worth knowing Both formats are compressed, so this is a second round of compression on audio that has already lost detail. Pick the highest quality band if the result is going to be edited or converted again.

Up to 100 files at once. Mixed formats are fine.

A .aac file is a stream, not a document

This is the fact the rest of the page hangs on. AAC as standardised in ISO/IEC 13818-7 is a codec, and the usual way to store it is inside a container — an MP4, an M4A, a Matroska file — that records how long the audio is, where each frame starts and what the track is called. A file with a bare `.aac` extension normally skips all of that: it is ADTS, an unbroken run of audio frames each carrying a seven-byte header, designed for broadcast where a receiver may tune in halfway through and must be able to start decoding from wherever it lands.

That design is excellent for its purpose and awful as a file on a disk. There is no field anywhere that says how long the audio is, so a player either estimates from the file size — which is wrong the moment the bitrate varies — or shows nothing. There is no index, so seeking means guessing a byte offset and hunting for the next frame header, which is why scrubbing jumps and why the progress bar drifts.

Where a bare AAC file usually comes from

Almost nobody creates one deliberately. They arrive from streaming: HLS delivers audio as a sequence of `.aac` segments and joining them end to end produces exactly this, which is what a download helper or a stream recorder leaves behind. IP cameras, dashcams, DVR boxes and broadcast equipment write ADTS for the same reason radio does — it can be cut anywhere. Some Android recording apps and a few command-line pipelines default to it.

The consequence is that the person reading this rarely chose AAC and rarely cares about it. They have a file that will not behave, and the question is what to turn it into. That framing is worth keeping, because it changes which of the two obvious answers is right.

What the MP3 gives you that the .aac did not

The MP3 written here opens with a Xing frame holding the total frame count, the file size and a hundred-entry table of contents. That is what lets a player state the duration immediately instead of estimating it, and it is what makes dragging the progress bar land where you dropped it even when the bitrate varies across the file.

On top of that it carries ID3v2 tags, which every player, phone and car system reads for the title, the artist and the cover image. None of that is a property of the MP3 codec — it is the file layout around it. That is the actual upgrade you are buying, and it is why converting fixes problems that "AAC is less compatible than MP3" does not explain.

The honest alternative: put the AAC in a container instead

Every problem in the section above is a container problem, and MP3 is not the only container that solves it. Converting the same file to M4A wraps the audio in MP4, which gives it a duration, a proper sample table for seeking, and a metadata block that holds tags and artwork — and does it without a second lossy encode, because the audio only has to be moved rather than re-imagined.

So pick MP3 for one reason and one reason only: something downstream requires MP3 specifically. A car head unit indexing a USB stick, a player made before 2010, a submission form that lists a single format, a broadcast automation system with an MP3 profile. If your goal is just "make this file work properly on my computer", M4A is the better answer and this page has done its job by saying so.

Generation loss, priced for the material you probably have

The registry flags generation loss as a known problem of AAC, and it is the right flag: this conversion decodes audio that has already been compressed and compresses it again with a codec that makes different decisions about what to throw away. The second encoder spends bits describing the first one's artefacts, which is why two lossy passes cost more than one at the same bitrate.

How much you should care depends on what the file is. A recorded stream of speech, a lecture, a broadcast capture or camera audio at Balanced — 160 kbps — is indistinguishable in any realistic listening situation. Music captured at a low stream bitrate is where a second pass shows, most audibly on cymbals and crowd noise. The defence is to convert once from the original capture, never from an MP3 you made earlier.

Picking a bitrate when the source bitrate is unknown

With a stream capture you usually do not know what bitrate the AAC was encoded at, and the file gives you no easy way to find out. The safe rule is not to try to match it. Small file writes 96 kbps, Balanced writes 160 and High quality writes 320, and those are the only three numbers involved.

For speech, Small file is genuinely sufficient and turns a three-hour capture into roughly 130 MB. For anything musical, Balanced. Choose High quality when the MP3 is a working copy that will be trimmed, normalised or exported again — 320 kbps recovers nothing, but it stops this step from being the weakest link in a chain of edits.

What happens when the AAC is not stereo at 44.1 kHz

Broadcast and camera AAC is frequently not what a music file would be. It can be mono, it can be at 32,000 or 48,000 Hz, and in the case of a television capture it can carry a multichannel layout — the format allows up to 48 channels, against MP3's two.

Mono and unusual sample rates convert without incident and stay as they are. A layout no MP3 encoder will accept triggers a fallback to two channels at 48,000 Hz, so a surround capture is folded down to stereo and resampled rather than refused. That is the right behaviour for the person who wanted a file that plays, and the wrong one if the discrete channels were the point.

When a .aac file will not open at all

Two failures look alike and are not. If the file is genuinely ADTS but truncated mid-frame — the common result of a stream recorder being stopped abruptly — the conversion reads what is there and stops at the damage, which usually gives you a usable MP3 slightly shorter than the original.

If the extension is wrong, nothing works. Files named `.aac` that are actually MP4 fragments, or M4A files renamed by hand, will not parse as an ADTS stream, and the converter says the file could not be read rather than guessing. Try the M4A route in that case: an MP4 demuxer will open it, and you will have found out what you actually had.

Converting a folder of stream segments

Recordings of this kind arrive in bulk, so the batch path matters. Drop up to a hundred files at a time; each converts independently and the results come back as one ZIP, with a 100 MB ceiling per file. Nothing waits in a queue, because the work is happening on your own processor rather than on a server we would have to pay for.

What this does not do is join them. Fifty HLS segments converted here become fifty MP3s, not one continuous recording. If the segments are pieces of a single stream, concatenate them into one `.aac` first with a tool that can do it, then convert that — the frame layout of ADTS makes plain concatenation valid, which is one of the few genuine conveniences of the format.

How to convert a .aac stream into an MP3

  1. Drop the .aac file onto this page, or click to choose one.
  2. Pick a quality band. Balanced is 160 kbps; Small file is 96 and is enough for speech.
  3. The stream is decoded and re-encoded as MP3 in your browser, with a Xing header so seeking works. Download it.

AAC versus MP3: a bare stream against a file that describes itself

AAC compared with MP3
AACMP3
Full nameAdvanced Audio CodingMPEG Audio Layer III
File extension.aac.mp3
Media typeaudio/aacaudio/mpeg
CompressionLossy — file size is bought with qualityLossy — file size is bought with quality
First published19971993
Published byMPEGFraunhofer IIS
SpecificationISO/IEC 13818-7ISO/IEC 11172-3
LicensingOpen standardOpen standard
Standing todayCurrentCurrent
Audio channelsup to 48up to 2
Opens in a browserEvery browserEvery browser
Considered insteadOPUSOPUS, FLAC

What is lost

AAC defines up to 48 audio channels and MP3 up to 2. A surround mix is folded down rather than carried across.

Opening the result

VLC and iTunes read both AAC and MP3, so there is a way to check the result against the original without a second tool.

File size and quality

Both AAC and MP3 are lossy, so this is a second compression on top of the first. It is worth starting from the original if there is one; each round trip costs a little more than the last.

What each format is for

AAC is MPEG's format, published in 1997. The specification is ISO/IEC 13818-7, and it is worth reading if the file has to outlive the tool that wrote it.

MP3 comes from Fraunhofer IIS and dates from 1993, specified as ISO/IEC 11172-3. Audacity, VLC and iTunes all read it.

AAC to MP3: the questions a broken .aac raises

Why does my AAC file show no duration and refuse to seek?

Because a bare `.aac` file is not a container. It is a raw ADTS stream: a run of audio frames, each with a seven-byte header, with nothing at the front describing the file as a whole. There is no duration field and no seek table, so a player either estimates the length from the file size and the first frame — which is wrong for a variable-bitrate stream — or gives up and shows 00:00. Converting to MP3 fixes it, because the MP3 written here carries a Xing header with the frame count, the file size and a hundred-point seek table.

Does converting AAC to MP3 make it sound worse?

Slightly. The AAC has already discarded detail permanently and the MP3 encoder discards a second helping on top of it, using different rules — that is what the registry means when it flags generation loss on AAC. Balanced writes 160 kbps, which on a stream capture or a recording of speech is indistinguishable in ordinary listening. If the audio is going to be edited afterwards, pick High quality at 320 kbps so the second encoder is not the bottleneck.

Is MP3 actually more compatible than AAC?

The codec is not the problem — AAC has been decodable everywhere for twenty years, and the registry marks browser support for both as universal. The `.aac` extension and the raw ADTS wrapper are the problem. Windows Media Player, a great many desktop editors, upload forms and hardware players will accept AAC quite happily inside an M4A and refuse the same audio as a bare `.aac`. MP3 sidesteps that because it is both a codec and a file layout everything recognises.

Should I convert to M4A instead?

Often, yes, and it is worth saying so. If your only problem is that the file misbehaves, converting AAC to M4A puts the same audio in a proper MP4 container with a duration, a seek index and room for tags and cover art. Choose MP3 when the receiving device or program genuinely wants MP3 — a car head unit, an old player, an upload form that lists one format — because MP3 costs you a second lossy encode and M4A costs much less.

What happens to the ID3 tags on my AAC file?

They come across. An ADTS file that carries metadata does it by prepending an ID3v2 block, exactly as an MP3 does, so title, artist, album, track number, genre, date, comment and any embedded cover art are read and written straight back into the MP3. If the file has no ID3 block — which is the common case for a stream capture — there is nothing to carry, and the MP3 arrives untagged.

Is the file uploaded to a server?

No. The ADTS stream is parsed and decoded by your own device and the MP3 is written by a WebAssembly build of the LAME encoder running in the tab, because no browser can encode MP3 by itself. Nothing carrying the audio leaves the machine, which you can confirm in the network tab of your developer tools while a conversion runs.

More about these formats