A sleek media downloader for YouTube, Instagram, TikTok, Twitter/X and 1000+ platforms, with real-time SSE progress and a modern UI.
- Multi-Platform Support — Download from YouTube, Instagram, TikTok, Twitter/X and 1000+ sites via yt-dlp
- Real-Time Progress — SSE-powered live progress bar, no polling
- Format Options — Video, Audio, Thumbnail, Subtitles with quality selectors
- Clipboard Detection — Auto-detects media URLs from your clipboard
- QuickTime Compatible — H.264 encoded videos that play natively on macOS
- Frontend — React 19 + Vite, Framer Motion, Lucide Icons
- Backend — Express.js, SSE for real-time updates
- Media Processing — yt-dlp with FFmpeg
- Node.js 18+
- yt-dlp installed (
brew install yt-dlp) - FFmpeg installed (
brew install ffmpeg)
# Clone the repo
git clone https://github.com/Jai0401/pulse.git
cd pulse
# Install dependencies
npm install
# Start frontend (terminal 1)
npm run dev
# Start backend (terminal 2)
node server/index.cjsCreate a local .env file (copy from .env.example) and set your API base URL:
# Frontend (Vite)
VITE_API_URL=http://localhost:3001
# Backend (Express)
PORT=3001
FRONTEND_URL=http://localhost:5173
CORS_ORIGIN=http://localhost:5173- Paste any media URL into the input
- Select format (Video/Audio/Thumbnail/Subtitles)
- Choose quality and output format
- Click "Download Now"
| Shortcut | Action |
|---|---|
Cmd/Ctrl + Enter |
Analyze URL |
Esc |
Clear input |
Set the environment variable in Vercel:
VITE_API_URL=https://your-render-service.onrender.com
Create a new Web Service pointing to this repo. Use:
- Build Command: npm install
- Start Command: node server/index.cjs
Set environment variables:
PORT=3001
FRONTEND_URL=https://your-vercel-app.vercel.app
CORS_ORIGIN=https://your-vercel-app.vercel.app