Youtarr is a self-hosted YouTube downloader that automatically downloads videos from your favorite channels or specific URLs. With optional Plex integration, it can refresh your media library for a seamless, ad-free viewing experience.
demovideo1.mp4
- No Ads or Tracking: Watch YouTube content without interruptions
- Offline Viewing: Access your videos anytime, even without internet
- Archive Content: Preserve videos before they're deleted or made private
- Family-Friendly Option: Create a curated, safe YouTube experience for kids
- Works Standalone: Full functionality without requiring any media server
- Plex-Ready: Seamlessly integrates with Plex if desired, but never requires it
- π₯ Smart Downloads: Pre-validate YouTube URLs with metadata preview before downloading (powered by yt-dlp)
- π― Custom Quality Settings: Global and per-channel resolution control with support from 360p to 4K
- πΊ Channel Subscriptions: Subscribe to channels and auto-download new videos, shorts, and streams with per-tab controls
- π Channel Grouping & Multi-Library Support: Organize channels into custom subfolders (e.g.,
__kids,__music,__news) to create separate media server libraries with distinct parental controls, sharing rules, and content organization - π« SponsorBlock Integration: Automatically remove or mark sponsored segments, intros, outros, and more using the crowdsourced SponsorBlock database
- ποΈ Smart Organization: Videos organized by channel with metadata and thumbnails
- π Multi-Server Support: Compatible with Plex, Kodi, Jellyfin, and Emby through NFO metadata files and embedded MP4 metadata
- πΌοΈ Channel Artwork: Automatic channel poster generation for media server folder displays
- β° Scheduled Downloads: Configure automatic downloads on your schedule (cron-based)
- π§Ή Automatic Cleanup: Nightly auto-removal with configurable age and free-space thresholds plus dry-run previews
- π± Web Interface: Manage everything through a responsive web UI
- π Browse Channels: View and search all videos from subscribed channels with advanced filtering, tabbed views for Videos/Shorts/Streams, and contextual publish date accuracy tips
- π΄ Live-Aware Downloads: Track live status to avoid grabbing still-airing streams and see LIVE indicators in the UI
- π Download History: Track what you've downloaded with smart duplicate prevention
- π Discord Alerts: Send optional webhook notifications when new videos finish downloading
- β»οΈ Re-download Missing: Easily identify and re-download videos that were removed from disk
- π Secure Access: Local authentication system with admin controls
- βοΈ Platform Flexible: Configurable storage paths for Kubernetes/Elfhosted deployments
- π₯οΈ Unraid Ready: Community Applications template (via DialmasterOrg repo) with headless-friendly credential presets
- π Auto Library Refresh: Automatically update Plex after downloads
- π Plex-Ready Format: Videos organized and named for perfect Plex compatibility
- π¬ Enhanced Metadata: Embedded metadata including title, genre, studio, and keywords for rich Plex display
- π NFO Files: Automatically generates .nfo metadata files for each video
- π¨ Channel Posters: Creates poster.jpg files in channel folders for visual browsing
- π·οΈ Rich Metadata: Includes title, plot, upload date, channel info, genres, tags, and runtime
- π§ Easy Setup: Add as "Movies" library with NFO metadata reader enabled
- Docker & Docker Compose
- Git
- Bash shell (Git Bash for Windows)
- Plex Media Server (optional - only if you want automatic library refresh)
β οΈ IMPORTANT: Always use./start.shto start Youtarr (notdocker compose updirectly). The start script configures required environment variables from your config.json.
-
Clone the repository:
git clone https://github.com/dialmaster/Youtarr.git cd Youtarr -
Run setup:
./setup.sh # Select your YouTube download directory -
Start Youtarr:
./start.sh
- Optional: run
./start.sh --no-authonly when Youtarr sits behind your own authentication layer (Cloudflare Tunnel, OAuth proxy, VPN, etc.) β οΈ Never expose Youtarr directly to the internet when using--no-auth; always require upstream authentication
- Optional: run
-
Access the web interface:
- Navigate to
http://localhost:3087 - Create your admin account on first access
- If you want automatic Plex integration with library refresh, then configure your Plex connection
- The app works fine without Plex integration and will still download videos from YouTube automatically and allow you to add and browse YouTube channels
- If containers donβt start or the app isnβt reachable, see Troubleshooting
- Navigate to
- Already running MariaDB/MySQL elsewhere? Copy
config/external-db.env.exampletoconfig/external-db.env, fill in your connection details, then either:- Run
./start.sh --external-db(Docker Compose helper) or - Run
./start-with-external-db.sh(single-container helper for platforms like UNRAID)
- Run
- Full walkthrough (including local testing steps) lives in docs/EXTERNAL_DB.md
- Requires a running MariaDB instance reachable from the container. You can run MariaDB directly on Unraid or point to an existing server.
- Install the Community Applications plugin (if you have not already), then add the template repo URL
https://github.com/DialmasterOrg/unraid-templatesunder Apps β Settings β Manage Template Repositories. - Search for Youtarr under the Apps tab and launch the template. The XML lives at
https://github.com/DialmasterOrg/unraid-templates/blob/main/Youtarr/Youtarr.xmlfor reference. - Until the template is accepted into the main Community Applications feed, it is available directly from this repository.
- Map your persistent paths (for example
/mnt/user/appdata/youtarr/configfor/app/configand/mnt/user/media/youtubefor/data) and supply the MariaDB connection variables before deploying. - Set both
AUTH_PRESET_USERNAMEandAUTH_PRESET_PASSWORDso the container boots with working credentials. Leaving them blank requires completing the setup wizard from the Unraid host's localhost (e.g., via SSH port forwarding), which most headless installs won't have handy. You can change the credentials later from the Youtarr UI.
- Navigate to Downloads page
- Paste YouTube URLs to validate and preview video metadata
- Optionally customize resolution settings for this download
- Click "Start Download" to begin
- Go to Channels page
- Add channel by URL or @handle (e.g.,
@MrBeastorhttps://youtube.com/@MrBeast) - Choose to download all videos or let automation handle new ones
- (Optional) Configure channel-specific settings:
- Click on a channel to open its page, then click the settings icon (gear)
- Set a custom subfolder to organize channels into separate media libraries (e.g.,
__kids,__music) - Override the global quality setting with a channel-specific resolution preference
- Visit Configuration page
- Set download schedule (e.g., every 6 hours)
- Choose video resolution and download limits
- Enable Automatic Video Removal (optional):
- Toggle "Enable Automatic Video Removal"
- Pick a free-space and/or age threshold
- Use "Preview Automatic Removal" to simulate deletions before saving
- (Optional) Connect Plex for auto-refresh
- Go to Configuration page β SponsorBlock Integration section
- Enable SponsorBlock to automatically handle sponsored content
- Choose action: Remove segments entirely or mark them as chapters
- Select which types of segments to handle (sponsors, intros, outros, etc.)
- All new downloads will automatically process selected segments
- Open Configuration β Optional: Notifications
- Toggle notifications on and paste your Discord webhook URL (Server Settings β Integrations β Webhooks)
- Save configuration, then use "Send Test Notification" to verify delivery
- Youtarr will notify the channel after successful downloads that include at least one new video
- Go to Downloaded Videos or Channel Videos page
- Look for videos marked with cloud-off icon (missing from disk)
- Select videos to re-download with your preferred resolution
- Videos will be queued for download while preserving metadata
- Setup Guide - Detailed installation and configuration instructions
- Media Server Guide - Configuration for Plex, Kodi, Jellyfin, and Emby
- Troubleshooting - Solutions to common issues
- Docker Guide - Docker configuration and management
- Development - Contributing and development setup
- Storage: Videos download to the directory you select during setup
- Storage Growth: Downloads can consume significant disk space over time. The UI includes a storage status chip that shows total and free space for your selected directory/drive, making it easy to monitor and adjust limits/schedule as needed. Automatic Video Removal can purge old videos nightly at 2:00 AM once you configure age or free-space thresholds; space-based cleanup relies on the storage status chip reporting accurate disk usage.
- Format: Downloads as MP4 with comprehensive embedded metadata (title, genre, studio, keywords) and NFO files for maximum media server compatibility
- File Management: Videos must retain their
[youtubeid].mp4filename and remain in their download location. Moving or renaming files will cause Youtarr to mark them as "missing" - Filtering: Automatically skips subscriber-only content; configure auto-downloads separately for long-form videos, Shorts, and Streams
- Authentication: Uses local authentication (create admin account on first access)
- Security: Leave authentication enabled unless you have your own auth in front of Youtarr. If you launch with
--no-auth(or setAUTH_ENABLED=false), never expose that instance directly to the public internet.
- Library Type: Must be configured as "Other Videos" with "Personal Media" agent
- API Key: Get it automatically via Configuration page or manually
- Network Access: Youtarr and Plex can run on the same or separate machines as long as:
- Youtarr can write to the media location (local or network storage)
- Plex can read from the same media location
- Youtarr can reach the Plex API over the network
- Network Storage: Supports NAS, network shares, and mounted volumes
- Docker Desktop (Windows/macOS): Use
host.docker.internalas your Plex server address - Docker on macOS without Docker Desktop (e.g., Colima): Use the Mac's LAN IP (e.g.,
192.168.x.x) orhost.lima.internal - Docker on Linux: Use the host's LAN IP (e.g.,
192.168.x.x).host.docker.internalnormally resolves to the Docker bridge and Plex may not be listening there. - Custom Plex port: Plex defaults to port
32400, but you can change the Plex Port field (or include the port inPLEX_URL) if your server listens elsewhere. - Library path translation: When you pick a Plex library, confirm the suggested download path matches how Youtarr sees your storage (e.g., convert
C:\Mediato/mnt/c/Mediaon WSL).
Youtarr now fully supports platform-managed deployments with automatic configuration:
- Auto-Configuration: When
DATA_PATHis set, config.json is auto-created on first run - Platform Authentication: Set
AUTH_ENABLED=falseto bypass internal auth (only when platform handles it).β οΈ Never expose a no-auth instance directly; protect it behind your platform's authentication layer. - Pre-configured Plex: Set
PLEX_URLfor automatic Plex server configuration - Consolidated Storage: All persistent data stored under single
/app/configmount - Example:
DATA_PATH=/storage/rclone/storagebox/youtube - Details: See Docker Guide for full configuration
Youtarr is not affiliated with YouTube or Plex. Users are responsible for ensuring their use complies with YouTube's Terms of Service and applicable copyright laws. This tool is intended for personal use with content you have the right to download.
Licensed under the ISC License. See LICENSE.md for details.