Lossy Codecs in Mastering: What Streaming Actually Does to Your Audio

You send me a mix. I master it. I send it back as a 24-bit 44.1 kHz WAV. We've both checked it on monitors, on headphones, in the car, on a phone. It sounds right.

Then it hits Spotify. And it doesn't sound the same.

This is not about loudness normalization, which is a separate conversation I've written about elsewhere. This is about what happens to the audio itself when it gets encoded into a lossy format for delivery. Some streaming platforms deliver lossless audio to subscribers on the right tier. Most deliver lossy. And even the lossless platforms fall back to lossy encoding for lower tiers, mobile connections, or specific clients.

If you're serious about how your records translate, it's worth understanding what's actually happening inside that black box.

The Basic Problem

Lossy codecs exist because uncompressed audio is big. A stereo 24-bit 44.1 kHz WAV runs about 10 MB per minute. Multiply that by a billion streams a day and the bandwidth cost becomes impossible. So most streaming services encode your master into a lossy format, which discards data the encoder believes you won't miss.

The word "believes" is doing a lot of work in that sentence.

Lossy encoders use psychoacoustic models. These are mathematical approximations of what the human ear can and can't perceive, based on decades of research into masking thresholds, critical bands, and temporal resolution. The encoder analyzes your master frame by frame, decides which frequency components are masked or imperceptible, and throws them out. The remaining data gets packed into a much smaller file.

When the model is right, you don't notice. When the model is wrong, you do.

The Major Codecs in the Chain

MP3 (MPEG-1 Layer 3). The oldest codec still in active use. Developed at the Fraunhofer Institute in Germany, with Karlheinz Brandenburg doing much of the foundational work in the late 1980s and early 1990s. The story goes that Brandenburg used the a cappella version of Suzanne Vega's "Tom's Diner" to fine-tune the codec. He'd heard it on a radio down the corridor at Fraunhofer, recognized that compressing a warm human voice cleanly was the hardest problem a psychoacoustic encoder could face, and used it as his test case. Vega, who didn't know any of this until a parent at her daughter's nursery school told her about it years later, ended up with the unofficial title "Mother of the MP3." Brandenburg was choosing his test case deliberately. A solo voice exposes every codec artifact. Fix the codec for Vega and you fix it for everything.

That story tells you something about how codecs actually work. The ear is most sensitive to the human voice, especially when it's exposed and unaccompanied. Everything a lossy codec gets wrong becomes audible fastest on vocal material. Good codec development means finding the hardest case and engineering around it. Mastering in the codec era means understanding that the hardest case is probably somewhere in your record too.

The MP3 codec itself uses a hybrid filterbank combining a polyphase quadrature filter and a modified discrete cosine transform (MDCT). Supports bitrates from 32 kbps to 320 kbps. Most streaming at the "high quality" tier that still uses MP3 delivers at 320 kbps CBR or VBR. The encoder is mature and predictable. Its weaknesses are well-documented: pre-echo artifacts on sharp transients, stereo image smearing at lower bitrates, and high-frequency rolloff that varies by encoder (LAME being the gold standard reference).

AAC (Advanced Audio Coding). The successor to MP3, standardized in 1997 as part of MPEG-2 and refined in MPEG-4. Apple Music and YouTube use AAC variants heavily. The encoder is more efficient than MP3 at equivalent bitrates, particularly at the low end. Apple's AAC encoder (used in iTunes and Apple Music) is widely regarded as the best-sounding AAC implementation. Apple Music delivers AAC at 256 kbps VBR for standard quality. The codec handles transients better than MP3, with smaller pre-echo artifacts, but it still uses MDCT-based compression and shares some of the same fundamental limitations.

Ogg Vorbis. Open-source codec from the late 1990s, developed by Xiph.Org. Spotify's default codec for the mobile and desktop apps, used at bitrates from 96 kbps up to 320 kbps depending on tier. Vorbis uses an MDCT framework with channel coupling optimizations. It's efficient and transparent to most listeners at 320 kbps, but the encoder handles certain material (cymbals, reverb tails, dense stereo information) differently than AAC or MP3.

Opus. The newest codec in wide deployment, standardized in 2012. Designed for low-latency real-time audio but works excellently for music streaming. YouTube Music uses Opus heavily, and it's the codec behind WebRTC. Opus combines two encoding modes: CELT (for music) and SILK (for speech), and can switch between them seamlessly. At 128 kbps Opus is roughly transparent for most listeners. At 160 to 192 kbps it's very close to lossless for most material. It's the most efficient modern codec and handles transients and stereo imaging better than MP3 or Vorbis at equivalent bitrates.

