mrkeyoor.com_
Sun 08 Nov 04:11 UTC
Automationevaluationupdated 08 Nov 2026

spotify-downloader review

spotDL finds songs from Spotify playlists on YouTube and downloads them with metadata. The audio comes from YouTube rather than a Spotify audio export.

Verdict

Consider spotDL for tagged files based on Spotify playlist selections if you can check the YouTube recordings and manage its external tools. Our run installed in 19 seconds, but tests exited 1 with 200 collection/setup errors and no passing tests recorded. Synchronization deletes removed playlist tracks by default; the usage guide documents --sync-without-deleting to preserve them. Neither synchronization mode nor a completed audio download was verified.

We ran it

Lab card: what happened when we ran spotify-downloaderScreenshot of spotify-downloader (spotdl.readthedocs.io/en/latest)
Install✓ · 19s88 packages · 165 MB
Build✓ · 1s
Tests✗ · 7s0 passed · 0 failed · 200 errors of 200 (pytest)
Known vulns0(pip-audit)
Repo194 files~19,414 lines of source · 21.6 MB · 6 CI workflows · Dockerfile · tests dir

Answers from our run

Does spotify-downloader build from source?

Dependencies installed in 19 seconds (88 packages), and the build succeeded in 1 seconds. We cloned commit 58ced9a into a clean Debian container with 3 CPUs and no project-specific setup.

Do spotify-downloader's tests pass?

No. The project's own test command finished in 7 seconds and reported 0 passed, 0 failed, 200 collection errors (pytest).

Does spotify-downloader have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use spotify-downloader?

Archivists who require the exact Spotify recording without checking the YouTube source.

What are the alternatives to spotify-downloader?

yt-dlp, beets. Consider spotDL for tagged files based on Spotify playlist selections if you can check the YouTube recordings and manage its external tools.

SetupN/AInstall and build succeeded, but the test command failed and no completed download establishes operational setup ease.
Docs4/5The visible five-point rubric awards 4 for documented prerequisites, command patterns and consequential options. README and usage evidence meet that level, including --sync-without-deleting; the reviewed workflows were not independently reproduced, which prevents 5.
CommunityN/ARepository activity does not establish response times, support capacity or the experience of users seeking help.
MaturityN/AThe record contains no completed audio-download workload or reliability measurement, and the test command ended with collection/setup errors.

Who it’s for

Command-line users who want tagged local files from Spotify playlist selections and will check the selected recordings.
Developers evaluating playlist synchronization who can manage external tools and choose whether removed playlist tracks should remain locally.

Who it’s NOT for

Archivists who require the exact Spotify recording without checking the YouTube source.
Users who need browser-based playlist downloads: the README says the web interface only supports individual songs.
People who need a verified download or synchronization workflow from this review: the measured run establishes neither.

Setup reality

Our November 7, 2026 run at commit 58ced9a installed in 19 seconds and built in 1 second, recording 88 dependencies and 165 MB on disk. Tests exited 1 after 7 seconds, with zero passes, zero failed assertions and 200 collection/setup errors. The supplied tail contains no underlying exceptions, so the cause remains unknown.

The README requires FFmpeg and strongly recommends Deno because some YouTube videos require it to download successfully. The usage guide documents Spotify OAuth for liked songs and cookies for YouTube Music account access. The measured run does not verify authentication or a completed audio download. Neither default synchronization nor synchronization with --sync-without-deleting was exercised.

The sandbox configuration specifies 3 CPUs, 8 GB RAM and image ghcr.io/astral-sh/uv:python3.12-bookworm. That label does not establish actual runtime or operating-system versions. Docker and Compose files were detected, but container operation was not verified. Pip-audit reported zero known vulnerabilities; that result does not establish application security.

Spotify selects the songs; YouTube supplies the audio

spotDL finds songs from Spotify playlists on YouTube and downloads them with metadata. Its README also documents album artwork and lyrics. This makes it a candidate for command-line users who want local files based on playlist selections and are willing to check the recordings.

The source distinction matters when you need a particular release or edition. Spotify metadata attached to a YouTube download does not establish that the audio is the recording you wanted. The supplied sandbox record contains no listening comparison or matching-accuracy assessment.

The usage guide documents manual pairing through the quoted argument "YouTubeURL|SpotifyURL". This lets you specify a YouTube source alongside Spotify metadata. That option was not exercised in the measured run.

What happened when we ran it

Our sandbox install succeeded in 19 seconds and the build step succeeded in 1 second at commit 58ced9a on November 7, 2026. The record lists 88 dependencies and 165 MB on disk. The test command exited 1 after 7 seconds, recording zero passed, zero failed assertions and 200 collection/setup errors. Zero failed assertions does not make that a successful test run.

