Spotify makes the replay volume of all songs similar. Broadly speaking this is a good idea (Although an "album mode" would be a great enhancement)
When Spotify lifts the level of "quieter", more dynamic music, it regulates the louder moments using a limiter, often with very poor quaity results. There are lots of posts here complaining about this problem.
I'd like to suggest two improvements to this:
1 - Reduce the reference volume level, ie. make everything play at a slightly lower volume.
This will reduce the need to add extra limiting, meaning people will hear more dynamic music the way it was intended.
Apple's Sound Check feature already uses a lower reference level of roughly -16 LUFS, for example. The international standard for broadcast is -23 LUFS
[UPDATE May 2017 - See #3 below]
2 - Instead of limiting, just restrict the volume boost to prevent clipping
The limiter is only needed when boosting very dynamic music, to prevent clipping distortion. Instead, Spotify could prevent boosts beyond a point that would cause clipping, meaning the limiter would be unnecessary. This would completely solve the problem.
Some very dynamic music wouldn't be normalised as effectively, but examples in popular genres would be rare, and most people listening to more dynamic genres wouldn't mind - classical is a prime example.
I've been asked to join an AES technical group to help develop a white paper on streaming loudness, to provide recommendations for loudness normalisation for streaming providers like Spotify.
If any Spotify employees are reading this, please contact me so we can include you in this discussion.
The AES guidelines have been published, they recommend a maximum streaming playback level of -16 LUFS:
It looks as if Spotify have implemented Part 1 of this idea ! The latest version (May 2017) seems to be using a normalisation level of -14 LUFS, which is similar to TIDAL and YouTube. This is great news, thanks to everyone who voted for the idea !
We don't know yet whether they have also stopped using the limiter, though (Part 2) - more testing is needed. But so far, so good !