Convert AAC to M4A

Converting AAC to M4A keeps the codec and fixes the file. A bare `.aac` is a raw ADTS stream with no duration, no seek index and nowhere to put artwork, which is why iTunes refuses it and Finder shows it as 00:00; wrapping the same audio in an MP4 container gives Apple software everything it was looking for.

  • Where it runs In your browser. The file is never uploaded.
  • Lossy Some detail is traded for size. M4A 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.

The codec was never the problem

It is worth starting here because it changes what you go looking for. AAC has been decodable by everything for two decades — the registry marks its browser support as universal, every phone plays it, every operating system ships a decoder. If a `.aac` file is misbehaving, the codec is almost certainly not why.

What is wrong is that a bare `.aac` is not a file in the sense that software expects. It is an ADTS stream, designed for broadcast: a run of frames each carrying a seven-byte header describing that frame, with nothing at the front describing the whole. Nothing says how long it is. Nothing indexes where to find the two-minute mark. There is no metadata block. Everything that follows is a consequence of those three absences.

What the MP4 container puts back

M4A is Apple's name, dating from 2004, for an MP4 file holding one audio track. The MP4 header records the exact duration in sample units, a table mapping time to byte offsets so a player can jump to any second without scanning, the channel layout and sample rate for the file as a whole, and an `ilst` metadata block for the title, artist, album, track number and cover image.

Each of those maps directly onto a symptom. The duration field is why Finder stops showing 00:00. The sample table is why the scrub bar becomes accurate instead of drifting. The metadata block is why cover art finally stays attached. And the presence of a recognisable container is why iTunes accepts the import at all.

Where a raw .aac file came from in the first place

Almost nobody produces one deliberately. HLS delivers audio as a sequence of `.aac` segments, so anything that recorded or downloaded a stream leaves a pile of them, and joining them end to end gives you one large ADTS file. IP cameras, dashcams, DVRs and broadcast loggers write ADTS because it can be cut at any point. Some Android recording libraries and a handful of command-line pipelines default to it.

That origin explains why the audio is usually fine and the file is usually awkward: the format was chosen by a machine for a machine, and you are the first party to want it as a document. It also means the file often carries no metadata at all, so a converted M4A may arrive blank — which is a good moment to tag it properly, since it now has somewhere to put the tags.

The re-encode, stated plainly

The elegant version of this conversion moves the existing AAC frames into the MP4 container without touching them, and it is a technique the underlying library supports. This converter does not take it: a bitrate is supplied to the encoder for every compressed target, which disables the stream-copy shortcut, so the audio is decoded to samples and encoded again.

What that costs is a second lossy pass on audio that was already lossy. On speech, broadcast captures and camera audio it is inaudible. On music from a low-bitrate stream it is a small further step down. The defence is the Quality setting: Small file writes 96 kbps, Balanced 128 and High quality 192, and for this pair High quality is the right choice, because the reason you are converting is not to save space.

Tagging becomes possible, and that is half the value

A raw `.aac` file can only carry metadata as an ID3v2 block bolted onto the front — a convention borrowed from MP3 rather than anything in the AAC specification. Some desktop players read it. Apple's software largely does not, which is exactly why artwork set on a `.aac` never seems to survive.

An M4A has a real metadata block, and everything reads it: iTunes and Music, Finder, the Files app, Mp3tag, MusicBrainz Picard, Plex, Jellyfin. Whatever tags did exist on the source are carried across — title, artist, album, album artist, track and disc numbers, genre, date, comment, lyrics and any embedded image — and anything the source lacked can now be added and will stay added.

Why M4A rather than MP3 for an Apple destination

Both fix the container problem. MP3 costs more to fix it with, because it means abandoning AAC for a codec designed in 1993 that does less with the same bits, and doing so through a second lossy encode. That is two downgrades where one would do.

Choose MP3 when something downstream genuinely demands it: a car head unit that indexes only `.mp3`, a player from 2008, a submission form with a fixed list. Choose M4A when the destination is Apple software, a modern phone, a media server or simply your own computer — the codec is already the right one there, and only the wrapper needed changing.

Segments, joins and what the container fixes about them

If your source is a set of HLS segments, the useful property of ADTS is that concatenating them produces a valid stream — no header to rewrite, no index to rebuild. That is how most people end up with one large `.aac` in the first place, and it is the correct way to assemble one.

Do the joining first and convert once. Converting fifty segments individually gives you fifty M4A files, not one recording, and the MP4 container has no equivalent trick — you cannot concatenate two M4As, because each has its own header and sample table. The order is therefore: join the ADTS, then wrap it. Doing it the other way round means a second, much harder job.

