| Variant | Year | Optimal Range | Compression Tricks |
|---|
| AAC-LC | 1997 | 128-256 kbps | Standard MDCT compression |
| HE-AAC v1 (AAC+) | 2003 | 64-96 kbps | + Spectral Band Replication |
| HE-AAC v2 (eAAC+) | 2004 | 24-48 kbps | + Parametric Stereo |
| AAC-LD | 1999 | 64-128 kbps | Low Delay (real-time) |
| AAC-ELD | 2007 | 32-64 kbps | Enhanced Low Delay |
The "tricks" matter. SBR reconstructs high frequencies from a lower-frequency reconstructed signal. PS reconstructs stereo from a mono signal plus parameters. These add features that raw AAC-LC can't match at the same bitrate.
AAC-LC is the production default for:
- Music streaming at 128+ kbps (Spotify Premium, Apple Music)
- Video soundtracks at 192+ kbps (YouTube, Netflix)
- Podcast delivery at 128 kbps
- Any high-bitrate scenario where AAC-LC is "good enough"
For most modern delivery: AAC-LC. The fanciness of HE-AAC variants doesn't help at adequate bitrates.
For mastering specifics, see Logic Pro Bounce Settings.
HE-AAC v1 shines at 64-96 kbps:
- Low-bandwidth radio streaming
- Mobile-first content where bandwidth is constrained
- Internet radio with budget delivery
- Some iOS notification sounds (system uses HE-AAC for size)
The SBR (Spectral Band Replication) reconstructs the upper octave of audio from cues in the lower octaves. At 64 kbps mono, HE-AAC v1 is roughly equivalent to AAC-LC at 96 kbps mono.
HE-AAC v2 is for very low bitrate:
- 24-32 kbps voice content
- Bandwidth-extreme scenarios (low-quality mobile)
- DAB+ digital radio
- Some VoIP applications
HE-AAC v2 adds Parametric Stereo: encode mono plus a few stereo parameters. The reconstruction approximates the original stereo at very low bandwidth.
For voice-only content at 32 kbps: HE-AAC v2 mono produces clearer audio than AAC-LC at the same bitrate.
For FFmpeg AAC-LC:
ffmpeg -i input.wav -c:a aac -b:a 192k -profile:a aac_low output.m4a
For FFmpeg HE-AAC v1:
ffmpeg -i input.wav -c:a libfdk_aac -profile:a aac_he -b:a 64k output.m4a
For FFmpeg HE-AAC v2:
ffmpeg -i input.wav -c:a libfdk_aac -profile:a aac_he_v2 -b:a 32k output.m4a
libfdk_aac is the high-quality AAC encoder. Default aac encoder is built-in and slightly lower quality but doesn't require Fraunhofer FDK library. For production: use libfdk_aac if available.
| Platform | AAC-LC | HE-AAC | HE-AAC v2 |
|---|
| Apple Music | Yes | Yes | Yes |
| Spotify | Yes | Yes | Yes |
| YouTube | Yes | Yes | Limited |
| iOS | Yes | Yes | Yes |
| Android | Yes | Yes | Yes |
| Windows | Yes | Yes | Yes |
| Browsers | Yes | Yes | Limited |
| Bluetooth audio | Yes | Yes (recent) | Yes (recent) |
| DAB+ Radio | n/a | n/a | Yes (standard) |
All variants are universally supported on modern platforms. The only gotchas: very old Bluetooth (pre-2010) and some legacy browsers.
Subjective listening tests:
| Bitrate | AAC-LC | HE-AAC v1 | HE-AAC v2 |
|---|
| 24 kbps | Unusable | Borderline | Acceptable |
| 32 kbps | Poor | OK | Good |
| 48 kbps | Mediocre | Good | Excellent |
| 64 kbps | OK | Excellent | Excellent |
| 96 kbps | Good | Excellent | Use HE for stereo |
| 128 kbps | Excellent | Slightly worse | Use AAC-LC |
| 192 kbps | Excellent | Use AAC-LC | Use AAC-LC |
| 256 kbps | Excellent | Use AAC-LC | Use AAC-LC |
The crossover: at 128 kbps, AAC-LC catches up. Above 192 kbps, AAC-LC is reference quality.
SBR (in HE-AAC) takes the lower-frequency reconstruction and uses it to synthesize the high frequencies. The encoder transmits "instructions" for high frequency reconstruction in side information.
The result: at 64 kbps, the top octave (8-16 kHz) sounds reasonable instead of completely missing. Without SBR, AAC-LC at 64 kbps cuts off around 12 kHz.
Quality trade-off: SBR's reconstruction isn't perfect. Cymbals, sibilance, and high-frequency detail are approximated. For some content (orchestral music with prominent strings), the difference is noticeable.
PS (in HE-AAC v2) encodes mono audio plus stereo cues. The encoder strips stereo to mono, then transmits position information. The decoder reconstructs stereo from these cues.
The result: at 32 kbps, HE-AAC v2 stereo sounds dramatically better than AAC-LC stereo at the same rate. AAC-LC at 32 kbps stereo sounds "phasey" because it's trying to encode two channels with too few bits.
Quality trade-off: PS reconstructs stereo width well but loses spatial precision. For critical music listening, this matters. For voice content: irrelevant.
For 5-minute audio:
| Format | Bitrate | File size |
|---|
| AAC-LC stereo | 128 kbps | 4.5 MB |
| AAC-LC stereo | 192 kbps | 6.8 MB |
| AAC-LC mono | 96 kbps | 3.4 MB |
| HE-AAC v1 stereo | 64 kbps | 2.3 MB |
| HE-AAC v2 stereo | 32 kbps | 1.1 MB |
| HE-AAC v2 stereo | 48 kbps | 1.7 MB |
For mobile-first content: HE-AAC v2 at 48 kbps sounds remarkably good for half the size of AAC-LC at 96 kbps.
Quality drops at low bitrates with AAC-LC: bitrate too low for variant. Switch to HE-AAC v1 or v2.
HE-AAC sounds unnatural at high bitrate: bitrate too high for variant. SBR reconstruction adds slight artifacts above 96 kbps. Switch to AAC-LC.
Some Android devices reject HE-AAC v2: hardware decoder missing on older chipsets. Default to HE-AAC v1 for broader compatibility.
Audio plays at half speed: codec mismatch. Verify with ffprobe that the audio codec metadata matches what the player expects.
Stereo separation disappears at low bitrate: parametric stereo at very low bitrate. Acceptable trade-off for the bitrate; consider mono for voice.
For background on audio bitrate, see Audio Bitrate Quality Guide.
MP4 is a container; AAC is a codec inside. Most M4A files contain AAC-LC. M4A specifically is AAC-encoded MP4. So "MP4 audio" typically means "AAC in MP4 container."
Apple Music delivers AAC-LC at 256 kbps stereo. The "AAC 256" branding is Apple's marketing for their high-quality streaming. Technically just AAC-LC at 256 kbps.
No. Bluetooth A2DP supports SBC, AAC, aptX, LDAC, and others. AirPods use AAC. Most generic Bluetooth speakers use SBC by default.
Opus is more efficient than AAC at all bitrates. Adopted in the AOMedia/Mozilla ecosystem. AAC has wider compatibility (Apple, broadcast). For new codec choices: Opus. For broad compatibility: AAC.
For podcast delivery at 64 kbps mono: HE-AAC v1 sounds slightly better than AAC-LC. For 96 kbps mono: AAC-LC is fine. For most podcasts: AAC-LC at 64-96 kbps is the practical choice.
MP3 is older (1993) and less efficient. AAC at 128 kbps roughly equals MP3 at 192 kbps in quality. For new content, AAC is the better choice.
For AAC encoding: AAC-LC at 128-256 kbps for high-quality delivery, HE-AAC v1 at 64-96 kbps for bandwidth-conscious content, HE-AAC v2 at 24-48 kbps for mobile-first or voice-only. Match the variant to your bitrate range. Our audio converter handles AAC encoding at appropriate variant selection.