DEV.co
Open-Source DevOps · guillevc

yubal

yubal is a self-hosted YouTube Music downloader that automatically organizes music into artist/album folders, syncs playlists on schedule, and deduplicates tracks. It provides a web UI, browser extensions, and integrates with media servers like Navidrome and Jellyfin.

Source: GitHub — github.com/guillevc/yubal
1.4k
GitHub stars
43
Forks
Python
Primary language
MIT
License (OSI-approved)

Key facts

Objective fields from the source. Values we can't verify are shown as “Unknown” rather than guessed.

FieldValue
Repositoryguillevc/yubal
Ownerguillevc
Primary languagePython
LicenseMIT — OSI-approved
Stars1.4k
Forks43
Open issues24
Latest releasev0.9.1 (2026-06-11)
Last updated2026-07-06
Sourcehttps://github.com/guillevc/yubal

What yubal is

Python/FastAPI application with yt-dlp backend, scheduled sync via cron, metadata tagging (ReplayGain, LRC lyrics), multiple audio format support (opus/mp3/m4a), Docker deployment, and M3U playlist generation compatible with standard media servers.

Quickstart

Get the yubal source

Clone the repository and explore it locally.

terminalbash
git clone https://github.com/guillevc/yubal.gitcd yubal# follow the project's README for install & configuration

Need it deployed, integrated, or customized instead? DEV.co ships production installs.

Best use cases

Self-Hosted Music Library with Scheduled Updates

Subscribe to YouTube Music playlists; new tracks automatically download and organize into your media library. M3U playlists keep references updated without duplication.

Home Lab Music Server Integration

Pair with Navidrome/Jellyfin for a complete self-hosted streaming stack. Supports multi-artist tagging and ReplayGain normalization for consistent playback across clients.

Bulk Media Organization Workflow

Convert unstructured YouTube Music links (tracks, albums, playlists) into clean, media-server-ready libraries with automatic metadata, cover art, and synced lyrics.

Implementation considerations

  • Set PUID/PGID correctly for file permissions; NFS/Unraid mounts may require pre-existing write permissions rather than chown.
  • Configure YUBAL_SCHEDULER_CRON for auto-sync intervals; default is daily. Adjust based on playlist update frequency and bandwidth.
  • Choose audio format (opus/mp3/m4a) and quality (0–10 transcode level) upfront; changes to existing library require manual re-download.
  • For multi-artist tracks, enable media server-specific settings (Jellyfin: 'Use non-standard artists tags'; Gonic: GONIC_MULTI_VALUE_ARTIST=multi).
  • Allocate adequate disk space; no built-in quota or cleanup. Archive or rotate old playlists manually if storage is constrained.

When to avoid it — and what to weigh

  • You Need Commercial YouTube Music Licensing — yubal automates downloading from YouTube Music; does not address licensing or copyright implications. Verify compliance with your jurisdiction's laws and YouTube's ToS.
  • You Require Enterprise SLA/Support — This is a community open-source project (1.4k stars, single maintainer pattern). No commercial support, SLA, or guaranteed uptime.
  • Audio Quality Is Mission-Critical — Dependent on YouTube Music's source quality and transcoding artifacts. No lossless option; best available is opus or direct m4a if available upstream.
  • You Need Cross-Platform Sync Without Self-Hosting — Requires Docker or manual Python installation on your own hardware. No cloud sync or managed service option.

License & commercial use

MIT License. Permissive OSI license allowing commercial redistribution, modification, and private use with attribution. No copyleft or patent clauses.

MIT permits commercial use of the software itself. However, downloading and storing copyrighted music from YouTube Music raises independent legal/licensing questions outside the software license. Any commercial distribution or service use requires separate review of copyright compliance, YouTube ToS, and local law. Do not assume MIT license covers media licensing liability.

DEV.co evaluation signals

Editorial assessment — not user reviews. Directional, with an explicit confidence level.

SignalAssessment
MaintenanceActive
DocumentationAdequate
License clarityClear
Deployment complexityLow
DEV.co fitGood
Assessment confidenceHigh
Security considerations

Runs on localhost by default (YUBAL_HOST=127.0.0.1). CORS set to '*' in Docker defaults; restrict in production. No authentication or authorization layer mentioned. Handles YouTube Music cookies/credentials—review how stored and transmitted. yt-dlp subprocess execution: ensure input validation. Lyrics fetched from external lrclib.net; consider network isolation if required.

Alternatives to consider

Lidarr + Radarr/Sonarr ecosystem

Mature, multi-source music/media management with automation. Higher complexity, steeper learning curve, but more polished UI and larger community.

Beets (Music Tagger)

CLI-first, highly scriptable music organization and tagging. Requires manual download step; playlist sync not built-in. Lower-level control.

Spotdl (Spotify downloader)

Similar workflow but for Spotify. YouTube Music–specific; not an alternative if YouTube Music is your source.

Software development agency

Build on yubal with DEV.co software developers

yubal automates YouTube Music downloads and playlist management for your home server. Explore deployment options, integration with Navidrome, and architecture decisions—or let us help design a music streaming stack.

Talk to DEV.co

Related open-source tools

Surfaced by semantic similarity across the DEV.co open-source index.

Related on DEV.co

Explore the category and the services that help you build with it.

yubal FAQ

Does yubal require a YouTube Music Premium subscription?
Not stated in README. Functionality likely depends on what YouTube Music URLs allow. Verify access to desired content; Premium may be necessary for some playlists/regions.
Can I run yubal without Docker?
Yes, Python installation is mentioned (CLI package exists). Docker is the primary deployment path; manual setup requires Python environment and dependency management.
What happens if a track is in multiple subscribed playlists?
Smart deduplication stores the file once and references it via relative paths in each M3U playlist. Saves disk space and bandwidth on re-sync.
Is there a GUI or CLI only?
Web UI is primary; real-time progress, job queue, mobile-friendly. CLI also available for terminal-based download and metadata inspection.

Software developers & web developers for hire

Adopting yubal is usually one piece of a larger software development effort. As a software development agency, DEV.co provides software development services and web development expertise — pairing senior software developers and web developers with your team to design, build, and operate open-source devops software in production.

Ready to Build a Self-Hosted Music Library?

yubal automates YouTube Music downloads and playlist management for your home server. Explore deployment options, integration with Navidrome, and architecture decisions—or let us help design a music streaming stack.