Convert MP4 to AAC

Converting MP4 to AAC produces a raw ADTS stream: AAC frames with no container around them, no metadata and exactly one soundtrack. That is what a segmenter or an embedded decoder wants; if you are making something to listen to, M4A is the better target and this page says why.

  • Where it runs In your browser. The file is never uploaded.
  • Lossy Some detail is traded for size. AAC cannot hold everything an MP4 can.
  • File size limit Up to 100 MB per file, free, without an account.
  • Worth knowing Only the first soundtrack is kept. A film with a second language or a commentary track loses it.

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

AAC here means a stream, not a file format with a container

The output is ADTS: a run of AAC frames, each carrying a short header describing its own sample rate and channel count, with nothing wrapped around them. It is the shape AAC takes when it is being transmitted rather than stored — the form a broadcast chain, a segmenter or a decoder on a small device expects to be handed.

An MP4 holds the same AAC audio inside a full container, with an index describing where every frame sits and a header stating the duration. This conversion strips that structure away and leaves the frames. Nothing about the audio changes shape; everything about how software finds its way around it does.

Most people searching for MP4 to AAC want M4A

The words point the wrong way. AAC is a codec and M4A is a file, and someone who wants "the AAC out of my video" to put on a phone is describing an M4A. That file contains exactly the same AAC audio with a container around it, plays everywhere, and carries a title and cover art.

The bare stream is the right answer only when something downstream demands it. If you cannot name the thing that demands it, take the M4A and stop reading — you will get a file that works everywhere instead of one that half your software refuses to open.

What a container gives you that the ADTS stream does not

No metadata of any kind. There is nowhere in an ADTS stream to record a title, an artist, an album, a track number or a piece of artwork, so a library that imports one shows a file name and nothing else. There is also no chapter list and no way to add one.

And no seek index. A player wanting to jump to the twentieth minute of a containerised file reads an offset from a table; with a raw stream it has to estimate from the bitrate and scan. That is why durations on ADTS files sometimes read wrong until the file has been played through, and why scrubbing feels imprecise.

Exactly one soundtrack survives into the AAC

An ADTS stream carries one audio track and that is a hard property of the format rather than a limitation of this converter. A video holding an original language, a dub and a commentary produces a stream containing the first of them, and the others are gone.

If the source has more than one and you need them, the audio has to go into something with room: M4A and Ogg both hold several. Check what is in the file before assuming the right track came out, because discovering the wrong language an hour into a build is an expensive way to learn it.

The AAC is re-encoded rather than lifted out

Both the MP4 and the ADTS stream hold AAC, so a straight copy of the frames would have been possible. This conversion decodes and encodes instead, which costs one generation of quality — small on speech, measurable on music, and worth knowing about before a file becomes a master for something else.

For a delivery stream that is usually irrelevant: the audio is on its way to being compressed for transmission anyway, and one more pass at the balanced band changes nothing a listener will hear. For anything being kept, take the Extract audio tool on this site with the M4A option, which copies the original packets without a decoder running.

Where a bare .aac stream is genuinely the right file

Segmenting for HLS, where the audio is about to be sliced into short pieces and the container would only be in the way. Embedded and automotive players that read ADTS directly because implementing a full MPEG-4 parser on the device was never worth it. Test material for a decoder, where you want frames and no structure around them.

The common thread is that something else is going to impose the structure later. A raw stream is an intermediate, not a destination, and treating it as a destination is how you end up with a folder of files nothing will index.

Quality bands, and which one a stream should use

Three bands, defaulting to balanced, resolved by the encoder into a bitrate appropriate to AAC. Balanced is right for speech and for most delivery work; the high band is worth it when the stream is music that will be listened to attentively rather than played under something.

The small band exists for constrained links — a device on a slow connection, or a feed where the audio budget is fixed and small. AAC holds up better than most codecs when squeezed, which is part of why it became the default for streaming in the first place.

What opens a .aac file, and what will not

VLC and FFmpeg read raw ADTS without hesitation, and so do the command-line tools that anyone building a delivery chain already has. Browsers, phones and most desktop music players do not — they identify audio by container and see something they have no parser for.

That is worth setting expectations about, because a file that will not open looks broken and is not. If somebody else has to play the result, send them an M4A. If a machine has to read it, the stream is correct.

The extraction runs locally, which suits build pipelines

The work happens in the browser tab on your own processor and nothing carrying the video is sent anywhere. The free tier takes files up to 100 MB and up to a hundred files in a batch, with no account and no daily count.

For the audiences this page is written for that is mostly a convenience argument: source material for a delivery chain tends to be large, unreleased, or under a contract that says where it may be stored. Not moving it is simpler than negotiating about where it went.

How to pull an AAC stream out of an MP4

  1. Confirm that something downstream really wants a bare ADTS stream — if not, take the M4A.
  2. Drop the MP4 here and choose a quality band for the stream.
  3. Download the .aac and expect VLC or FFmpeg to open it rather than an ordinary music player.

MP4 and AAC: a container against the stream inside it

MP4 compared with AAC
MP4AAC
Full nameMPEG-4 VideoAdvanced Audio Coding
File extension.mp4.aac
Media typevideo/mp4audio/aac
CompressionLossy — file size is bought with qualityLossy — file size is bought with quality
First published20011997
Published byMPEGMPEG
SpecificationISO/IEC 14496-14ISO/IEC 13818-7
LicensingOpen standardOpen standard
Standing todayCurrentCurrent
Audio channelsup to 48
Opens in a browserEvery browserEvery browser
Considered insteadWebM, MKV, MOVMP3, OPUS

Opening the result

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

What each format is for

MP4 is MPEG's format, published in 2001. The specification is ISO/IEC 14496-14, 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.

MP4 to AAC: ADTS, players and the M4A question

Are my MP4 files uploaded anywhere?

No. This conversion runs entirely inside your browser, so the file never leaves your device. You can confirm it yourself: open the network tab of your browser's developer tools and convert something. You will see the page load, plus the analytics and advertising the site is paid for with — and nothing carrying your file. The engine behind this particular pair is mediabunny, a wrapper around WebCodecs, which borrows your device's own hardware decoders; your browser fetches it once and caches it.

What exactly is in the .aac file?

A bare ADTS elementary stream: AAC frames one after another, each with a small header, and nothing else. There is no container around them, so there is no metadata, no cover art, no chapter list and no seek index. That is what makes it useful to a segmenter or a decoder and useless to a music library.

Should I be converting to M4A instead?

Probably, if the file is for listening. M4A holds the same AAC audio inside an MPEG-4 container with proper title and artwork fields, and every player and phone handles it. Choose the bare stream only when something downstream specifically requires it.

Can the .aac file hold more than one soundtrack?

No. An ADTS stream carries exactly one audio track, so a video with a second language or a commentary loses those. If you need more than one, the audio has to go into a container that can hold them.

Is the audio copied or re-encoded?

Re-encoded. The MP4 already held AAC, so a copy would have been possible in principle, but this path decodes and encodes again — one generation of loss. For a stream headed into a delivery chain that is normally acceptable; for anything being archived it is not.

Will the .aac play if I double-click it?

Sometimes. VLC and FFmpeg read raw ADTS without complaint; several media players and most phones do not recognise the extension and will refuse it. That is not a fault in the file — it is a stream, and stream players are the things that read streams.

Why do the durations sometimes look wrong?

Because there is no container header stating the length. A player has to estimate the duration by scanning the frames, and on a variable-bitrate stream the estimate can drift until the whole file has been read. A containerised file such as M4A states its duration up front and never has this problem.

More about these formats