fileformer
search⌘KtranslateENexpand_moreupload_fileConvert
Converters8 file families · 44 direct conversions
What changes in a conversionarrow_forward
home / audio / aac · m4a

Convert AAC Audio Free

Convert AAC audio for free, and see how the codec works: everything here runs in your browser.

AAC is the codec. .m4a and .aac are two ways to carry it.

An .m4a is an MP4 container: a two-byte AudioSpecificConfig describes the stream once, a sample table lists every frame, and iTunes-style atoms hold tags and cover art. A raw .aac is ADTS: the same frames, each with its own 7-byte header. Every AAC encoder adds silent priming samples at the start and padding at the end, and only some players cut them. The sample here is encoded by your browser, and the page measures that delay itself.

folder_openOpen .m4a / .aacSample .m4aSame frames as .aac (ADTS)downloadDownload
arpeggio.m4a: 259 AAC-LC frames from your browser, muxed here with edit list, iTunSMPB, tags and cover; encoder delay measured by decoding: 465 samples
AudioSpecificConfig of the loaded file (esds → DecSpecificInfo)12 10 → mp4a.40.2
00010AOT0100sf0010ch0fl0core0ext
audioObjectType2 = AAC LC
samplingFrequencyIndex4 = 44100 Hz
channelConfiguration2 = stereo (L R)
frameLengthFlag0 = 1024-sample frames
dependsOnCoreCoder0 = no
extensionFlag0 = 0

Where the real audio starts and stops

