Skip to content

Spotify Downloader

EmilDeuOfficial edited this page Aug 22, 2026 · 2 revisions

Spotify Downloader

Downloads single tracks, complete playlists and albums. Metadata comes from the official Spotify Web API, the audio from the best matching YouTube source.


Prerequisite

Enter your Client ID and Client Secret once, see Getting Started. Without credentials the downloader still works for YouTube URLs, but Spotify URLs show the "API Credentials Required" message.


Interface

+------------------------------------------------------------------+
| DeuMediaDownloader  v1.5.11                    [gear] [_][#][X]  |
+------------------------------------------------------------------+
| Spotify URL  [.........................] [Paste] [Clear]         |
+------------------------------------------------------------------+
| Format [MP3 (320 kbps)]  Save to [...] [Browse]  [Download]      |
+------------------------------------------------------------------+
| Download Queue  (3)                              [Clear Done]    |
|   Title - Artist                     [========--] Downloading    |
+------------------------------------------------------------------+
| Log                                                    [Clear]   |
+------------------------------------------------------------------+

The window is drawn without a system frame and has its own title bar. It can be dragged, minimized and maximized by double-clicking the title bar. Size and position are stored in sp_win_geo and restored on the next start.


Supported URLs

Type Pattern
Track https://open.spotify.com/track/{id} or spotify:track:{id}
Playlist https://open.spotify.com/playlist/{id} or spotify:playlist:{id}
Album https://open.spotify.com/album/{id} or spotify:album:{id}
YouTube Also recognized and handled through the YouTube path

Playlists and albums are paged through completely, past the API page limit of 100 entries. Podcast episodes inside playlists are skipped.


How a download runs

  1. Resolve the URL The app detects track, playlist or album and fetches for every entry: title, artists (all of them, comma separated), album, cover URL, duration in milliseconds and release year.

  2. Fill the queue Each entry becomes its own DownloadTask with its own UUID.

  3. Already present? If "Skip Existing Files" is enabled and the target file already exists, the entry is marked as done immediately.

  4. Searching Five YouTube results for Artist - Title are queried and the one whose duration is closest to the Spotify duration wins. This noticeably reduces wrong matches such as live versions, remixes or videos with long intros. If the search returns nothing, the app falls back to a simple single-result search.

  5. Downloading yt-dlp downloads using bestaudio/best. The progress bar covers 0 to 80 percent here.

  6. Converting FFmpeg converts to the selected format and bitrate through the FFmpegExtractAudio postprocessor. With "Normalize Audio" enabled the loudnorm filter is applied as well. Progress 80 to 90 percent.

  7. Embedding metadata mutagen writes title, artist, album and year. With "Embed Cover Art" enabled the album artwork is fetched via requests and embedded too. Progress 90 to 100 percent.

  8. Done If "Open Folder When Done" is enabled and every queue entry has finished or failed, the output folder opens in Explorer.


Why YouTube as the audio source?

The Spotify API only provides metadata, never audio data. The app therefore takes the metadata from Spotify and the audio track from YouTube Music. This has one practical consequence: the source delivers at most around 256 kbps AAC or Opus. A lossless format such as FLAC would only be an inflated transcode, which is why it is deliberately absent from the format list. WAV is included because some programs require it as an input format, see Formats and Quality.


Status values

Status Meaning
Queued Waiting for a free worker
Searching Finding the matching YouTube result
Downloading yt-dlp is fetching the audio
Converting FFmpeg is converting to the target format
Embedding mutagen is writing tags and cover art
Done The file is in the output folder
Error The cause is shown in the log

Spotify downloader settings

Gear icon in the top right, "Settings" tab:

Option Default Effect
Client ID empty Spotify API credentials
Client Secret empty Spotify API credentials
Concurrent Downloads 2 Number of parallel workers
Filename {artist} - {title} Naming scheme, see [[Filename Templates
Skip Existing Files on Do not re-download tracks that already exist
Embed Cover Art on Write the album artwork into the audio file
Normalize Audio off loudnorm filter for consistent volume
Open Folder When Done on Open Explorer once everything has finished

A second tab "Uninstall" holds the actions described in Installation.

The full reference of all keys is in Settings.


Practical tips

  • Large playlists: raise concurrent downloads to 3 or 4. Much higher values give little benefit because YouTube throttles beyond a certain rate.
  • Resuming: if a run breaks off, simply queue the same URL again. With "Skip Existing Files" enabled, finished tracks are skipped.
  • Wrong match: if the duration comparison still picks the wrong video, download that track individually through the YouTube Downloader using the specific video URL.
  • Special characters: the pipe and colon characters are replaced by visually identical Unicode lookalikes so Windows accepts the filename. The characters \ / * ? " < > are removed.

Clone this wiki locally