A modern web application for downloading YouTube videos with a clean UI and powerful features.
- Fast & Free: Download YouTube videos instantly without registration
- Multiple Formats: Support for MP4 video and MP3 audio downloads
- Quality Options: Choose from available video quality options (4K, 1080p, 720p, etc.)
- Modern UI: Clean, responsive design with YouTube-inspired red theme
- Cross-Platform: Works on desktop and mobile devices
- No Software Required: Browser-based tool, no downloads needed
Visit the live demo: [https://www.pullvideo.com/]
- Visit the website
- Paste YouTube video URL in the input field
- Click Download and choose your preferred quality
- Download starts automatically in a new tab
- Frontend: HTML5, CSS3, Vanilla JavaScript
- Backend: Python with yt-dlp
- Deployment: Vercel Serverless Functions
- API: RESTful API with CORS support
This project is optimized for Vercel deployment with the following structure:
yvideodownloader/
├── api/ # Vercel Serverless Functions
│ ├── download.py # Main download API endpoint
│ └── health.py # Health check endpoint
├── static/ # Static frontend files
│ ├── index.html # Main webpage
│ └── styles.css # Stylesheet
├── vercel.json # Vercel configuration (optimized)
└── requirements.txt # Python dependencies
-
Fork this repository to your GitHub account
-
Connect to Vercel:
- Go to vercel.com
- Click "New Project"
- Import your forked repository
- Click "Deploy"
-
Configuration: The project includes an optimized
vercel.jsonthat:- Automatically recognizes Python functions in
/api/directory - Routes static files correctly
- Handles CORS headers
- No conflicting builds/functions configuration
- Automatically recognizes Python functions in
# Install Vercel CLI
npm i -g vercel
# Deploy
vercel --prod# Clone the repository
git clone https://github.com/your-username/yvideodownloader.git
cd yvideodownloader
# Install dependencies
pip install -r requirements.txt
# Run development server
PORT=8000 python3 run.py
# Open browser
open http://localhost:8000Extract video information and download URLs.
Request:
{
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"format": "mp4"
}Response:
{
"title": "Video Title",
"author": "Channel Name",
"duration": "03:32",
"thumbnail": "https://...",
"formats": [
{
"quality": "1080p HD",
"url": "https://...",
"ext": "mp4",
"filesize": "15.2 MB",
"filename": "video.mp4"
}
]
}Health check endpoint.
Response:
{
"status": "healthy",
"timestamp": "2024-01-01T00:00:00",
"platform": "vercel"
}- ✅ Removed conflicting builds/functions configuration
- ✅ Migrated from Flask to BaseHTTPRequestHandler for better serverless compatibility
- ✅ Simplified dependency management (removed Flask, Flask-CORS, Werkzeug)
- ✅ Added proper CORS headers in function responses
- ✅ Used relative API paths instead of hardcoded localhost URLs
- ✅ Optimized vercel.json according to Vercel best practices
- Privacy First: No data storage, no tracking
- Legal Use: Respect copyright laws and YouTube's terms of service
- Open Source: MIT License - use responsibly
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Issues: GitHub Issues
- Email: [email protected]
This project is licensed under the MIT License - see the LICENSE file for details.
Disclaimer: This tool is for downloading videos you own or have permission to download. Please respect copyright laws and YouTube's terms of service.