File types · Explainer

The AAC file (.aac)

An AAC file is a stream of audio compressed with Advanced Audio Coding, the successor to MP3, with a small header in front of every frame and no container around it. This guide explains what's inside one, how the AAC profiles differ, the quirks worth knowing, and has free sample AAC files to download for testing.

At a glance

Full name
Advanced Audio Coding, in ADTS (Audio Data Transport Stream) framing
Extensions
.aac; rarely .adts
MIME type
audio/aac (registered with IANA in 2018); audio/aacp and audio/x-aac are also seen
Kind
Binary, lossy compressed audio: frames with 7- or 9-byte headers, no container
Standard
ISO/IEC 13818-7 (MPEG-2 AAC) and ISO/IEC 14496-3 (MPEG-4 Audio), by MPEG
First released
1997 as part of MPEG-2; added to MPEG-4 in 1999; HE-AAC in 2003, HE-AAC v2 in 2006
Profiles
AAC-LC (most files), HE-AAC (adds SBR), HE-AAC v2 (adds SBR and parametric stereo)
Sample rates
13 standard rates from 7,350 to 96,000 Hz; 44.1 and 48 kHz are the usual ones
Opens with
Most web browsers, VLC, Windows Media Player, iPhone and Android, most music players
Typical size
About 1 MB per minute at 128 kbps (128,000 bits × 60 s ÷ 8 = 960,000 bytes)
Magic number
None; a 12-bit sync word, so files usually start FF F1 (FF F9 for MPEG-2 AAC, FF F0/FF F8 with CRC), or 49 44 33 (ID3) if tagged

The basics

What is an AAC file?

AAC (Advanced Audio Coding) is the lossy audio codec that succeeded MP3. It sounds better than MP3 at the same bit rate, particularly at low bit rates, and it's the audio inside most MP4 videos, M4A music files, streaming services, digital radio and phone recordings. Most of the time you meet AAC inside a container, as an .m4a or .mp4 file.

A .aac file is AAC without that container: the raw stream of frames, each with a small ADTS header that repeats the format details. That makes it easy to stream and to cut, like an MP3, but it loses what a container provides: an index for seeking, an exact duration, gapless playback information and proper tags. You'll typically find .aac files when audio is extracted from a video, recorded from an internet radio stream, produced by some voice recorders and screen recorders, or used as segments in HTTP Live Streaming.

Codec, not container

"AAC" names the compression. An M4A file and an AAC file can hold exactly the same compressed audio; the difference is the packaging. Converting between them with -c copy changes the packaging without re-encoding.

Anatomy

What's inside an AAC file

A raw AAC file is nothing but ADTS frames back to back. Each frame is a header of 7 bytes (9 with a checksum) followed by one block of compressed audio, about 23 milliseconds at 44.1 kHz. The header's fields don't line up with byte boundaries, so the annotation below splits them by bits. Here are the real bytes of sample-adts-lc.aac, our 10-second sample.

sample-adts-lc.aac (hex)
offset    bytes                       meaning
0         FF F1 50 80 2E 62 44        frame 0: ADTS header, 7 bytes
            FF F                        sync word: 12 bits of 1
               1                        MPEG-4, layer 0, no CRC
                  50 8 …                AAC-LC, 44,100 Hz, 2 channels
                       … 2E 6 …         frame length: 371 bytes
                           … 2 44       buffer fullness 0x091, 1 block