The supplied tail names cases in tests/web/test_api.py, including settings updates and rejection of invalid format, bitrate and thread values. Pytest's summary reports one expected failure, seven warnings and 200 errors in 0.69 seconds. That summary and the outer 7-second step measure different scopes. Without the underlying exceptions, the tail cannot establish whether a package, runtime or network condition caused the errors. It also does not establish that the browser interface itself is broken.

The configured sandbox had 3 CPUs and 8 GB RAM, with image label ghcr.io/astral-sh/uv:python3.12-bookworm. Actual runtime and operating-system versions require the raw toolchain logs. The scan recorded 194 files, approximately 19,414 source lines and a 21.6 MB checkout. It found six CI workflows, a Dockerfile, a Compose file and a tests directory. These observations do not verify container operation. Pip-audit reported zero known vulnerabilities, without establishing application security or download reliability.

Check external tools and account access

The README recommends installing the Python package and requires FFmpeg. It documents spotdl --download-ffmpeg for a copy in the spotDL installation directory. It also strongly recommends Deno because some YouTube videos require it through yt-dlp, and provides spotdl --download-deno. These are upstream instructions, not commands verified by this review.

The usage guide requires --user-auth for liked songs and defines that option as Spotify login using OAuth. It also documents client-ID, client-secret and authorization-token options, plus a cookie-file option for YouTube Music account access. Their presence does not establish that every public playlist needs custom application credentials. Authentication, cookie handling and completed downloads remain unverified in the measured run.

The guide warns that converting to a higher bitrate can produce a larger file without a significant quality change. No encoding-quality measurement accompanies this review. Check the recording before treating an output setting as a quality improvement.

Synchronization deletes removed tracks by default, with an option to keep them

The README describes sync as downloading playlist additions and deleting songs removed from the playlist. The usage guide qualifies that default: --sync-without-deleting preserves songs that are no longer in the query.

For an existing sync file named playlist.spotdl, the documented command pattern is:

spotdl sync "playlist.spotdl" --sync-without-deleting

This example assumes the sync file already exists. The guide documents initialization with spotdl sync [query] --save-file [fileName] and requires the filename to end in .spotdl. Neither synchronization mode nor these commands were exercised in the measured run.

Choose the mode according to what a playlist edit should mean locally. Default synchronization suits a directory intended to mirror the current playlist. If removed playlist tracks should remain, the documented preservation option is relevant. Use a dedicated directory for a trial and keep files you intend to preserve elsewhere until you have checked the behavior in your own workflow. This is a precaution based on the documented deletion behavior, not a measured guarantee about deletion boundaries.

The README says the web interface only supports downloading individual songs. Readers who need playlist operations should assess the command-line workflow rather than assume the browser interface provides it.

What the documentation supports

Documentation receives 4/5 on an editorial scale: 1 means no actionable instructions, 2 means isolated instructions with major workflow gaps, 3 means a usable route with gaps, 4 means the reviewed documents explain prerequisites, command patterns and consequential options, and 5 additionally requires those reviewed workflows to be independently corroborated.

The README and usage guide explain FFmpeg, Deno, account options, synchronization initialization and the option to preserve removed tracks. That supports 4/5 for the reviewed documentation, while the absence of reproduced download and synchronization workflows prevents 5/5. This score does not establish adoption, compatibility or operational reliability. Setup ease, support capacity and production maturity remain unassessed.

Choose an alternative according to the job

yt-dlp is a command-line audio/video downloader. Consider it when you already know the source URL and want to select the recording yourself. There is no comparative download-success measurement in the supplied record.

Beets catalogs a music collection and improves its metadata. Consider it when the files already exist and organizing the collection is the main task.

For a spotDL trial, choose material you are authorized to download, check the recording and tags, and decide whether removed playlist tracks should remain locally before using synchronization.

Alternatives

ProjectWhat it isPick it when
yt-dlp gh↗A command-line audio/video downloader.Consider yt-dlp when you already know the source URL and want to select the recording yourself. The supplied record contains no comparative download-success measurement.
beetsA music-library manager that catalogs collections and improves metadata.Consider beets when your files already exist and organizing the collection and its metadata is the main task.

What people are saying

  1. [github-trending] spotDL/spotify-downloader

Sources

  1. spotDL README
  2. spotDL usage guide
  3. yt-dlp README
  4. beets README

More automation reviews

bbot · switch · Horizon · ai-goofish-monitor · agent-desktop · Microsoft-Rewards-Script · the whole board →