🏴‍☠️ Ship O'Hoi: How I took control of my listening data and left Spotify after 13 years

/ ARTICLE

I recently cancelled Spotify Premium after being a loyal subscriber for 13 years. I now own, host and stream my own music. I also own and control my listening data, I know where my money goes, and for the first time I have a complete picture of everything I've listened to since 2012.

The data rabbit hole

It started with a side project. One of the reasons I learned to make websites in the first place was because I wanted to visualise my Spotify listening history — not just the year-end Wrapped summary, but everything, going back to when I first signed up. So this year, I finally did it. I built Spotify Pulse: a dashboard that processes all my exported listening history into stats, charts, graphs, a heatmap of every day you've ever listened, and even a feature for projected yearly listening time.

Getting anything useful from the data Spotify legally has to give you is its own challenge. Their GDPR export is the bare minimum they can get away with — duplicate entries, inconsistent track IDs, different versions of the same song treated as separate plays. The biggest challenge was just cleaning the data to get it into a usable state.

But once it was clean, I had something complete. Every track, every artist, every album, going back over a decade.

Why was this so difficult? Spotify Wrapped — the one moment a year they let you see your own data is a huge marketing tool, as seen last year when wrapped pulled over 200 million engaged users in the first 24 hours of its 2025 launch. They guard your listening history precisely because it's one of their most valuable assets.

The idea was also to build this out to a product anyone could use but the past few months, Spotify has severly cracked down on anything resembling fun ideas like this, by limiting access to their API for developers

The math didn't add up

I was paying 139 NOK a month. That's more than 16.000 NOK over the past decade.

Here's where it goes: Spotify takes around 30% off the top. The remaining 70% goes into a royalty pool divided by share of total platform streams — not based on what you specifically listen to. The structural problem: if you mostly listen to indie acts, your subscription fee still flows disproportionately toward whoever dominates total stream counts platform-wide. And the per-stream rate for an individual indie artist is tiny — fractions of a cent.

I tried to calculate how much Bon Iver (my second most played artist ever) has received from my music streams from the past 13 years, and it came to something like 50 NOK, and after label, publishers etc. have gotten their share, Justin Vernon has most likely received about 10 NOK from me from my ~1500 streams.

Meanwhile, Spotify's CEO Daniel Ek led a €600 million investment into Helsing — an AI military defence company building battlefield analysis systems. Artists are told streaming economics are just the reality of the market. The CEO is funding autonomous weapons.

I'm not saying I had a clean solution, but after a decade plus of being a die hard loyal Spotify Premium subscriber, I started looking for new ways to listen to music.

Owning your listening history

One of the invisible costs of leaving Spotify is the fear of losing your history. Wrapped is, at best, extremely limited, but at least it's something. What happens to 13 years of data if you walk away?

The answer is ListenBrainz — an open source listening tracker run by the MetaBrainz Foundation. You can import your full Spotify history, then continue tracking going forward from any source. Your scrobbles are yours, stored in a system you can query, export, and own indefinitely.

Once I had my history in ListenBrainz and my Spotify Pulse data cleaned up, I was in a good place to start building my music library — The switch didn't have to mean starting over. It meant continuing, just on different infrastructure.

Ship O'Hoi 🏴‍☠️

The biggest reason people don't leave Spotify is that they have no music library. You also can't realistically expect people to just cancel and start paying full price for all the music they want to listen to, starting from scratch. Ripping old CDs is the advice you'll find online — it's realistic if you have 20 albums you want to listen to, completely unrealistic if you want anything close to what Spotify offers. This keeps people subscribed.

My solution was Soulseek — a peer-to-peer file sharing network that's been around since 2000 and has never really gone away. It's not a torrent tracker. It's a direct connection between users sharing their music libraries. The quality is typically high, the catalogue is deep, and there's a massive community of people sharing their data.

My Spotify Pulse data gave me a complete, cleaned history of everything I'd listened to across 13 years — a full list of every artist and album I'd actually played. On GitHub, I found a Soulseek batch downloading tool that allows you to download hundreds of albums in a row from a CSV file, making it possible to rebuild a music library of everything I had already paid for, repeatedly, for over a decade.

I also put together a script that would match the listens from Spotify with the new local files, and pushed all the historical listening data into the local files. My freshly downloaded copy of London Calling now has 407 listens. 408, after I listen to Train in Vain again.

The server

The stack is straightforward. Navidrome runs on my NAS — a lightweight, open source music server that streams to any device via any Subsonic-compatible client. It handles albums, artists, playlists, and recently played with no fuss.

Metadata is handled by beets with the MusicBrainz backend. This is a great quality of life improvement. Bad metadata was the defining frustration of pre-streaming piracy. Wrong album art, chaotic filenames, missing track numbers. It's why people moved to iTunes, and eventually Spotify — centralised services that handled all of that for you. That problem is largely solved now. beets + MusicBrainz automatically matches your files against a massive, community-maintained database and applies clean, consistent metadata across your library. The tooling has genuinely caught up.

The sldl web wrapper — search by artist or album, hit Download, done.

To get new music, I built a small web wrapper around the Soulseek command-line binary, getting the best album matches from MusicBrainz, hosted on my NAS, accessible via VPN and direct on my phone as a progressive web app. I can queue a download from anywhere — a new album I've heard about, something I want to revisit — and it lands in my music library within minutes.

Leaving Spotify also means finding new client applications for actually listening to music. For mobile, I use Arpeggi, which is fast and lightweight, and gives me the most Spotify-like UI experience of anything I've found. For desktop, I use Feishin which gives you all the listening data directly in the application.

The full setup:

  • Navidrome — music server, streaming, library management
  • beets + MusicBrainz — metadata tagging
  • Soulseek wrapper — download new music directly to the server via VPN
  • Arpeggi / Feishin - client applications to actually play the music

Where I landed

I'm 99% off Spotify. I keep the free tier installed for checking out a new single occasionally — that's it. Premium is gone.

What I have instead: a library I've built and own, a listening history that's mine permanently, a visual that merges everything across Spotify and Navidrome into one continuous record, and full control over where my money goes each month when I expand my library to support my favourite artists.

I recently paied 125 NOK for Bon Iver's new live album, ten times my total contribution across 13 years of streaming.