7         21 11 45 00 14 50 01 46 …   AAC audio data: 364 bytes
371       FF F1 50 80 2E 62 44        frame 1: 371 bytes
742       FF F1 50 80 3C 42 0C        frame 2: 482 bytes
1,224     FF F1 50 80 20 C2 …         frame 3: 262 bytes
…                                     433 frames in all, 262 to 482 bytes
160,496   FF F1 50 80 2E 82 44        frame 432: 372 bytes
160,868                               end of file: no index, no trailer
  1. 1FF F

    The sync word

    12 bits that are all 1. Every frame starts with it, so a player can start in the middle of a stream and find the next frame. It's not a unique signature: other formats, and the audio data itself, can contain the same bits, so a parser checks that the next frame starts where this header says it will.

  2. 21 (0001)

    ID, layer and protection

    1 bit of MPEG version (0 for MPEG-4, 1 for MPEG-2, which gives FF F9), 2 bits of layer (always 0) and a protection-absent bit. 1 means there's no CRC, so the header is 7 bytes; 0 adds a 2-byte CRC, as in our sample-crc-mono-48khz.aac, which starts FF F0.

  3. 350 (0101 0000)

    Profile and sample rate

    2 bits of profile, 01, which is the audio object type minus 1: object type 2, AAC-LC. Then a 4-bit sample rate index, 0100 = 4, meaning 44,100 Hz, and a private bit.

  4. 480 (10 …)

    Channels

    A 3-bit channel configuration split across bytes 2 and 3: 010 = 2, stereo. The remaining bits of byte 3 are flags for originality and copyright, all 0 here.

  5. 5… 2E 6 …

    Frame length

    13 bits giving the length of the whole frame, header included: 371 bytes. This is how a reader steps from frame to frame. 13 bits caps a frame at 8,191 bytes.

  6. 6… 2 44

    Buffer fullness and block count

    11 bits of decoder buffer fullness (0x091 here, a constant-bit-rate stream; 0x7FF signals variable bit rate), then the number of audio blocks in the frame minus 1: 0, so one block of 1,024 samples.

  7. 721 11 45 00 …

    The audio data

    The compressed audio for 1,024 samples per channel: 364 bytes in this frame. The encoder counts the 7-byte header as part of its 128 kbps budget, so in our M4A sample, made with the same encoder from the same music, the audio blocks are 7 bytes bigger on average and carry no headers: their sizes live in the index instead.

  8. 8433 frames

    No index, no end

    The file simply stops after the last frame. Nothing records the total length, so a player works out the duration from the file size and bit rate, or by reading every header.

Versions

AAC-LC, HE-AAC and HE-AAC v2

ProfileWhat it addsTypical stereo bit rateUsed for
AAC-LC (Low Complexity)The core codecAbout 96 to 256 kbpsMusic downloads, video soundtracks, most .aac and .m4a files.
HE-AAC (v1, also called AAC+)Spectral band replication (SBR): the core codes the lower frequencies at half the sample rate, and the decoder rebuilds the highs from a few hintsAbout 32 to 64 kbpsInternet radio, streaming at low bit rates.
HE-AAC v2 (eAAC+)Parametric stereo (PS) on top of SBR: the core codes mono, plus parameters to recreate the stereo imageAbout 32 kbps and belowVery low bit rates, such as DAB+ digital radio and mobile streaming.
AAC Main, LTP, SSROlder or specialised toolsRare in files today.
AAC-LD, AAC-ELDLow delay for real-time useReal-time communication such as video calls; not usually stored as files.

The ADTS header has only 2 bits for the profile, so it can't say "HE-AAC" directly. HE-AAC files use implicit signalling instead: the header describes the AAC-LC core, and the decoder discovers SBR and PS inside the audio data. Our samples show it:

  • sample-he-aac.aac has headers that say AAC-LC at 22,050 Hz stereo. A full decoder finds the SBR data and outputs 44,100 Hz.
  • sample-he-aac-v2.aac has headers that say AAC-LC at 22,050 Hz mono. A full decoder outputs 44,100 Hz stereo.
  • A decoder without SBR plays only the core: the right pitch and speed, but dull, because everything above about 11 kHz is missing. One without PS plays the v2 file in mono.

That's why tools sometimes disagree about the same file: one reports 22.05 kHz mono from the headers, another 44.1 kHz stereo from the decoded audio. ffprobe reports the decoded values and the profile, HE-AAC or HE-AACv2.

Packaging

