Playlist Surgeon
Bulk-clean Spotify playlists you own or collaborate on. Select one artist, several artists, arbitrary tracks, or a saved local blocklist; review the selection; then remove the matches in controlled API batches with a local backup first.
The point is maintenance, not novelty.
What it does now.
- Loads your playlists and editable playlist items through Spotify's current Web API.
- Groups tracks by every credited artist and shows artist counts.
- Ctrl/Shift-select multiple artists and select all matching tracks at once.
- Select or deselect individual tracks in the same cleanup pass.
- Save artists to a persistent local blocklist and apply the rule to later playlist scans.
- Search by track, artist, or album before selecting.
- Create a timestamped JSON backup before destructive removals.
- Use Spotify playlist snapshot IDs and batches of up to 100 removal items.
- Respect Spotify rate limits using Retry-After handling.
- Protect refresh-token state with Windows DPAPI for the current user.
Requirements and one-time setup.
- Use Windows 10 or Windows 11 x64. The published build is self-contained; .NET 8 is only required when compiling from source.
- Use a Spotify Premium account. Spotify's current Web API documentation requires Premium for Web API use.
- Create an app in the Spotify Developer Dashboard and select Web API.
- Add the exact redirect URI
http://127.0.0.1:5543/callback/. Spotify permits HTTP for explicit loopback IP addresses; do not substitutelocalhost. - Copy the Spotify Client ID into Playlist Surgeon. Do not enter a Client Secret; the desktop app uses Authorization Code + PKCE.
- Click Connect Spotify, approve the playlist scopes, choose a playlist, and review proposed removals before applying them.
Spotify currently exposes playlist items only for playlists you own or collaborate on. For a Spotify-generated mix, first copy it into a playlist you own, then edit that copy.
Build it yourself.
The full source and MIT license are public. From the project folder on Windows:
.\build.ps1
Or publish directly:
dotnet publish .\PlaylistSurgeon.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -o .\dist
The output is dist\PlaylistSurgeon.exe. GitHub Actions also builds the Windows artifact from the same source. Windows build verified in GitHub Actions on September 18, 2026.
Local data boundary.
Playlist Surgeon does not require a Clintware account or backend. Settings, blocklist rules, encrypted OAuth state, and pre-change backups live under:
%LOCALAPPDATA%\Clintware\PlaylistSurgeon
Network traffic is limited to Spotify authentication and Spotify Web API calls required for the playlist operation.
Compatibility target.
The current implementation targets Spotify's 2026 playlist API migration: GET/POST/DELETE/PUT /playlists/{id}/items, the playlist item response field, PKCE for public desktop clients, explicit loopback redirect URIs, and the current playlist access restrictions.
API-change fixes are welcome as issues or pull requests. Compatibility changes should cite the applicable Spotify changelog or reference documentation so the project remains auditable.