A fast and clean web app for downloading YouTube videos in MP4 format — including YouTube Shorts and playlist URLs.
Built with Next.js, yt-dlp, and ffmpeg.
- Paste any YouTube video, Shorts, or playlist-linked URL and instantly fetch available qualities
- Download in MP4 at all available resolutions (144p up to 4K/8K where available)
- High-quality DASH streams are automatically merged with audio via ffmpeg
- Shows FPS, file size estimate, and whether the stream requires audio merging
- English and Spanish UI (toggle in the top-right corner)
- Fully responsive dark UI
| Layer | Technology |
|---|---|
| Framework | Next.js (App Router, TypeScript) |
| Styling | Tailwind CSS |
| YouTube backend | yt-dlp via youtube-dl-exec |
| Audio/video merging | ffmpeg-static |
- Node.js 18+
npm installnpm run devOpen http://localhost:3000 in your browser.
npm run build
npm start- Paste a YouTube URL and click Process
- The app calls yt-dlp to fetch all available MP4 formats for that video
- High-quality formats (1080p+) are video-only DASH streams — downloading one of these will automatically merge the best available audio track using the bundled ffmpeg binary
- Click Download on any quality row to start the download directly in your browser
app/
├── api/
│ ├── info/route.ts — fetches available formats via yt-dlp
│ └── download/route.ts — streams the video (with optional audio merge) to the browser
├── components/
│ ├── LanguageSwitcher.tsx
│ ├── UrlForm.tsx
│ └── VideoPanel.tsx
├── translations.ts — EN/ES strings
├── types.ts — shared TypeScript interfaces
├── layout.tsx
└── page.tsx — main page (state + orchestration)
This app runs yt-dlp as a child process and streams potentially large files. Serverless platforms with short function timeouts (e.g. Vercel free tier) are not recommended. Use a persistent server environment such as:
Dorian Butron — doriansao@gmail.com