Raw AAC (.aac) vs AAC in M4A

`.aac` (ADTS)`.m4a` (MP4 container)
StructureA 7-byte header on every frameHeaderless frames, plus one index (moov) for the whole file
DurationEstimated from size and bit rate, or by reading every headerStored exactly
SeekingApproximate, unless the player scans the fileExact, from the frame table
Gapless playbackNot possible: the encoder delay at the start can't be recordedDelay and padding recorded, so players can trim them
Tags and cover artNone in the format; some tools prepend an ID3 tagFull iTunes-style tags, cover art, chapters
Streaming and cuttingStart anywhere, cut at any frame, append more framesNeeds the index; live streaming uses fragmented MP4

Our featured .aac file and the featured M4A sample were made by the same encoder from the same music at a constant 128 kbps. Both streams have 433 frames totalling 160,868 bytes, but in the ADTS file 3,031 of those bytes (433 × 7) are headers, while the M4A spends them on audio and keeps the frame sizes in its index. The M4A also records that the first 2,048 samples (about 46 ms) are encoder delay. Played from the .aac file, that delay can't be trimmed: decoders return 10.054 seconds for 10 seconds of music.

Two other raw AAC formats sometimes carry the .aac extension too. ADIF has a single header at the start of the file and none on the frames; it's rarely used today. LATM/LOAS is the framing used in digital TV broadcasts. Both are registered under the same media type, but not every player that handles ADTS handles them.

Metadata

Tags in AAC files: ID3 and HLS timestamps

ADTS has no place for a title or artist. In practice, two kinds of tag show up in .aac files:

  • ID3v2 tags, the same tags MP3 files use, placed before the first frame. The IANA registration for audio/aac allows ID3 frames at any frame boundary, and FFmpeg and many players read past them. Strict ADTS parsers may not.
  • HLS timestamps. In Apple's HTTP Live Streaming (RFC 8216), audio-only streams can be sent as "packed audio" segments of raw ADTS. Each segment must begin with an ID3 tag holding a PRIV frame owned by com.apple.streaming.transportStreamTimestamp, giving the time of its first sample.
  • APE tags at the end of the file are written by a few tools. Fewer players read them.

Our sample-1mb-id3.aac starts with an ID3v2.4 tag containing a title, artist, album, comment, URL and an HLS-style PRIV timestamp frame, padded to make the file exactly 1 MiB. If a player can't open it but opens our other samples, it doesn't skip ID3 tags.

Related formats

AAC vs MP3, Opus, Vorbis and FLAC

CodecCompressionNotes
AACLossyBetter than MP3 at the same bit rate. Supported by every current phone, browser and TV. Usually in .m4a or .mp4.
MP3LossyOlder and a little less efficient; the most compatible format there is. Also a raw frame stream, like ADTS.
OpusLossyOpen and royalty-free, better than AAC at low bit rates. Usually in .opus, .ogg or .webm.
VorbisLossyOpen and royalty-free, roughly AAC-LC quality. Usually in .ogg.
FLAC, ALACLosslessNo loss at all, but several times the size of a 128 kbps AAC file. Uncompressed CD audio is 11 times the size.

Converting an MP3 to AAC, or AAC to MP3, stacks the losses of both codecs. If you have a lossless original, encode from that.

Troubleshooting

Common AAC problems and their causes

  • Wrong duration, or seeking lands in the wrong place: ADTS has no index or length field, so players estimate. Remux into M4A for exact seeking: ffmpeg -i in.aac -c copy out.m4a.
  • Sounds muffled, or mono, on one device: an HE-AAC or HE-AAC v2 file on a decoder without SBR or parametric stereo. Re-encode as AAC-LC at a higher bit rate for that device.
  • A short silence at the start, or a gap between tracks: the encoder delay, about 46 ms at 44.1 kHz, which raw AAC can't mark for trimming. Use M4A for gapless albums.
  • Renamed to .m4a and now it won't play: renaming doesn't add a container. Remux with the command above instead.
  • Won't open at all: check the first bytes. A real ADTS file starts with FF Fx, or with ID3. A file starting ftyp at byte 4 is really an M4A; one starting ADIF is the older ADIF format; one starting 56 E0 to 56 FF may be LOAS/LATM.