FLAC and ALAC. Lossless codecs used for hi-fi tiers on Apple Music, Tidal, Amazon Music, Qobuz, and now Spotify. These are bit-perfect copies of your master, compressed the same way ZIP compresses a text file. No psychoacoustic modeling, no data discarded. If the listener is on a lossless tier with a compatible playback path, they're hearing your actual master. FLAC is open-source. ALAC is Apple's equivalent. Both decode to identical samples as the source.

Codec Transients Stereo Image High Freq Low Bitrate Artifacts Encoder Maturity
MP3 @ 320 Pre-echo on sharp attacks Narrows slightly at low bitrates Mild rolloff, encoder-dependent Warbling, swishing Very mature (LAME)
AAC @ 256 Handles well, smaller pre-echo Stable, joint stereo efficient Preserved better than MP3 Less audible than MP3 Very mature (Apple, FDK)
Ogg Vorbis @ 320 Good, some smearing on dense material Good, occasional phase shifts Well-preserved Grainy on sustained content Mature
Opus @ 160 Best of the lossy codecs Stable and accurate Excellent preservation Minimal at 128+ kbps Active development
FLAC / ALAC Bit-perfect Bit-perfect Bit-perfect None N/A (lossless)

Codec behavior at common streaming bitrates.

What Platforms Actually Deliver

This changes over time, so treat as of spring 2026. The landscape moves. Always.

One caveat that applies to all of these: Bluetooth re-encodes audio regardless of source quality. Even if your listener is on Apple Music Lossless, Tidal FLAC, or Spotify's new FLAC tier, the moment they connect wirelessly to AirPods, a Bluetooth speaker or headphones, or a car system, the audio gets re-compressed into a lossy Bluetooth codec (SBC, AAC, aptX, LDAC, or similar). Lossless over Bluetooth is essentially lossless to the phone, then lossy to the ears. Wired headphones, Spotify Connect to a wired DAC, or AirPlay to a wired speaker are the only reliably lossless playback paths on consumer gear. Most of your listeners are on Bluetooth.

Spotify. Codec depends on the client. The mobile and desktop apps stream Ogg Vorbis at 96 kbps (free), 160 kbps (standard), or 320 kbps (Very High setting on Premium). The web player uses AAC at 128 kbps (free) or 256 kbps (Premium). In September 2025, Spotify added FLAC lossless at 24-bit/44.1 kHz for Premium subscribers in 50+ markets, available only in the apps and via Spotify Connect.

Apple Music. AAC at 256 kbps for standard, lossless ALAC at up to 24/192 for hi-res tiers, and Dolby Atmos renders alongside. If a listener has lossless enabled and a compatible path, they're hearing bit-perfect audio.

Tidal. FLAC at CD quality or higher for hi-fi tiers. AAC at 320 kbps for standard.

YouTube Music. Opus at 128 kbps or AAC at 256 kbps depending on client, with variable bitrate adjustments based on connection.

Amazon Music. FLAC for Unlimited HD and Ultra HD tiers. AAC at 256 kbps for standard.

Bandcamp. Customer choice. Listeners can stream 128 kbps MP3 previews and download in WAV, FLAC, AIFF, or various lossy formats at full quality. The only major platform where the listener controls the format.

SoundCloud. Opus at 64 kbps for free streams, AAC at 256 kbps for Go+ subscribers.

Platform Free / Low Tier Standard Tier Hi-Fi Tier
Spotify Vorbis 96 kbps Vorbis up to 320 kbps FLAC 24-bit/44.1 kHz
Apple Music N/A AAC 256 kbps ALAC up to 24/192
Tidal N/A AAC 320 kbps FLAC (CD or higher)
YouTube Music Opus 128 kbps AAC 256 kbps N/A
Amazon Music AAC 256 kbps AAC 256 kbps FLAC (HD / Ultra HD)
Bandcamp MP3 128 kbps preview Listener's choice Listener's choice
SoundCloud Opus 64 kbps AAC 256 kbps (Go+) N/A

Streaming platform delivery as of spring 2026. Platform specs are a moving target; check primary sources for current delivery.

Here's where it gets useful for mastering.

