Professional Spotify migration tool to move Liked Songs and automate playlist syncing via Docker.
A full-stack tool solving a real Spotify API limitation — migrate and auto-sync playlists, including the locked Liked Songs library.
Spotify's API deliberately blocks direct access to a user's Liked Songs library — making it impossible to export, share, or migrate it through any official means. SPT Transfer works around this limitation by treating the Liked Songs library as a first-class data source, enabling full transfer and continuous synchronization to any playlist.
The project covers the full stack: OAuth authentication flow, a real-time streaming backend, a background sync engine with Redis persistence, and a React frontend — all packaged into a single multi-arch Docker image.



Real-time progress streaming Transfer status is pushed to the client via Server-Sent Events (SSE), avoiding polling and keeping the UI in sync with backend state throughout the operation.
Background sync engine Auto-sync jobs run on a custom scheduler backed by Redis for persistence, supporting both cron-based scheduling and change-detection polling. Every sync run is a full mirror: additions, removals, and track order are all reconciled against the source.
Large library handling The Spotify API caps requests at 100 tracks per call. The backend handles automatic pagination and chunked writes, making transfers of 1000+ track libraries reliable without manual intervention.
Automatic token refresh OAuth tokens are transparently refreshed mid-transfer, so long-running operations never fail due to expiry.
Docker-first deployment
A multi-stage Dockerfile builds the React frontend and bundles it with the Express server into a single image. Multi-arch support (amd64 / arm64) is included out of the box. Both local Redis and cloud Redis (Upstash, Redis Cloud, Railway) configurations are provided.
| Layer | Technology |
|---|---|
| Frontend | React, Vite |
| Backend | Node.js, Express |
| Real-time | Server-Sent Events (SSE) |
| Scheduling | Custom Redis-backed scheduler |
| Persistence | Redis |
| Auth | Spotify OAuth 2.0 |
| Infrastructure | Docker, Docker Compose |
Spotify restricts apps in Development Mode to a manually approved whitelist of users. Reaching Production Status requires 250,000 verified users — not applicable for an independent project of this scope.
The application can be run locally in minutes using the Docker setup in the repository.
MIT License · Marceli Racis