How to

How to open, edit and convert an AAC file

  • Play it: double-click it. Windows Media Player, QuickTime Player on a Mac, iPhone and Android play .aac, and most browsers play it when you drag it in or put it online. VLC plays every variant.
  • Inspect it: ffprobe file.aac shows the profile, sample rate and channels after decoding. For the raw header values, read the first 7 bytes in a hex viewer.
  • Put it in a container without re-encoding: ffmpeg -i in.aac -c copy out.m4a. FFmpeg moves the header details into the M4A's index.
  • Extract AAC from a video without re-encoding: ffmpeg -i video.mp4 -vn -c:a copy audio.aac (or audio.m4a, usually the better choice).
  • Convert: to MP3, ffmpeg -i in.aac -c:a libmp3lame -q:a 2 out.mp3. To make AAC from WAV, ffmpeg -i in.wav -c:a aac -b:a 192k out.m4a.
  • Edit it: Audacity (with its FFmpeg import option) or any audio editor. Exporting re-encodes, so export once at the end.

Is an AAC file safe?

It can't run code. As with any media format, a deliberately malformed file could trigger a decoder bug, so keep players and browsers updated.

Free downloads

Sample AAC files to download

Free sample raw AAC (ADTS) files for testing players, parsers, streaming pipelines and upload forms: AAC-LC, HE-AAC v1 and v2, a CRC-protected stream and a tagged 1 MiB file. The sounds are generated chords and a sweep, encoded with the Fraunhofer FDK AAC encoder. Each file was checked with ffprobe and decoded in full without errors.

sample-adts-lc.aac · 157.1 KBDownloadOpen

What's inside sample-adts-lc.aac

A 10-second AAC-LC file at a constant 128 kbps, 44.1 kHz stereo, in ADTS frames with no tags: the file shown byte by byte in the anatomy above.

  1. The music

    Five two-second chords (C, A minor, F, G, C), the same as our MP3, M4A and Ogg samples. Bass notes lean left and upper notes right.

  2. The first bytes

    FF F1: no ID3, no container, the file starts directly with a frame header.

  3. Every frame header

    MPEG-4 AAC-LC, 44,100 Hz, 2 channels, no CRC, constant bit rate.

  4. 433 frames

    Each holds 1,024 samples per channel, between 262 and 482 bytes long, averaging 371.5 bytes.

  5. Duration

    433 × 1,024 = 443,392 samples, which decode to 10.054 seconds: 10 seconds of music plus the encoder's delay and padding, which ADTS can't mark.

  6. Compared with M4A

    Our featured M4A sample has the same music, encoder and bit rate, and the same 160,868 bytes of AAC stream; here, 3,031 of those bytes are ADTS headers. Remuxing this file to M4A with ffmpeg -c copy keeps every audio block byte for byte.