What a broken or mislabelled source does here

A stream recorder stopped mid-frame leaves a truncated ADTS file. The conversion reads up to the damage and stops, which normally yields a usable M4A a fraction of a second shorter than the source — and now with a correct duration, which the original never had.

A file that is not ADTS at all is a different matter. Anything named `.aac` that is really an MP4 fragment, or an M4A somebody renamed, will not parse as a frame stream and the conversion reports that the file could not be read rather than guessing. That message is useful information: try opening it as an M4A instead, and you will have discovered what you actually had.

Converting a folder of captures at once

Files of this kind arrive in bulk, so drop the whole folder — each converts independently and the results return as a single ZIP, with a 100 MB ceiling per file and a hundred files to a batch. Nothing queues behind anybody else, because the decoding and muxing run on your processor rather than on a server anybody has to pay for.

Nothing is uploaded at any stage. That is worth more than usual here, because raw `.aac` captures are so often camera audio, call recordings or site recordings that contain other people's voices and are governed by rules about where they may be stored. The decode uses your own device's codecs, the encoder runs in the tab, and the network tab of your developer tools will show you no request carrying the file.

How to wrap an AAC stream into an M4A file

  1. Drop your .aac file onto this page, or click to choose one. Join stream segments first if you have several.
  2. Choose High quality — this path re-encodes, so give the encoder room.
  3. Download the M4A, then set the title and artwork in iTunes, Music or a tag editor.

AAC and M4A compared: the same codec, a very different file

AAC compared with M4A
AACM4A
Full nameAdvanced Audio CodingMPEG-4 Audio
File extension.aac.m4a
Media typeaudio/aacaudio/mp4
CompressionLossy — file size is bought with qualityLossy — file size is bought with quality
First published19972004
Published byMPEGApple
SpecificationISO/IEC 13818-7
LicensingOpen standardPublished, not standardised
Standing todayCurrentCurrent
Audio channelsup to 48up to 48
Opens in a browserEvery browserEvery browser
Considered insteadMP3, OPUSMP3, FLAC

Opening the result

M4A is a container rather than a single format. What actually plays is the codec inside it — usually AAC and ALAC — which is why two files with the same extension can behave differently on the same device.

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

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.

M4A comes from Apple and dates from 2004. iTunes, VLC and FFmpeg all read it.

AAC to M4A: why the file misbehaves and what fixes it

Why will iTunes not import my .aac file?

Because it is not a file iTunes was designed to hold. A bare `.aac` is an ADTS stream — a run of audio frames with no header describing the file — and Apple's library expects an MP4 container with a duration, a sample table and a metadata block. The audio inside is exactly what iTunes wants; it is the wrapper that is missing. Converting to M4A adds it and the file behaves normally from then on.

Does this conversion change the audio?

It re-encodes it, so yes, slightly. In principle the frames could be moved into the container untouched, and the underlying library can do that — but this converter always supplies a bitrate to the encoder, which turns the shortcut off, so the audio is decoded and encoded again. That is a second lossy pass. Pick High quality, which writes 192 kbps, and it will be very hard to hear on any material this is normally used for.

What do I actually gain?

A duration that is correct rather than estimated, seeking that lands where you dropped the playhead, a metadata block that holds the title, artist, album and cover art, and acceptance by software that refuses bare streams. None of that is a property of the codec — it is all the MP4 header, which is why the same audio behaves so differently in the two files.

Should I convert to MP3 instead?

Only if something specifically requires MP3 — a car head unit indexing a USB stick, a player made before 2010, an upload form that lists one format. MP3 is an older and less efficient codec, so converting there costs you a second lossy pass into a weaker format. M4A keeps the codec you already have and only changes the wrapper, which is the smaller change and the better one when Apple software is the destination.

Can I add cover art after converting?

Yes, and that is often the point. An MP4 container has a proper metadata block, so iTunes, Music, Finder, Mp3tag and MusicBrainz Picard can all set the title, artist, album and artwork and have them stay set. A raw `.aac` file can only carry an ID3v2 block bolted onto the front, which Apple software largely ignores — which is why artwork on a `.aac` never seems to stick.

Does the file leave my device?

No. The ADTS stream is parsed and decoded on your own machine and the M4A is muxed in the tab, with the AAC encoder running natively where the browser has one and as a WebAssembly package where it does not — Firefox has no AAC encoder of its own. No request carries the audio, which the network tab of your developer tools will show you during a conversion.

More about these formats