from iTunSMPB · 265,216 decoded samples in 259 frames
priming 465264,600 samples of audiopadding 151
who says how longsamplessecondswhere it comes from
all frames decoded265,2166.0140 sstts sample table: 259 frames
mdhd media duration265,2166.0140 strack header, in the media timescale
edit list (elst)264,6006.0000 sstarts at media time 465: the priming samples are skipped
iTunSMPB264,6006.0000 sApple gapless tag: delay 465, padding 151
your browser (decodeAudioData)264,6006.0000 strimmed to the real audio: gapless info honoured
bitrate per second · from stsz sample sizesavg 128 kb/s · frames 278-478 B · esds says avg 128, max 160
box tree · M4A [M4A mp42 isom] · 46 boxes
0ftypmajor M4A · compatible M4A mp42 isomfile type: which specs a reader needs to understand the filepayload 4D 34 41 20 00 00 00 00 4D 34 41 20 …28 B
28mooveverything except the audio bytes: tracks, timing, tags8.8 KB
36mvhdtimescale 1000 · duration 6000 = 6.000 s · next track 2movie header: overall timescale and lengthpayload 00 00 00 00 00 00 00 00 00 00 00 00 …108 B
144trakone track (here the only one, audio)1.5 KB
152tkhdtrack 1 · flags enabled in-movie · duration 6000 · volume 1track header: id, length, enabled flagpayload 00 00 00 03 00 00 00 00 00 00 00 00 …92 B
244edtsedit list container36 B
252elstplay 6000 (movie units) from media time 465 → skips 465 priming samplesedit list: which part of the decoded track to actually playpayload 00 00 00 00 00 00 00 01 00 00 17 70 …28 B
280mdiamedia container for this track1.4 KB
288mdhdtimescale 44100 · duration 265,216 samples · lang undmedia header: the track’s own clock and languagepayload 00 00 00 00 00 00 00 00 00 00 00 00 …32 B
320hdlrtype “soun” · name “SoundHandler”handler: what kind of data this track holdspayload 00 00 00 00 00 00 00 00 73 6F 75 6E …45 B
365minfmedia information1.3 KB
373smhdbalance 0sound media header: stereo balancepayload 00 00 00 00 00 00 00 0016 B
389dinfdata information36 B
397dref1 entrydata reference: where the samples are storedpayload 00 00 00 00 00 00 00 01 00 00 00 0C …28 B
413url flags 1: self-containedflag 1 = in this same filepayload 00 00 00 0112 B
425stblsample table: the index of every AAC frame1.2 KB
433stsd1 entrysample description: which codec, how many channels, what ratepayload 00 00 00 00 00 00 00 01 00 00 00 4B …91 B
449mp4a2 ch · 16-bit · 44100 HzMPEG-4 audio sample entrypayload 00 00 00 00 00 00 00 01 00 00 00 00 …75 B
485esdsoti 0x40 · avg 128 kb/s · max 160 · ASC 12 10 = mp4a.40.2elementary stream descriptor: carries the AudioSpecificConfigpayload 00 00 00 00 03 19 00 01 00 04 11 40 …39 B
524stts1 run(s): 259 × 1024 samplestime-to-sample: duration of each framepayload 00 00 00 00 00 00 00 01 00 00 01 03 …24 B
548stsc1 run(s): from chunk 1, 259 frames per chunksample-to-chunk: how frames are grouped into chunkspayload 00 00 00 00 00 00 00 01 00 00 00 01 …28 B
576stsz259 frames · 278-478 B eachsample sizes: bytes of each framepayload 00 00 00 00 00 00 00 00 00 00 01 03 …1.1 KB
1,632stco1 chunk(s) · first at byte 8,863 = start of mdat data ✓chunk offsets: where each chunk starts in the file (32-bit)payload 00 00 00 00 00 00 00 01 00 00 22 9F20 B
1,652udtauser data container7.2 KB
1,660metahandler mdir/applmetadata container (iTunes style)payload 00 00 00 00 00 00 00 21 68 64 6C 72 …7.2 KB
1,672hdlrtype “mdir” · name “”handler: what kind of data this track holdspayload 00 00 00 00 00 00 00 00 6D 64 69 72 …33 B
1,705ilst8 tagsiTunes item list: one child per tag7.2 KB
1,713©namtitle37 B
1,721datatype 1 UTF-8: “Arpeggio in G”tag value with a type codepayload 00 00 00 01 00 00 00 00 41 72 70 65 …29 B
1,750©ARTartist34 B
1,758datatype 1 UTF-8: “FileFormer”tag value with a type codepayload 00 00 00 01 00 00 00 00 46 69 6C 65 …26 B
1,784©albalbum38 B
1,792datatype 1 UTF-8: “Format samples”tag value with a type codepayload 00 00 00 01 00 00 00 00 46 6F 72 6D …30 B
1,822©dayyear28 B
1,830datatype 1 UTF-8: “2026”tag value with a type codepayload 00 00 00 01 00 00 00 00 32 30 32 3620 B
1,850©tooencoding tool60 B
1,858datatype 1 UTF-8: “WebCodecs AAC encoder via FileFormer”tag value with a type codepayload 00 00 00 01 00 00 00 00 57 65 62 43 …52 B
1,910trkntrack number of total32 B
1,918datatype 0 binary: 00 00 00 03 00 0C 00 00tag value with a type codepayload 00 00 00 00 00 00 00 00 00 00 00 03 …24 B
1,942covrcover art6.7 KB
1,950datatype 14 PNG: 6.7 KB imagetag value with a type codepayload 00 00 00 0E 00 00 00 00 89 50 4E 47 …6.7 KB
8,667----freeform tag188 B
8,675mean“com.apple.iTunes”namespace of a freeform tag28 B
8,703name“iTunSMPB”name of a freeform tag20 B
8,723datatype 1 UTF-8: “ 00000000 000001D1 00000097 0000000000040998 00000000 00000000 0000000”tag value with a type codepayload 00 00 00 01 00 00 00 00 20 30 30 30 …132 B
8,855mdat96,535 bytes of AAC frames, starting at byte 8,863media data: the raw AAC frames, back to back96.5 KB
©namArpeggio in G
©ARTFileFormer
©albFormat samples
©day2026
©tooWebCodecs AAC encoder via FileFormer
trkn3 of 12
----:iTunSMPB 00000000 000001D1 00000097 0000000000040998 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
check_circleAAC in MP4.Sample entry mp4a, objectTypeIndication 0x40 (MPEG-4 Audio), codec string mp4a.40.2.
check_circlemoov before mdat.Playback can start as soon as the first bytes arrive.
check_circleCover art embedded.covr atom, 6.7 KB.
AudioSpecificConfig lab · tested against your browser

Two bytes decide whether a file plays

Pick a profile, rate and layout to build the config a muxer would write. HE-AAC can be signalled three ways: explicitly (object type 5 first), backward-compatibly (an LC config with a sync extension 0x2B7 that old decoders skip), or not at all, leaving the decoder to discover SBR in the bitstream and play at half the rate if it doesn’t. Each result is checked live with MediaSource and WebCodecs.

profile
AAC LCHE-AACHE-AAC v2MainLD
output sample rate
96 kHz48 kHz44.1 kHz32 kHz24 kHz22.05 kHz
channels
monostereo5.17.1
SBR signalling
12 10mp4a.40.2
00010AOT0100sf0010ch0fl0core0ext
MediaSource.isTypeSupported(“audio/mp4; codecs=mp4a.40.2”)supported
audio.canPlayType(same)probably
AudioDecoder.isConfigSupported(with these bytes)supported
ADTS could carry it?yes, profile 1
Hover a bit group for its meaning.
ADTS header lab

The same facts, repeated in front of every frame