All sample AAC files

  • AAC-LC in ADTS, 128 kbps

    sample-adts-lc.aac · 157.1 KB (160,868 bytes)

    10 seconds, AAC-LC at a constant 128 kbps, 44.1 kHz stereo. Plain ADTS frames, no tags, starting FF F1 50 80.

    • Checking a player, host or upload form handles .aac
    • Testing ADTS parsers and file-type detection
  • HE-AAC (v1) at 48 kbps

    sample-he-aac.aac · 59.5 KB (60,904 bytes)

    The same music with spectral band replication. Headers say 22,050 Hz stereo; a full decoder outputs 44,100 Hz.

    • Testing SBR support: without it, the sound is dull
    • Checking that tools report the decoded sample rate
  • HE-AAC v2 at 32 kbps

    sample-he-aac-v2.aac · 39.9 KB (40,861 bytes)

    SBR plus parametric stereo. Headers say 22,050 Hz mono; a full decoder outputs 44,100 Hz stereo.

    • Testing parametric stereo support: without it, the sound is mono
    • Low-bit-rate streaming pipelines
  • ADTS with CRC, 48 kHz mono

    sample-crc-mono-48khz.aac · 78.6 KB (80,508 bytes)

    10 seconds of AAC-LC at 64 kbps, 48 kHz mono, with CRC protection: 9-byte headers starting FF F0.

    • Parsers that assume a 7-byte header
    • Decoders and tools that assume 44.1 kHz stereo
  • 1 MB AAC file with an ID3 tag

    sample-1mb-id3.aac · 1 MB (1,048,576 bytes)

    A 60-second sine sweep from 20 Hz to 20 kHz, AAC-LC at 128 kbps, after an ID3v2.4 tag (with an HLS-style PRIV timestamp) whose padding makes the file exactly 1,048,576 bytes (1 MiB). Turn the volume down: it's a test tone.

    • Upload and size-limit tests
    • Checking that players and parsers skip an ID3 tag before ADTS

Ways to test with them

  • Profiles: play the LC, HE-AAC and HE-AAC v2 files on the device you care about. They should sound alike. A dull HE-AAC file means no SBR; a mono HE-AAC v2 file means no parametric stereo.
  • Header parsing: sample-crc-mono-48khz.aac has 9-byte headers. A parser that skips 7 bytes per frame reads the CRC as audio and fails.
  • Detection: the featured file starts with FF F1, the 1 MB file with ID3. A detector that only accepts one of these will reject the other.
  • Duration: the four short files should report about 10 seconds and the 1 MB file about 60. Big differences mean the player is estimating from the wrong bit rate.
  • Upload limits: sample-1mb-id3.aac is exactly 1 MiB, so you can test a limit at the boundary.

Free to use for testing, teaching and demos, commercially or not, with no attribution needed. A link back to this page is always appreciated.

Put it online

Have an AAC file? Give it a link.

Drop an AAC file on 99helpers and it gets its own address that plays in the browser, with nothing to install. Share a recording or a stream capture as a link instead of an attachment.

Questions

AAC files, frequently asked

What does AAC stand for?

Advanced Audio Coding, the audio codec standardised by MPEG as the successor to MP3, first in MPEG-2 (1997) and then in MPEG-4.

Is AAC better than MP3?

Yes, at the same bit rate AAC usually sounds better, especially below 128 kbps. MP3's advantage is that even very old devices play it.

Is AAC lossless?

No, AAC is lossy. Apple's lossless format, ALAC, often lives in the same .m4a files, which causes confusion, but it's a different codec.

What's the difference between AAC and M4A?

AAC is the codec; M4A is a container. An .aac file is raw AAC frames with small headers. An .m4a file holds the same frames in an MP4 container with an index, tags and gapless information.

Why does my AAC file show the wrong length?

A raw .aac file has no index or length field, so players estimate the duration from the file size and bit rate. Remuxing it into M4A with ffmpeg -i in.aac -c copy out.m4a fixes it.

What is HE-AAC?

High-Efficiency AAC: AAC-LC plus spectral band replication, which rebuilds high frequencies from a few hints. It keeps music listenable at about 32 to 64 kbps. HE-AAC v2 adds parametric stereo for even lower bit rates.

Can browsers play .aac files?

Yes, current versions of Chrome, Edge, Safari and Firefox play ADTS AAC files. Firefox relies on the operating system's decoder for AAC.

How do I convert AAC to MP3?

Use a converter app, Audacity, or FFmpeg: ffmpeg -i in.aac -c:a libmp3lame -q:a 2 out.mp3. It's a lossy-to-lossy conversion, so use a good bit rate.

Related formats

Other file types explained

Keep going

Related

Sources

Last reviewed 27 October 2026.