Skip to main content

uDownloader

uDownloader Logo

Python 3.9+ Version 0.2.4 License MIT GitHub CI/CD

A fast, powerful Python application to download YouTube videos or audio. Supports single videos or entire playlists with both CLI and Desktop GUI. Uses yt-dlp for efficiency and modern format handling.

Available as a pip-installable package! Install with pip install udownloader

Features

Core Features

  • Download video or audio from YouTube, Instagram, TikTok, Twitter, and more
  • Process single content or playlists
  • Command-line interface with quality and format options
  • Configuration file support with sensible defaults
  • Detailed progress reporting during downloads
  • Automatic retry logic for failed downloads
  • Platform-specific organization (YouTube, Instagram, Twitter, TikTok, etc.)

Desktop Application

  • Modern PyQt6 GUI for intuitive downloading
  • Async/Concurrent Downloads - download multiple videos simultaneously
  • Download History Tracking - view all past downloads with statistics
  • Live Progress Monitoring - track active downloads in real-time
  • Queue Management - manage multiple downloads at once
  • Video Format Selection - choose output container (mp4, mkv, webm) per download
  • X/Twitter Support - browser cookie injection for auth-gated content
  • Settings Panel - configure quality, format, output, retries, concurrent limits, and cookies

Installation

Option 1: Install via pip (Recommended)

# From PyPI
pip install udownloader

# Or install from source (development mode)
git clone https://github.com/bolablg/uDownloader.git
cd uDownloader
pip install -e .

Option 2: Manual installation from source

git clone https://github.com/bolablg/uDownloader.git
cd uDownloader
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

After installation, you'll have two commands available:

  • udownloader - CLI version
  • udownloader-desktop - Desktop GUI version

Technology Stack

Component Technology Purpose
Language Python 3.8+ Core application
Video Downloading yt-dlp 2024.8.2+ Format detection & download
Desktop GUI PyQt6 6.6.0+ Modern graphical interface
Async Processing asyncio + ThreadPoolExecutor Concurrent downloads
Configuration JSON User settings persistence
History Tracking JSON Download records database
Testing pytest + pytest-cov Unit testing & coverage
Code Quality black + flake8 Formatting & linting
Packaging setuptools + wheel PyPI distribution
CI/CD GitHub Actions Automated testing & publishing

Key Dependencies:

  • yt-dlp - Video downloading engine
  • PyQt6 - Desktop application framework
  • pytest - Testing framework (dev only)
  • black - Code formatter (dev only)
  • flake8 - Code linter (dev only)

Quick Start

CLI Mode

# Initialize config file (creates ~/.uDownloader/config.json)
udownloader --init-config

# Download best quality video
udownloader --url https://youtube.com/watch?v=VIDEO_ID

# Download as MP3 audio only
udownloader --url https://youtube.com/watch?v=VIDEO_ID --audio

# Download specific quality (best, 1080p, 720p, 480p, 360p)
udownloader --url https://youtube.com/watch?v=VIDEO_ID --quality 720p

# Download in a specific container format (mp4, mkv, webm, original)
udownloader --url https://youtube.com/watch?v=VIDEO_ID --video-format mkv

# Download from X/Twitter using browser cookies for authentication
udownloader --url https://x.com/user/status/POST_ID --cookies-browser chrome

# Download entire playlist to custom location
udownloader --url https://youtube.com/playlist?list=PLAYLIST_ID --output ~/Downloads --retries 5

# Verbose logging for debugging
udownloader --url https://youtube.com/watch?v=VIDEO_ID --verbose

Desktop Application

# Launch desktop app (from installed package)
udownloader-desktop

# Or if running from source directory
python launcher_desktop.py

On first launch, uDownloader automatically registers itself as a native desktop application:

  • macOS: Installs to /Applications — available in Launchpad and Spotlight
  • Linux: Creates a .desktop entry — appears in your application menu
  • Windows: Adds a Start Menu shortcut

After the first launch, you can open uDownloader directly from your OS like any other app.

Features in Desktop App:

  • Download Tab: Paste URLs and start downloads with quality and format selection
  • Queue Tab: Monitor active downloads in real-time
  • History Tab: View all previous downloads with details
  • Statistics Tab: See download stats by platform and overall success rate
  • Settings: Configure output directory, quality, video format, concurrent limits, retry attempts, and browser cookies for X/Twitter

Screenshots

uDownloader GUI uDownloader Settings

Configuration

The configuration file is automatically created at ~/.uDownloader/config.json when you run --init-config.

Default Settings:

{
    "output_dir": "uDownload",
    "audio_only": false,
    "video_quality": "best",
    "audio_quality": "192",
    "format_preference": "mp4",
    "max_concurrent_downloads": 1,
    "timeout": 300,
    "retries": 3,
    "verbose": false
}

You can edit this file directly to change defaults, or override with command-line arguments (CLI) or settings dialog (Desktop app).

Command-line Options

--url URL, -u URL              YouTube video or playlist URL (required for downloads)
--output OUTPUT, -o OUTPUT     Directory to save downloads (default: config or 'uDownload')
--audio, -a                    Download audio only (mp3)
--quality {best,1080p,720p,480p,360p}  Video quality preference
--config CONFIG, -c CONFIG     Path to custom config file
--init-config                  Create default config file and exit
--retries RETRIES, -r RETRIES  Number of retries on failure (default: 3)
--verbose, -v                  Show detailed logging
--help, -h                     Show help message

Architecture

Modules

  • cli.py - Command-line interface
  • downloader.py - Single download handler
  • async_downloader.py - Async/concurrent download manager
  • desktop.py - PyQt6 desktop GUI application
  • history.py - Download history tracking and statistics
  • config.py - Configuration management

Key Features in Code

  • AsyncDownloader class handles concurrent downloads using ThreadPoolExecutor
  • DownloadHistory class manages download records in JSON format
  • uDownloaderApp is the main desktop application with multi-tab interface
  • DownloadWorker runs downloads in separate thread to keep UI responsive

Documentation

Comprehensive documentation is available in the docs folder:

License

uDownloader is licensed under the MIT License - see LICENSE file for details.


Made with ❤️ for video downloaders everywhere

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

udownloader-0.2.5.tar.gz (376.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

udownloader-0.2.5-py3-none-any.whl (372.2 kB view details)

Uploaded Python 3

File details

Details for the file udownloader-0.2.5.tar.gz.

File metadata

  • Download URL: udownloader-0.2.5.tar.gz
  • Upload date:
  • Size: 376.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for udownloader-0.2.5.tar.gz
Algorithm Hash digest
SHA256 f569e9f8e1df6eccee1a9330e483b4dae534d26f355482ec23c9daf4d628d424
MD5 2dd56e2410569a20a9f185f5c4a5374b
BLAKE2b-256 5d5446868ba440b8a0f6bb00f0c6364cbb51761dff423ae8a9930cfb280440a5

See more details on using hashes here.

File details

Details for the file udownloader-0.2.5-py3-none-any.whl.

File metadata

  • Download URL: udownloader-0.2.5-py3-none-any.whl
  • Upload date:
  • Size: 372.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for udownloader-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 140e9a033a8b516408d7cee9909d986c18c57b057b157268522723f9eb01afc4
MD5 727fc73782abb89b775f0b851e8ab793
BLAKE2b-256 9ca6752154c8b0d12f6466131cf75399e8b409d3b299c10aa916c124405d6ac7

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.5 This release

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page