Your listening history, visualized
Upload your Spotify Extended streaming history and look back on years of listening. No Spotify login
Get your data from Spotify
Harmony works from the export Spotify makes for you. You ask for it once and it arrives by email
- Open your Spotify privacy settings
- Select Extended streaming history and send the request
- Wait for the email with the download link. It can take up to 30 days
- Upload the ZIP as it is, without unzipping it
Overview
The totals for the period you pick, set against the same stretch before it
Time listened
1,057h-14%
Streams
24,229-14%
Artists
1,233+28.4%
Active days
2640%
20262025
Four more pages
With the demo's numbers too. Click a name to open the full page
| # | Name | Time listened |
|---|---|---|
| 1 | ![]() Ken Carson | 85h19m |
| 2 | ![]() Playboi Carti | 82h44m |
| 3 | ![]() SLAYR | 71h43m |
| 4 | ![]() Lil Uzi Vert | 68h4m |
Explorer
Every artist, track and album ranked by time listened
19.3%on shuffle
11.7%offline
Devices
iOS
Windows
51.1%48.9%
Listening Habits
When and how you listen, down to shuffle, offline plays and devices
Discoveries
An artist's album releases next to your weekly listening
Milestones
Round numbers, records and first listens, in the order you reached them
Questions
- Is it free?
- Yes. Harmony is free and open source under the GPL-3.0 license
- Do I need to log in with Spotify?
- No. Harmony only reads the export you upload. It never connects to your Spotify account
- What happens to my file?
- The server reads every stream, looks up each track and album on Deezer for covers and album details, and saves the result as one small DuckDB file. Your browser downloads that file and runs every query itself
- Which export do I need?
- The Extended streaming history. The regular account data only covers the last year; the extended one goes back to your first stream
- Who can see my package?
- There are no accounts. Your package lives at a six-character link, and anyone with that link can open it
- Can I host it myself?
- Yes. One Docker image serves the app and the API:
$ docker run -p 3000:3000 -v harmony-data:/data ghcr.io/abgameur/harmony
- Where's the code?
- On GitHub. Issues and pull requests are welcome



