YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
YouTube Downloader
A web-based YouTube video downloader built with Node.js and yt-dlp. Paste a URL, browse available formats, and download videos in various resolutions or extract audio as MP3.
Features
- Video Info Extraction β Fetches title, thumbnail, uploader, view count, duration
- Format Selection β Browse all available video resolutions (144pβ4K) and audio-only options
- Real-time Progress β Live download progress bar with speed indicator via yt-dlp events
- Success Modal β Confirmation dialog with direct file download link after completion
- Download History β Persistent list of downloaded files with delete support
- Responsive UI β Dark theme, mobile-friendly layout
Tech Stack
| Layer | Technology |
|---|---|
| Backend | Node.js + Express |
| Video Engine | yt-dlp (via yt-dlp-wrap) |
| Frontend | Vanilla HTML/CSS/JS (single page) |
Prerequisites
- Node.js 18+ (Download)
- yt-dlp β The core video downloader. Install via one of these methods:
- Windows (chocolatey):
choco install yt-dlp - Windows (pip):
pip install yt-dlp - macOS:
brew install yt-dlp - Linux:
sudo apt install yt-dlp
- Windows (chocolatey):
After installing, verify with
yt-dlp --version. The server uses theyt-dlpcommand on PATH by default. To use a custom path, editYT_DLP_PATHin server.js.
Installation
# Clone or download this repository
cd youtube-downloader
# Install Node.js dependencies
npm install
Running
npm start
Open http://localhost:3000 in your browser.
To change the port:
PORT=8080 npm start
API Reference
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/info?url= |
Extract video metadata and available formats |
| POST | /api/download |
Start a download (body: {url, format}) |
| GET | /api/status/:jobId |
Poll download progress |
| GET | /api/downloaded |
List all downloaded files |
| GET | /api/file/:filename |
Download / serve a saved file |
| DELETE | /api/file/:filename |
Delete a saved file |
Project Structure
youtube-downloader/
βββ server.js # Express server + yt-dlp integration
βββ public/
β βββ index.html # Single-page frontend (UI + client JS)
βββ downloads/ # Downloaded files stored here (auto-created)
βββ package.json
βββ README.md
License
MIT
Inference Providers NEW
This model isn't deployed by any Inference Provider. π Ask for provider support