Download YouTube playlists as MP3 albums with custom metadata. A local desktop app built with Next.js UI and Python FastAPI backend.
- Step 1: Enter YouTube playlist URL and set album metadata (title, artist, year, cover art)
- Step 2: Reorder tracks and edit track titles
- Final: Download ZIP file with properly tagged MP3s ready for music apps
- Docker and Docker Compose
- YouTube playlist URL
- Clone this repository
- Run with Docker Compose:
docker compose up --build- Open your browser to:
playlist2album/
├── docker-compose.yml # Docker Compose configuration
├── api/ # Python FastAPI backend
│ ├── Dockerfile
│ ├── requirements.txt
│ └── main.py # API endpoints (download, finalize)
├── ui/ # Next.js frontend
│ ├── Dockerfile
│ ├── app/
│ │ ├── page.js # Step 1: Form with playlist URL
│ │ ├── order/
│ │ │ └── page.js # Step 2: Reorder tracks
│ │ └── api/ # Proxy routes to FastAPI
│ └── package.json
└── data/ # Output directory (created automatically)
├── jobs/ # Working directory for downloads
└── out/ # Final ZIP files
- Enter Playlist URL: Paste your YouTube playlist URL
- Set Album Metadata: Fill in album title, artist, year, and optionally upload cover art
- Download: Click "Fetch & Convert" - this downloads all videos as MP3s
- Reorder: On the order page, drag tracks up/down or edit titles
- Finalize: Click "Finalize & Download ZIP" to get your tagged album
- Backend: FastAPI with
yt-dlpfor downloading andmutagenfor MP3 tagging - Frontend: Next.js 16 with CSS Modules (no TypeScript, no Tailwind)
- Styling: Netflix-style dark theme with hot pink accents
- Metadata: ID3v2.3 tags for maximum compatibility
- All processing happens locally - no cloud uploads
- Ensure you have rights to download/convert the content
- YouTube ToS/copyright may prohibit downloading content