ADTS was built for broadcast: a receiver can tune in anywhere, find the 0xFFF sync word and start decoding. That costs 7 bytes per frame (9 with CRC), about 2.3 kb/s at 44.1 kHz, and it can only describe profiles 1-4, so HE-AAC in ADTS is always signalled implicitly. Below is the header that goes with the config built above, for a frame of the size you set.

no CRC (7 bytes)
FF F1 50 80 2F 5F FC
111111111111syncword0ID00layer1prot01profile0100sf0private010ch0orig0home0cid bit0cid start0000101111010length11111111111buffer00blocks
syncword0xFFF ✓
IDMPEG-4
layer0
protection_absentno CRC
profileAAC LC (AOT − 1)
sf_index44100 Hz
channel_configstereo (L R)
frame_length378 bytes incl. header
buffer_fullness0x7FF = variable bitrate
raw_blocks1 raw data block(s)

Reference

AOTprofilewhat it is forbrowser
1AAC Mainoriginal MPEG-2 profile with prediction; rarely usedMSE no
2AAC LCLow Complexity: the AAC in almost every .m4aMSE yes
5HE-AACLC core at half rate + Spectral Band Replication; streaming at 48-64 kb/sMSE yes
29HE-AAC v2adds Parametric Stereo; down to about 24-32 kb/sMSE yes
23AAC LDlow delay, 480/512-sample frames for callsMSE no
39AAC ELDenhanced low delay with SBR; FaceTime-class voiceMSE no
42xHE-AACUSAC: speech and music at any bitrate, adaptive streamingMSE yes
34MP3 in MP4mp4a.40.34 or oti 0x6B: MP3 inside an MP4 container-
samplingFrequencyIndex (4 bits; 15 = explicit 24-bit rate)
096,000188,200264,000348,000444,100532,000624,000722,050816,000912,0001011,025118,000127,350
MIMEaudio/mp4 (.m4a), audio/aac (ADTS), audio/x-m4a (Apple, unregistered)
Extensions.m4a music, .m4b audiobook with chapters, .m4r ringtone, .aac / .adts raw
Magic bytesMP4: “ftyp” at offset 4 with brand M4A, M4B or mp42 · ADTS: FF F1 (MPEG-4) or FF F9 (MPEG-2)
Frame1024 samples (960 in DAB+); HE-AAC outputs 2048 per frame
DelayApple encoders 2112 samples, FFmpeg AAC 1024, Fraunhofer FDK 2048 for HE-AAC
Tagsmoov/udta/meta/ilst atoms (©nam, ©ART, covr, ----:com.apple.iTunes:…), not ID3
BitratesLC transparent for most music near 192-256 kb/s stereo; HE-AAC aimed at 32-64 kb/s
StandardsISO/IEC 13818-7 (MPEG-2 AAC), ISO/IEC 14496-3 (MPEG-4 Audio), 14496-14 (MP4 file), 14496-12 (ISOBMFF)
1997MPEG-2 AACFraunhofer, AT&T, Dolby, Sony and Nokia standardise AAC as the successor to MP3.
1999MPEG-4 AudioAAC becomes the core of MPEG-4, with object types and the AudioSpecificConfig.
2003iTunes StoreApple sells music as 128 kb/s AAC in .m4a/.m4p.
2003HE-AACSpectral Band Replication added; used by DAB+ and internet radio.
2006HE-AAC v2Parametric Stereo standardised for very low bitrates.
2012xHE-AACUSAC (ISO/IEC 23003-3) unifies speech and music coding.
2020Android & ApplexHE-AAC playback ships widely for adaptive streaming.

Doing something with AAC

Frequently Asked Questions

How do I convert AAC to MP3?

Add your .aac file to the converter, choose MP3 as the output, and download it. Both AAC and MP3 are lossy formats, so the audio is re-encoded; picking a reasonable bitrate keeps quality close. MP3 plays on nearly every device, which is the main reason people convert from AAC.

Can Audacity or VLC convert AAC to MP3?

Both Audacity and VLC can convert AAC to MP3, though each needs a few settings changed first. You can skip that setup and convert AAC to MP3 right here in your browser instantly, with no install and no signup, then download the finished MP3.

Can I convert AAC to FLAC or WAV?

Yes. You can convert AAC to WAV for uncompressed editing or to FLAC for lossless compression. Because AAC is already lossy, these targets preserve the current quality but cannot restore detail AAC removed. Both conversions are free and run in your browser.

Can you convert AAC to ALAC?

Yes. You can convert AAC to ALAC (Apple Lossless), which is convenient for an Apple-centric library. Keep in mind that wrapping lossy AAC in a lossless ALAC container does not add back quality; it simply stores the existing audio without further loss. Conversion here is free.