Songrank

Spotify song ranker
Side project · 2026

Your "top songs" playlist is sorted by a number you can't see. Songrank makes you actually choose.

Songrank screenshot
Demo · ranking a library down to a top 10

Spotify will hand you a "top songs" list, but it's ordered by play count, which rewards the track that was on in the background, not the one you'd actually defend. The honest ranking lives in your head, and the only way to get it out is to make the small decisions one at a time: this song or that one.

Songrank pulls a slice of your library and walks you through exactly those decisions. You never score anything or drag a list around: you just answer a long series of two-song matchups, and an ordered ranking falls out the other side, ready to save back to Spotify.

The piece I didn't expect to lean on is the friends mode. Hand someone your finished ranking and let them guess your top 10, and the scoring turns a private list into a small game: you find out how well they actually know your taste. It started as a throwaway idea and became the main reason people open it twice.

Ranking by binary insertion

Why you register your own Spotify app

Every Spotify developer app runs in development mode against a 25-user allowlist that the app's owner adds by hand. One shared Songrank key would therefore serve twenty-five people worldwide, ever, and then stop. So Songrank ships with no key at all: the setup page walks you through registering a free developer app of your own and adding yourself to your own allowlist, which takes one slot of your twenty-five. Skipping that step is the usual reason saving back to Spotify fails later, and the app recognises that specific error and says so.

Stack

Next.js 16 · React 19 · TypeScript · Tailwind v4, exported as static HTML to GitHub Pages. Auth is genuine RFC 7636 PKCE with S256 challenges, and there is no server-side code anywhere in the repo, so no client secret exists and every call goes from your browser to Spotify. The honest trade-off of having no backend: your tokens sit in local storage, which the code guards with a content-security-policy meta tag rather than pretending the problem away. Thirty-second previews come from Apple's iTunes search API, because Spotify stopped returning preview URLs for most tracks in late 2024.

Next Apple Music and Last.fm imports, so it isn't Spotify-only.

← all projects