Convert MP3 to AAC

Converting MP3 to AAC here produces a bare ADTS stream — frames with no container — which is what streaming and embedded systems mean when they ask for a .aac file. Both formats are lossy, so keep the bitrate at or above the source. It runs in your browser and nothing is uploaded.

  • Where it runs In your browser. The file is never uploaded.
  • Lossy Some detail is traded for size. AAC cannot hold everything an MP3 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.

Prompt libraries and archives are where these MP3s come from

Nobody starts a project by producing MP3s for a streaming system. This conversion happens because an old library exists: recorded announcements from a phone system that was replaced, station idents from a previous playout setup, prompt sets recorded by a voice artist who is no longer available, or archived programmes whose masters were deleted years ago.

That shapes the sensible expectations. The audio quality was fixed when those MP3s were made and the job now is to move the material into a format the new system will read without making it noticeably worse. This page is about the second half of that, since nothing can be done about the first.

One header per frame, and nothing above it

The output is a sequence of AAC frames, each preceded by a header stating the profile, sample rate and channel configuration. There is no file header, no index and no structure containing the frames — which is why a decoder can join the stream at any point and start producing audio within a frame.

Systems designed around transmission want exactly this. A parser that only has to recognise a frame boundary is a small amount of code with few failure modes, which is why embedded firmware, telephony platforms and segmented streaming all converged on it independently.

The double encode hurts most at the bitrates these systems use

A transcode between two lossy codecs at comparable bitrates is usually close to inaudible. The trouble starts when the target is much lower than the source, and these systems routinely specify low targets: 64 kbps for a stream budget set years ago, 48 or less for an announcement channel.

Compressing a 128 kbps MP3 into 48 kbps AAC is two rounds of a similar decision, and the second encoder spends bits preserving artefacts rather than audio. If the specification names a ceiling rather than a target, use the headroom. If it names an exact figure, the result is what it is, and matching it is the requirement.

Speech comes through this better than music does

Most material moving through announcement systems, IVR menus and prompt libraries is a single voice recorded in a quiet room, which is the easiest thing a codec ever has to encode. Speech has a narrow spectrum, predictable structure and no cymbals, and it survives a second encode at a low bitrate with its intelligibility intact.

Music is where a transcode announces itself. Hold music, station idents with beds under them, and anything with applause or reverb are the files worth listening to after converting. If a prompt library contains both, check a musical one rather than a spoken one — the spoken files will be fine.

The sample rate is carried over, not corrected

The stream keeps whatever sample rate the MP3 had, which for anything ripped or downloaded is almost certainly 44,100 Hz. Nothing here resamples to suit a destination, and a frame header that honestly states 44,100 Hz is not what a platform expecting 8 or 16 kHz wants to read.

Telephony and announcement systems are the usual place this bites, because narrowband rates are still standard there. If your specification names a sample rate, check the MP3s before converting a library, and use a tool that resamples if they do not match. Discovering the mismatch after loading 400 prompts is the expensive version of this problem.

Joining prompts without a third encode

Once converted, files with matching sample rate and channel count can be concatenated directly. An hour of announcements assembled from forty fragments costs nothing in quality, because no decoder and no encoder is involved in the joining — the bytes follow one another.

This is worth designing around when the alternative is assembling audio in an editor and exporting the result, which would add a third encode to material that has already had two. Concatenating ADTS is the one operation in this chain that is genuinely free.

The file will not remember which prompt it is

ADTS has no metadata of any kind. Whatever ID3 tags the MP3 carried — a title, a prompt identifier, a recording date, a version note — have nowhere to go and are absent from the output. A frame header describes the decoder configuration and nothing about the recording.

So filenames become the entire identification scheme, and it is worth getting them right before converting rather than after. If a prompt library relies on tags to track versions, export that information to a manifest first; the conversion will not preserve it and no later step can reconstruct it.

If the WAV masters still exist, start there instead