Transients suffer first. Lossy codecs have a fundamental problem with sharp attacks. The MDCT window size is a compromise: larger windows capture more frequency detail but smear transients across time. Smaller windows preserve transients but reduce frequency resolution. Encoders dynamically switch between window sizes when they detect transients, but the switching itself introduces artifacts, especially on material with dense transients (hi-hats, snares, plucked strings). Pre-echo, where a faint ghost of a transient appears before the actual hit, is the most audible manifestation.

If your master is heavy on transient material, especially if it's been limited aggressively, you're giving the codec less headroom to work with. The encoder's error gets compressed into a smaller dynamic space and becomes more audible on playback.

Stereo imaging changes. Most lossy codecs use joint stereo, meaning they encode sum (mid) and difference (side) signals separately to save bits. The side channel is often given less data than the mid. On masters with a lot of mid-side processing or wide stereo content, especially in the high frequencies, this can translate to a narrower or less stable image after encoding. You might not notice it on studio monitors but it can be audible on headphones where stereo imaging is more critical.

High frequencies get smoothed. Encoders allocate bits based on psychoacoustic masking. Quiet high-frequency content in the presence of loud low and mid frequencies is often identified as masked and discarded. This can affect air, shimmer, and the top end of cymbals and sibilance. A master with exposed, delicate high-frequency content can lose some of that character after encoding.

Intermodulation and noise-floor artifacts. At lower bitrates, lossy codecs introduce quantization noise that isn't evenly distributed. On sustained content with complex harmonic structure (orchestral strings, dense synths, heavy reverb tails), you can sometimes hear a subtle warbling or graininess. This is mostly a 128 kbps problem and below, but some encoder implementations produce audible artifacts even at higher bitrates on specific material.

True peak violations become more likely. This is the one that surprises people. Lossy encoding and decoding is not sample-accurate. The decoded output can have peaks that exceed the original digital peaks of the input, sometimes by more than 1 dB. If you mastered to 0 dBFS digital, the decoded stream can clip on playback systems that don't have intersample peak handling. This is why I print masters to around -1 dBTP (true peak).

What This Means for Mastering Decisions

The question isn't "how do I master for Spotify." The question is how do I make a master that survives the encoding chain intact. A few things I've settled on:

Leave true peak headroom. Minimum -1 dBTP. The master will still be loud. It just won't clip when Spotify's encoder and your listener's decoder get done with it.

Don't over-limit. Aggressive limiting reduces dynamic range and makes the encoder's job harder. The encoder needs some space to work. A master that's hammered to -6 LUFS integrated with no crest factor is more likely to sound flat and distorted after encoding than one that breathes a little more.

Watch your stereo width in the high end. If your master has very wide high-frequency information, test how it encodes. All DAWs have AAC or MP3 export capability. Render your master at 256 kbps AAC and listen back on the same system. If the image narrows or the top end loses air, you may want to rein in the extreme stereo content before the limiter.

Listen to your master encoded. This is the single most useful habit. Export your final master as 256 kbps AAC (Apple Music's delivery format) and also as 320 kbps Ogg Vorbis if you can (Spotify). Listen back. If something sounds meaningfully different from your OG source file, that's the sound your listeners are getting. Adjust accordingly.

Trust the platform, with caveats. Every major streaming service has normalized loudness and quality controls in place to reduce edge cases. You don't need to make a "Spotify master" and an "Apple Music master." You need to make one good master that's built with enough margin to survive the chain. The listener tier and the network condition will determine what they actually hear, and you can't control either.

The Part Most Engineers Skip

The biggest thing codecs do isn't what they take out. It's what they reveal.

A master that's solid, dynamic, and cleanly processed survives lossy encoding with minimal damage. A master that's over-limited, harshly EQ'd, or has poor stereo discipline exposes all of those problems more clearly after encoding, not less. The encoder amplifies weaknesses because it's already working at the margin of perceptibility. Anything that's marginal to begin with falls off the cliff.

So if you're worried about what Spotify is doing to your master, the best answer isn't to master differently for Spotify. It's to master better, period. The same things that make a record translate across speakers, rooms, and playback systems also make it translate through codecs.

Codecs are just another listening environment. A hostile one, sometimes. But if the master is right, it survives.

Previous
Previous

True Peak vs Inter-Sample Peaks

Next
Next

Loudness Targets and Mastering for Streaming Platforms