OsumDL is a free, open-source video downloader that supports 25+ platforms — YouTube, Instagram, TikTok, Vimeo, Pornhub, XVideos, and many more. It ships as both a powerful CLI tool and this polished web interface.
Under the hood, OsumDL uses yt-dlp — the fastest, most actively maintained video downloader engine available — combined with custom extractors for sites that need special handling.
The web interface is built with FastAPI and the Tabler UI design system, giving you real-time download progress via Server-Sent Events and a fully documented REST API.
extractors/ ← Site-specific download logic (25+ extractors)
core/ ← Shared async service layer
├── models.py ← Pydantic models (DownloadJob, SiteInfo …)
├── downloader.py ← Async wrappers (asyncio.to_thread)
└── queue.py ← In-memory async job queue
download.py ← CLI app (uses core/)
webapp/ ← FastAPI app (uses core/)
├── main.py ← App factory + middleware
├── routers/ ← Downloads, Sites, Health
├── templates/ ← Jinja2 + Tabler UI pages
└── static/ ← CSS + JS
Adding a new site extractor in extractors/ automatically enables it in
both the CLI and the web app — no other changes required.
# Install
pip install -r requirements.txt
# Single URL
python download.py https://youtube.com/...
# Batch file
python download.py urls.txt
# Web app
python run_webapp.py
# → http://localhost:8000