VidPulse is a powerful, modern web application that allows users to download videos from multiple social media platforms with an intuitive, beautiful interface. Built with Flask and yt-dlp, it provides lightning-fast downloads with automatic format detection and quality selection.
- Multi-Platform Support: Download from YouTube, TikTok, Instagram, Twitter, Facebook, and more
- Smart Format Detection: Automatically identifies available video and audio formats
- Quality Selection: Choose from multiple resolution options (4K, 1080p, 720p, etc.)
- Audio Extraction: Download audio-only files in MP3 format
- Automatic Download: Streamlined process with auto-download after processing
- Modern UI/UX: Beautiful, responsive design with glass-morphism effects
- Real-time Progress: Live progress bar showing download status
- Smart Validation: URL validation with visual feedback
- Responsive Design: Works perfectly on desktop, tablet, and mobile devices
- Dark Theme: Eye-friendly dark interface with gradient accents
- Asynchronous Processing: Background download queue for better performance
- Format Optimization: Intelligent format selection for best compatibility
- Error Handling: Comprehensive error handling with user-friendly messages
- SSL Support: Handles SSL certificate issues automatically
- Cross-Platform: Works on Windows, macOS, and Linux
- YouTube - Full video and audio support
- TikTok - Video downloads with quality options
- Instagram - Posts, Reels, and Stories
- Twitter/X - Video tweets and threads
- Facebook - Video posts and stories
- And many more - Any platform supported by yt-dlp
- Python 3.8+ - Core programming language
- Flask 3.1.1 - Lightweight web framework
- yt-dlp 2025.6.30 - Advanced video downloader library
- Flask-CORS 6.0.1 - Cross-origin resource sharing support
- HTML5 - Semantic markup
- Tailwind CSS - Utility-first CSS framework
- JavaScript (ES6+) - Modern JavaScript with async/await
- Font Awesome - Icon library
- Google Fonts - Typography (Inter font family)
- Threading - Background task processing
- Queue System - Download task management
- File System - Local file storage and serving
- RESTful API - Clean API endpoints
Before running this application, ensure you have:
- Python 3.8 or higher
- pip (Python package installer)
- FFmpeg (for audio processing and format conversion)
- Git (for cloning the repository)
brew install ffmpegsudo apt update
sudo apt install ffmpeg- Download FFmpeg from https://ffmpeg.org/download.html
- Extract to a folder (e.g.,
C:\ffmpeg) - Add
C:\ffmpeg\binto your system PATH
git clone https://github.com/yourusername/Social-Media-Video-Downloader.git
cd Social-Media-Video-Downloader# Create virtual environment
python -m venv venv
# Activate virtual environment
# On Windows
venv\Scripts\activate
# On macOS/Linux
source venv/bin/activatepip install -r requirements.txtpython main.pyThe application will be available at http://localhost:5001
- Paste URL: Enter any supported video URL in the input field
- Analyze: Click "Analyze Video" to extract video information
- Select Format: Choose your preferred quality and format
- Download: Click "Download Now" - the file downloads automatically after processing
YouTube: https://youtube.com/watch?v=VIDEO_ID
https://youtu.be/VIDEO_ID
TikTok: https://tiktok.com/@user/video/VIDEO_ID
Instagram: https://instagram.com/p/POST_ID
Twitter: https://twitter.com/user/status/TWEET_ID
Facebook: https://facebook.com/video.php?v=VIDEO_ID
- Video Formats: MP4, WebM, AVI with various resolutions
- Audio Formats: MP3, M4A, OGG with different bitrates
- Quality Options: 4K, 1080p, 720p, 480p, and more
- Auto-Merge: Automatic video+audio merging for better compatibility
Social-Media-Video-Downloader/
├── main.py # Main Flask application
├── requirements.txt # Python dependencies
├── start.sh # Startup script for deployment
├── LICENSE # MIT License
├── README.md # Read me file
├── downloads/ # Downloaded files directory
└── templates/
└── index.html # Main HTML template
The application can be configured using environment variables:
# Port configuration (default: 5001)
PORT=5001
# Download directory (default: ./downloads)
DOWNLOAD_DIRECTORY=/path/to/downloads
# Python version (for deployment)
PYTHON_VERSION=3.11.0- Download Directory: Modify
DOWNLOAD_DIRECTORYinmain.py - Port: Change the port in the
main.pyfile or use environment variables - Format Preferences: Adjust format selection logic in the
get_video_info()function - UI Theme: Modify CSS variables in
templates/index.html
- Fork/Clone this repository
- Connect to Railway
- Deploy automatically using
railway.json
FROM python:3.11-slim
WORKDIR /app
# Install system dependencies
RUN apt-get update && apt-get install -y ffmpeg
# Copy requirements and install Python dependencies
COPY requirements.txt .
RUN pip install -r requirements.txt
# Copy application code
COPY . .
# Expose port
EXPOSE 5001
# Start application
CMD ["python", "main.py"]- Start the application:
python main.py - Open browser: Navigate to
http://localhost:5001 - Test with various URLs:
- YouTube videos
- TikTok content
- Instagram posts
- Twitter videos
# Test video info endpoint
curl -X POST http://localhost:5001/api/info \
-H "Content-Type: application/json" \
-d '{"url": "https://youtu.be/VIDEO_ID"}'
# Test download endpoint
curl -X POST http://localhost:5001/api/download \
-H "Content-Type: application/json" \
-d '{"url": "https://youtu.be/VIDEO_ID", "format_id": "best"}'- Input Validation: All URLs are validated before processing
- File Access: Downloads are served with proper headers
- Error Handling: Sensitive information is not exposed in error messages
- CORS: Configured for development (adjust for production)
# Use python3 instead
python3 main.py
# Or create an alias
alias python=python3# Install FFmpeg (see Prerequisites section)
# Verify installation
ffmpeg -version# Change port in main.py
# Or kill the process using the port
lsof -ti:5001 | xargs kill -9- The application handles SSL issues automatically
- If persistent, check your system's certificate store
- Large Files: Downloads are processed in the background
- Multiple Downloads: Queue system handles concurrent requests
- Memory Usage: Files are streamed to avoid memory issues
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a 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
# Clone your fork
git clone https://github.com/yourusername/Social-Media-Video-Downloader.git
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Install development dependencies
pip install -r requirements-dev.txt # If available
# Run tests
python -m pytest # If tests are available
# Start development server
python main.pyThis project is licensed under the MIT License - see the LICENSE file for details.
- yt-dlp - The powerful video downloader library
- Flask - The web framework for Python
- Tailwind CSS - The utility-first CSS framework
- Font Awesome - The icon library
- Google Fonts - The typography service
If you encounter any issues or have questions:
- Create an Issue on GitHub
- Check the Troubleshooting section above
- Review the Documentation in this README
- User Authentication: User accounts and download history
- Batch Downloads: Download multiple videos simultaneously
- Playlist Support: Download entire playlists
- Cloud Storage: Integration with Google Drive, Dropbox
- Mobile App: Native iOS and Android applications
- API Rate Limiting: Prevent abuse and ensure fair usage
- Download Scheduling: Schedule downloads for off-peak hours
- Format Conversion: Convert between different video formats
- Subtitle Support: Download and embed subtitles
- Analytics Dashboard: Download statistics and usage metrics
- Lines of Code: 1,000+ (Python + HTML/JS)
- Dependencies: 3 main Python packages
- Supported Platforms: 10+ social media platforms
- File Formats: 15+ video and audio formats
- Deployment Options: 5+ cloud platforms