Along with SBC and Qualcomm’s aptX, AAC is one of the most commonly supported Bluetooth codecs in the wireless headphone and speaker markets. It’s also the default audio data compression used by Apple’s iTunes and Google’s YouTube, and is supported across both iPhone and Android smartphones. Designed as a successor to the MP3, AAC files come in a similar range of quality options. Even the Bluetooth version of the codec is highly flexible, as we’ll see in a moment. The AAC audio format supports audio quality up to 24-bit 96kHz, but in the Bluetooth space, we are limited slightly below CD quality at best.
In this article we take a deep dive into some objective measurements to see how AAC compares with CD quality and SBC, and how that performance can vary depending on the type of device it’s being used with.
Editor’s note: this article was updated on July 4, 2021, for clarifications to technical wording and to add a contents menu.
AAC doesn’t match CD-quality output
The graph above is a little bit of a headache to read because the results we obtained for AAC are so varied. We tested AAC with both lossless, and AAC file types—both producing measurably different results. Different smartphones also perform very differently with AAC, which is surprising given that the same phones perform identically with regular SBC Bluetooth.
You might like: High bitrate audio is overkill: CD quality is still great
Before we zoom in on the graphs to highlight these differences more closely, you need to know a few things. Audio frequency is measured logarithmically, and there’s very little content in music above 16kHz. The bulk of what you hear appears well below 10kHz. The upper limit of our hearing is also limited to somewhere between 10kHz to 20kHz depending on age, so bear that in mind when reviewing these results.
High-frequency cutoff varies widely from device to device with AAC. None of them approach Hi-Res—as expected—but AAC doesn’t reach frequencies high enough to match CD quality, LDAC, or standard Bluetooth’s SBC in any instance. That’s concerning for anyone who prizes audio quality over convenience.
The Huawei P20 Pro performs the worst, with a roll-off occurring at a stunningly low 14.2kHz—very much still with the range of most people’s hearing. The LG V30 performs marginally better by rolling off at 16kHz, followed by the Samsung Galaxy Note 8 at 17kHz. The iPhone 7 performed by far the best, extending its limit up to 18.9kHz. Although Apple’s phone begins a slower roll-off that has a -3dB point set at about 18kHz.
AAC doesn't reach frequencies high enough to match CD quality or standard Bluetooth's SBC in any instance. That's concerning for anyone who prizes audio quality over convenience.
To test the noise floor, we’re going to look at the best and worse case scenarios for AAC—so the iPhone 7 and Huawei P20 Pro respectively. The Samsung Galaxy Note 8 is included as a mid-point in quality. We’re also playing back lossless content at the moment, to test the Bluetooth codec’s compression rather than be bound by limitations of the file type.
First, this data showcases a great example of the psychoacoustic compression algorithms used by AAC. Note how the noise floor drops between the test spikes: AAC completely discards this data, as there’s nothing to hear.
What we’re interested in, though, is the noise around the bits of audio we want to hear, checking that they aren’t masked or distorted. The iPhone 7’s implementation of AAC does a reasonable job at all frequencies, peaking at -91dBFS at 1kHz. This falls just shy of 16 bits worth of data. We can see that the noise level around our test tones seems to roughly follow the amplitude. This explains why the noise is higher around the louder 1kHz peak tone, as AAC exploits our brain’s tendency not to notice soft sounds in the presence of louder ones in order to hide the noise.
Poor performance on Android phones is not the codec’s fault
The key finding from all of the tests is that Android smartphones perform much worse than Apple’s iPhone when using the AAC codec. However, that’s not surprising: Android simply doesn’t handle AAC well.
The reason for this is due to the way Android handles encoding for some Bluetooth codes. Not only is the encoding quality linked to connection quality but also to Android’s Energy Aware Scheduling (EAS) algorithms. EAS governs how a phone prioritizes CPU clock speeds versus energy efficiency, and Bluetooth encoding can be assigned a priority like any other task. It’s conceivable that even the battery saver function in Android would affect your music quality some.
AAC requires much more processing power than SBC or aptX.
AAC uses psychoacoustic modeling to transmit data, which makes it a very processor-heavy codec compared to SBC or aptX. Therefore, smartphones that prioritize energy efficiency over performance will encode AAC Bluetooth to a much lower bit rate and quality. For example: the Huawei P20 Pro, famous for its focus on power optimization, produces an AAC result inferior to the Galaxy Note 8 and iPhone 7.
Even our best Android phone in the mix, The Galaxy Note 8, is clearly worse than the iPhone 8 across all frequencies. It offers a reasonably consistent level of noise at around -73dB around all of our test tones, and impressive background noise of -110dB. At -73dB we’re a long way from CD quality (96dB), but you will hear noise if you crank your tunes. The Huawei P20 Pro’s noise floor is considerably worse than the Note 8, hitting highs of -42dB around our 1kHz tone. This isn’t quite as bad as it looks, but finer details from real music files will end up lost under this noise floor. Definitely nothing close to CD quality here.
Just to showcase the way that AAC compression changes quite substantially depending on the content being played, here’s our square wave test too:
All of the codecs are very quiet down below 1kHz, as there’s no content. However, the noise floor for the iPhone creeps up to just -80dBFS at 1kHz and reaches -69dBFS for the Galaxy Note 8. The iPhone 7 has a 19kHz roll-off that is also noticeable with the lower final peak. The takeaway is that AAC’s noise shaping is highly content dependent.
Does AAC Bluetooth pass AAC lossless files untouched?
It’s reasonable to assume that AAC Bluetooth passes AAC audio files over the air untouched, especially given the shared names. However, there’s never been any conclusive testing done to prove this, so we converted our lossless test files to AAC and re-ran the tests.
The frequency responses are identical for each phone whether playing lossless or AAC file types. We can also clearly see that none of the phones reach the same 20kHz limit as our AAC input file type. Even Apple’s iPhone doesn’t pass through AAC files untouched, so it appears to be re-encoding the file. The out-of-band noise floors are also clearly differently shaped in each instance, and none reach as low as our test file.
It’s a similar situation with the noise floor: Apple’s AAC implementation remains closest to the source material, but even here we can see an extra 15dB or more of noise added to the signal. The Samsung Galaxy Note 8 and Huawei P20 Pro perform much the same as before—and are clearly worse than the iPhone 7 again. Even so, all of these phones re-pass an AAC source file back through the encoder, degrading quality. Just like with lossless files, the difference lies in how much additional compression is applied to the files on this second pass.
AAC isn’t perfect
AAC is one of the more intriguing Bluetooth codecs to analyze, owing to its psychoacoustic, rather than frequency band, quantization. This makes judging its quality a little tougher, as we have to take into consideration auditory masking rather than the consistent noise floor that we see with other codecs, CD, and Hi-Res files.
With that in mind, AAC punches above its raw numbers in terms of file size, much like the MP3 does. High-quality implementations, like that from the iPhone 7, are going to be very hard to distinguish from CD quality and other high-quality Bluetooth codecs. However, lower bit rate implementations like those seen on some of our Android phones are nowhere near CD quality in terms of frequency response or noise. Avoid using AAC on these models.
Android phones are nowhere near CD quality in terms of frequency response or noise. Avoid using AAC on these models.
The biggest concern with AAC is its hugely variable performance between smartphones. Even Bluetooth’s default SBC didn’t see anything approaching this variety between phones I’ve tested. If you’re an Android user, you’re probably better off sticking with SBC, or opting for aptX or LDAC if available.