# spotify_to_tidal: a command line tool for copying Spotify playlists into Tidal

> spotify_to_tidal is an AGPL-3.0 Python tool that reads your Spotify playlists through the official API and recreates them as Tidal playlists, built for periodic synchronisation of very large collections rather than a one-off import. It suits a listener with a large Spotify library and a Tidal account, and it is the wrong tool for a one-time move, since it does not carry over your Liked Songs unless you ask for it explicitly.

**spotify2tidal/spotify_to_tidal** — A command line tool for importing your Spotify playlists into Tidal

- Repository: https://github.com/spotify2tidal/spotify_to_tidal
- Stars: 1,097 · Forks: 186
- Language: Python
- License: AGPL-3.0
- Published: 2026-10-19 · Updated: 2026-10-19 · Language: en
- Canonical page: https://hysenlabs.com/projects/spotify2tidal-spotify-to-tidal

## The design goal is repeated runs, not a single import

The README describes the tool as a command line tool for importing Spotify playlists into Tidal, and immediately adds the qualifier that matters, that due to various performance optimisations it is particularly suited for periodic synchronisation of very large collections. That sentence reframes the whole project. A one-off migration of twenty playlists is a drag and drop exercise in the Tidal app, and a tool that needs a registered Spotify app, a config file and a local database to do it is a poor trade for that. A library of thousands of playlists that you want kept in step on a schedule is a different problem, and the performance work is what makes it tractable. The repository tags reinforce the point with a synchronization topic alongside spotify and tidal.

## Installation is an editable pip install from the clone

The installation instructions are to clone the repository and run one command.

```bash
python3 -m pip install -e .
```

The editable install is the right call here, since the tool reads a config file from the project root and the README repeatedly refers to running things from the project root directory. The package is built with setuptools under the pyproject.toml, requires Python 3.10 or later, and declares its dependencies explicitly: spotipy at the 2.24 series for the Spotify side, tidalapi at 0.8.10 for Tidal, pyyaml for the config file, tqdm for progress output, sqlalchemy at 2.0 for the local store, and pytest with pytest-mock for the test suite. The console entry point is spotify_to_tidal, mapped to spotify_to_tidal.__main__:main, and the package source lives under src/.

## Setup needs a Spotify app, and the redirect URI has to match exactly

The setup section is a numbered list and the third step is the one that catches people out. You rename example_config.yml to config.yml, register a new app on developer.spotify.com following the authorisation app settings guide, and paste the client ID and client secret into the Spotify section of the config file. Then you copy the value in redirect_uri from the config file into the Redirect URIs list at developer.spotify.com and press ADD, and finally you enter your Spotify username into the config file. The redirect URI has to be copied rather than typed, because Spotify compares it exactly, and the README is careful to say to copy the value from the config rather than invent one. The example_config.yml is also the place to find the remaining configuration options.

## Three invocations cover the whole scope

Running the tool with no arguments synchronises all of your Spotify playlists with your Tidal account, from the project root directory.

```bash
spotify_to_tidal
```

A single playlist can be targeted with the --uri option, which accepts either a bare playlist id or a full playlist uri.

```bash
spotify_to_tidal --uri 1ABCDEqsABCD6EaABCDa0a # accepts playlist id or full playlist uri
```

And the Liked Songs collection, which in Spotify is a separate entity rather than a playlist, is handled by its own flag.

```bash
spotify_to_tidal --sync-favorites
```

For further options there is the --help flag, and the example config file lists the configuration settings. One Windows detail is called out, that Windows ignores Python module paths by default so the tool has to be run as python3 -m spotify_to_tidal instead of the bare command.

## The dependency list explains the state model

The pyproject.toml is short, and the choices in it describe what the tool does rather than how it is packaged. spotipy is the official Spotify Python client, and the pinned series matters because the library moves. tidalapi at 0.8.10 is the community Tidal client, and it is the only part of the stack that is not vendor official, which is worth knowing if the Tidal API changes. pyyaml handles the config file, tqdm draws the progress bars that make a long sync legible, and sqlalchemy at 2.0 is the ORM behind the local database. That database is the part that makes periodic synchronisation possible, since it is where the tool records what it has already seen so a second run does not recreate every playlist from scratch.

## AGPL-3.0 and a project with recent but infrequent releases

The licence is AGPL-3.0, which is a meaningful detail for a tool that talks to your personal music library. The AGPL requires that modifications you distribute, including over a network, be offered under the same licence, so if you extend the tool for your own use and run it as a service for others, the source has to be published. For personal, local use it is not a practical constraint, but for anything commercial it is the thing to check first. The release history shows v1.0.7 on 2026-01-11, v1.0.6 on 2025-12-31 and v1.0.5 on 2025-10-16, so releases land in bursts rather than steadily, and the last push to the repository was on 2026-06-30 with the repository not archived. The repository also has a .circleci/ directory for continuous integration, a pytest.ini and a tests/ directory, which is a good sign for a tool that has to keep working against two third-party APIs.

## Conclusion

spotify_to_tidal fits a listener who keeps a large Spotify library and wants it mirrored into Tidal on a schedule, because the tool is built around repeated runs and a local database rather than a one-time transfer, and the OAuth setup is the standard Spotify app registration. It is a poor fit for a one-off migration, where the effort of registering an app and maintaining a config file outweighs what a manual drag of a few playlists costs, and a poor fit if you expect your Spotify library structure to arrive intact, since the tool creates Tidal playlists rather than reproducing them exactly. Verify first that you have a Spotify app registered with a redirect URI added, since the tool needs both the client ID and secret in the config file, and remember the Tidal side of the connection is a separate authentication you will be prompted for on the first run.

## FAQ

### How do I install spotify_to_tidal?

Clone the repository and run python3 -m pip install -e . from the project root. The package requires Python 3.10 or later and installs a console script named spotify_to_tidal.

### What configuration does spotify_to_tidal need?

Rename example_config.yml to config.yml, register a new app on developer.spotify.com, copy the client ID and client secret into the Spotify section, copy the redirect_uri value from the config file into the Redirect URIs list at developer.spotify.com, and enter your Spotify username in the config file.

### Can spotify_to_tidal sync just one playlist or my liked songs?

Yes. The --uri option takes a playlist id or a full playlist uri for a single playlist, and --sync-favorites syncs your Liked Songs collection separately, since Spotify treats it as a distinct entity rather than a playlist.

### What licence is spotify_to_tidal under?

AGPL-3.0. That matters if you modify the tool and distribute or run a modified version as a network service, since the source must then be offered under the same terms.

## Sources

- [Issues](https://github.com/spotify2tidal/spotify_to_tidal/issues)
- [License: AGPL-3.0](https://github.com/spotify2tidal/spotify_to_tidal/blob/main/LICENSE)
- [README](https://github.com/spotify2tidal/spotify_to_tidal/blob/main/README.md)
- [Releases](https://github.com/spotify2tidal/spotify_to_tidal/releases)
- [spotify2tidal/spotify_to_tidal on GitHub](https://github.com/spotify2tidal/spotify_to_tidal)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/spotify2tidal-spotify-to-tidal
