The constellation
Every genre in the library. Two genres are linked when some artist is tagged with both, so the threads running between clusters mark where one kind of music touches another in what I play — usually through a single artist sitting in both. Bigger, darker dot means more listening. Clusters are grouped by family for readability; the links inside them are earned. Click any dot to see which artists are in that genre.
Force-directed graph of music genres, sized by how much I listen and linked where genres share an artist.
What it rolls up to
Crowd-tagged genres are gloriously over-specific — "stomp and holler," "dungeon synth," "crank wave," "deconstructed club." Collapsed into 15 families, the shape of the thing gets legible.
Horizontal bar chart of listening share by macro genre family.
Saved vs. played
The interesting question isn't what I own — it's whether what I save matches what I actually put on. Three different populations, same 15 families.
Grouped bar chart comparing genre family share across saved library, playlists, and recent plays.
Every genre, to scale
The same data with nothing collapsed — each rectangle is one genre, grouped by family and sized by listening. This is where the long tail becomes visible.
Treemap of individual genres grouped by family, sized by listening share.
Playlist fingerprints
Each playlist scored by its own internal variety — the same effective-genre measure, applied one playlist at a time. Some are a single mood on repeat; some are a whole record collection. Names are deliberately left off: this repo is public.
Bar chart of playlists ranked by effective genre count.
Drift
Spotify will tell you your top artists over three windows — roughly the last month, the last six months, and the last several years. Reading them left to right is the closest thing to a picture of taste actually moving.
Slope chart showing how each genre family's share changes across three listening time windows.
The whole list
Every chart above, as numbers. Click a column to sort, or a row to see the artists in that genre.
Three recommenders, compared
Spotify's recommendation endpoints were switched off in 2024, so this asks three others instead — Last.fm and ListenBrainz, both collaborative filtering over listening logs, and Deezer, its own model of streaming behaviour. Each was seeded with the artists I play most, and anything already in the library was thrown out. What's left is a decent look at how much these engines actually agree.
Bar chart comparing how many artists each recommendation engine suggested, and how many were unique to it.
Where all three agreed
Every engine named these independently. Click an artist to search it on Spotify.
Where only one did
Each engine's strongest pick that neither of the others made. This is where their different source data shows most plainly.
What this gets wrong
Any chart like this quietly throws data away. Here's exactly what mine throws away, and how much.
Two different kinds of missing
These are not the same failure and I don't merge them. The first is a hole in Spotify's data; the second is a hole in my taxonomy — and only the second is my fault. Genres in that second bucket still count toward every diversity number; they just don't get a family.
How the numbers are built
Genres live on the artist, not the track — so a track by an artist tagged indie rock and chamber pop counts half to each. Every track contributes exactly 1.0 total, which stops artists with eight tags from drowning out artists with one. Without that, the chart would be measuring how verbosely an artist got tagged rather than what I listen to.
Genres are matched to artists by name, which is this page's real accuracy limit: two different bands sharing a name will be merged, and an artist Last.fm and MusicBrainz have never heard of gets nothing.
Effective genres is e^H, the exponential of
Shannon entropy. If listening were spread perfectly evenly across N
genres it returns exactly N; concentration pulls it down. It's a more
useful summary than a count of distinct genres, which treats something
heard once the same as something played every week.
What isn't here
"Listening history" is thinner than it sounds. Spotify's API returns your last 50 plays and three ranked snapshots — there's no endpoint for years of history. The drift chart is three photographs, not a film.
Spotify itself no longer answers the question this page asks. It deprecated audio-features in November 2024, removed artist popularity in February 2026, and quietly stopped returning artist genres altogether — its own docs still list the field, but the API doesn't send it. Every genre here is sourced elsewhere.
Generated by scripts/build-spotify-genres.js — a zero-dependency
Node script that pages Spotify, resolves genres against Last.fm and
MusicBrainz, and writes one sorted
JSON file. Data as of —.
Source on GitHub →