Your playlists, on your own machine.

Paste a Spotify or YouTube playlist, download every track, and let it land in your library as tagged files, an M3U file, or a Jellyfin playlist - no accounts to hand your data to.

bash
$ mkdir melodybridge && cd melodybridge
$ wget https://melodybridge.app/compose.yml
$ docker compose up -d
melodybridge is up - open http://localhost:3333

Docker or Podman, state in one ./data folder, listens on 127.0.0.1 only.

How it works

  1. Add a playlist

    Paste a public Spotify or YouTube link. The tracks land in the local database; log in for private playlists and liked songs.

  2. Download missing

    The waterfall tries each plugin until one returns a good file, then tags it and measures what it really contains.

  3. Sync it out

    A sync job writes an M3U file into data/playlists or pushes the playlist straight to Jellyfin, on an interval if you want.

What you get

Playlists in, no keys

Public Spotify and YouTube playlists work out of the box. An optional login unlocks the private ones.

A waterfall, not a bet

Lucida, SoundCloud, Internet Archive, YouTube - tried in order, first good file wins.

Quality that gets checked

A spectrum check reads what a file actually contains, so a rebranded 128 kbps never passes as 320.

Tags that survive moves

Title, artist, album and track number from the playlist, plus a MELODY_ID that ties a file to its track.

Additive or mirror

Keep removed tracks as history, or match the source exactly. Each playlist picks its own mode and interval.

Published your way

M3U files with metadata, or Jellyfin playlists pushed through the API - favorites included.

One container, one folder

Everything MelodyBridge keeps lives in ./data: the music, the written playlists, and a single SQLite database. The web UI listens on 127.0.0.1:3333, so nothing is exposed until you put a reverse proxy in front of it. yt-dlp and ffmpeg are in the image; FlareSolverr runs beside it as an optional sidecar for Lucida.

Every page of the UI is documented in the user guide, and the architecture is laid out in the developer guide.