YAML Metadata Warning:empty or missing yaml metadata in repo card

Check out the documentation for more information.

YVD - YouTube Video Downloader

A modern, fast, and secure YouTube video downloader application using an Express.js backend with yt-dlp, and a vanilla HTML/CSS/JS frontend featuring a clean, responsive, and dynamic UI.

Features

  • Fully responsive modern design with Dark Mode support via system preferences & toggle switch.
  • Downloads videos up to 4K resolution (merges best video and audio using ffmpeg).
  • Downloads MP3 audio instantly.
  • Live progress bar reflecting yt-dlp stdout.
  • Files download directly to device, temporary server files self-delete after 1 hour.

Prerequisites

Ensure the following are installed and in your system's PATH:

  1. Node.js: (v16+)
  2. yt-dlp: Download from yt-dlp GitHub. Place it in your PATH, or install via pip: pip install yt-dlp or OS package manager.
  3. ffmpeg: Crucial for merging 1080p/4K video streams with audio, and for extracting .webm/.m4a to purely .mp3. Ensure ffmpeg and ffprobe are in your PATH.

How to run locally

  1. Open a terminal.
  2. Navigate to project root.
  3. Install Node.js dependencies:
npm install
  1. Start the development server:
npm start
# or use `npm run dev` to use nodemon
  1. Open your browser and navigate to http://localhost:3000.

How to deploy on VPS (Ubuntu/Alpine)

  1. Provision a VPS, instance, or VM running Ubuntu/Debian.
  2. Install system dependencies:
sudo apt update
sudo apt install nodejs npm ffmpeg python3-pip -y
sudo pip3 install yt-dlp
  1. Clone this repository or copy files to the VPS (e.g., /var/www/yvd).
  2. Install app dependencies:
cd /var/www/yvd
npm install
  1. Install pm2 globally to keep the server running in the background:
sudo npm install -g pm2
pm2 start server.js --name "yvd-server"
pm2 save
pm2 startup

How to connect a domain (Nginx Reverse Proxy)

  1. Point your domain's A record in your DNS settings to your VPS IP address.
  2. Install Nginx and Certbot for SSL:
sudo apt install nginx certbot python3-certbot-nginx -y
  1. Create an Nginx site configuration:
sudo nano /etc/nginx/sites-available/yvd

Add the following configuration:

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        
        # Avoid timeouts during long downloads
        proxy_read_timeout 3600;
    }
}
  1. Enable the configuration and restart Nginx:
sudo ln -s /etc/nginx/sites-available/yvd /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
  1. Secure with Let's Encrypt (SSL):
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

Security & Cleanup

  • The server validates URLs through REGEX before passing to child processes.
  • Completed files stored in downloads/ directory automatically run a cleanup sequence to prevent server crash from full storage space (Deletes after 1 hour).
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support