The best version of this task is the one that skips the MP3 entirely. Voice work was usually recorded and delivered as WAV, and those files often still exist on an old drive, in a project folder or with the studio that recorded them. Encoding AAC from a WAV is a first-generation encode with nothing compounded.

It is worth twenty minutes of asking before converting a whole library, because the difference is real at the bitrates these systems use. Where the masters are genuinely gone — and after a decade and a platform migration they often are — converting the MP3s is the right call, made knowingly.

A hundred prompts per drop, none of them transmitted

Each drop takes up to a hundred files at 100 MB each, and prompt files are small enough that neither ceiling is ever the issue: an MP3 at 128 kbps runs about 0.96 MB a minute, so 100 MB is well over an hour. The batch comes back as a ZIP with one stream per source file.

Nothing is uploaded at any stage, which matters for material under contract or embargo — unreleased programmes, corporate announcements, recordings a voice artist licensed for one use. The encoder is fetched to your machine where the browser lacks one; the audio never travels in the other direction.

How to make an AAC stream from an MP3

  1. Drop your MP3 files onto this page, or click to choose them.
  2. Choose a quality band at or above the source bitrate.
  3. Download the .aac streams, or take the whole prompt set as a ZIP.

MP3 against AAC: two lossy codecs, one without a container

MP3 compared with AAC
MP3AAC
Full nameMPEG Audio Layer IIIAdvanced Audio Coding
File extension.mp3.aac
Media typeaudio/mpegaudio/aac
CompressionLossy — file size is bought with qualityLossy — file size is bought with quality
First published19931997
Published byFraunhofer IISMPEG
SpecificationISO/IEC 11172-3ISO/IEC 13818-7
LicensingOpen standardOpen standard
Standing todayCurrentCurrent
Audio channelsup to 2up to 48
Opens in a browserEvery browserEvery browser
Considered insteadOPUS, FLACOPUS

Opening the result

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

File size and quality

Both MP3 and AAC 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

MP3 is Fraunhofer IIS's format, published in 1993. The specification is ISO/IEC 11172-3, and it is worth reading if the file has to outlive the tool that wrote it.

AAC comes from MPEG and dates from 1997, specified as ISO/IEC 13818-7. VLC, FFmpeg and iTunes all read it.

MP3 to AAC: questions from the pipeline

What does this produce, exactly?

A bare ADTS stream: AAC frames, each with its own short header, and no container around them. That is what a segmenter, an embedded decoder or an announcement platform means when it asks for a .aac file. If you needed something a person would file in a music library, the M4A version of the same codec is the file to make.

How much does the second encode cost?

It depends almost entirely on the target bitrate. Encoding a 128 kbps MP3 into AAC at a similar rate is close to transparent; encoding it down to 48 kbps for a narrow channel compounds two rounds of compression and is audible on music. Speech tolerates it well, which is fortunate, because speech is what most of these systems carry.

Will the sample rate be changed to suit my system?

No. The stream keeps the sample rate of the MP3, which is usually 44,100 Hz. If your platform requires 8 kHz or 16 kHz — common in telephony and announcement systems — this converter will not resample for you, and you need a tool that does. Producing a valid file at the wrong rate is a failure that shows up late.

Can I concatenate the converted files?

Yes, provided they share a sample rate and channel count. Every ADTS frame is self-describing, so joining two streams byte for byte produces a valid third one with no re-encoding and no further loss. That property is exactly why segmented systems use this format.

Is AAC smaller than MP3 at the same quality?

Yes, typically by a useful margin, and the gap widens as the bitrate falls. That advantage applies to encoding a complete source, though — here the encoder is working from audio an MP3 encoder already thinned out, so treat the smaller file as a transport saving rather than a quality gain.

Does the audio leave my machine?

No. The MP3 is decoded by the browser’s own decoder and re-encoded to AAC in the tab, using the machine’s AAC encoder where one exists and a downloaded WebAssembly encoder where it does not. Nothing is transmitted and there is no account or queue.

More about these formats