How It Works
Your data stays in your browser
Track Down is built entirely client-side. When you connect Spotify, your browser runs the OAuth PKCE flow directly with Spotify's servers. Your access token never touches our server — it lives in your browser's sessionStorage for the duration of your tab session.
All Spotify API calls (search, playlist read/write, currently-playing) happen directly from your browser using your own token. The only server code is a thin passthrough route for Last.fm, which exists solely to hide our API key.
The matching engine
When you paste tracks or pull from a source, Track Down sends each "Artist — Track" pair to Spotify's search API. It retrieves up to 5 candidates and scores each one using a combination of:
- Token overlap — shared words between your input and the match, scored separately for artist and track (40% weight each)
- Levenshtein distance — character-by-character similarity (20% weight)
Results are sorted by confidence score from highest to lowest, with scores >70% shown in green.
The scoring formula
Every match is scored 40% artist-name overlap, 40% track-title overlap, and 20% character-level (Levenshtein) similarity — anything above 0.40 is auto-selected, everything else goes to a "Needs Review" list.
Ready to see it run? Convert your Last.fm history or pick any other source to try the matching engine yourself.
Sources
- Textbox — paste any "Artist — Track" lines, one per line, or switch to "Artist — Album" mode to pull every track off a matched album at once
- Last.fm — 8 adapters: top tracks, recent scrobbles, loved tracks, tag, similar artists, artist top tracks, track radio, flashback
- YouTube — pastes a video URL, extracts title via oEmbed
- File Scraper — upload a .txt, .csv, .m3u, or .xspf file (including DJ software and desktop player playlist exports)
- Spotify Import — paste a playlist URL to import its tracks
How much can each source actually pull?
Every ceiling below is a real, tested limit from Last.fm's own API or Spotify's own playlist API — not an arbitrary cap Track Down adds on top. Asking for the maximum costs the same one request either way, so every source is set to pull as much as Last.fm allows.
| Source | Max per run | Why |
|---|---|---|
| Top Tracks, Loved Tracks, Tag, Artist Top Tracks | 1,000 tracks | Last.fm's own ceiling on these endpoints — verified directly against the live API |
| Recent Scrobbles | 1,000 tracks | Paginated 200 at a time until the selected count is reached; repeat plays are deduplicated by artist+track as they come in, so the final count can be lower than requested |
| Similar Artists | 250 artists | Last.fm hard-caps this endpoint server-side regardless of what's requested |
| Track Radio | 40 seed songs × up to 200 similar tracks each | The seed count is a paste-size guard, not an API limit; 200 stays clear of that seed's real similarity-graph ceiling |
| Saving to Spotify | No fixed limit | Spotify's playlist-add endpoint accepts 100 tracks per request — Track Down batches automatically, so a 1,000-track playlist just takes 10 batches |
Last.fm's API terms cap usage at 5 requests per second, averaged over 5 minutes, for the shared key every Track Down user's Last.fm lookups route through. Track Down enforces that server-side and retries automatically if it's ever hit, so a busy moment on the site slows a lookup down rather than failing it.
Toolbox
Half the Toolbox renders shareable images on an HTML5 Canvas element in your browser and downloads them directly — nothing uploaded to any server. The other half (Playlist Sort, Shuffle, Dedupe, Duplicator, Export, Join, Split, and Replace) reads and, where relevant, saves a new playlist built from one you own, using the same client-side token as everything else — no separate permission step. Playlist Replace is the one exception that edits an existing playlist directly instead of creating a new one, and it asks for explicit confirmation before doing so. Try the full Toolbox.
Learn more about scrobbling and discovery
For the ideas behind the Last.fm sources — what scrobbling is, why long-term history matters, and how to use it for discovery beyond one streaming platform — see the Guides section.