tapedeck.local pulls audio from YouTube and 1000+ other sites as MP3, M4A, Opus, WAV, or FLAC, entirely on your machine. No cloud. No browser save dialog. Just files where you wanted them.
Built for the small frictions: where files go, what they're named, what the page is trying to push on you, and whether the web app feels like an app or a script in disguise.
Files land directly in your configured folder, no ~/Downloads detour, no save dialog, no mystery filename.
Flask + yt-dlp + FFmpeg, all on 127.0.0.1. Nothing leaves your computer. No accounts. No telemetry. No API.
The usual "YouTube to MP3" sites are a minefield of pop-ups, fake download buttons, sketchy installers, and trackers. This is a static page on localhost, with zero ads, zero redirects, zero third parties watching.
Reveal-in-folder pops Explorer / Finder / your file manager focused on the exact file. Collision-safe names. Zero hunt-and-peck.
Each row narrates its own state: resolving… → queued → downloading 47% → converting… → ✓ saved, backed by a slim accent-coloured fill bar tied to real yt-dlp progress hooks. No spinners pretending to be busy, no localhost transfer theatre.
The filename builder is a drag-and-drop pill canvas: drop a token ({title}, {channel}, {uploader}, {id}), drop a separator (–, ·, _, space), reorder by dragging, click × to remove. A live preview shows the rendered filename.
The whole palette runs on OKLCH tokens, so light and dark match in perceived contrast, and the amber accent stays itself in both. A grain texture sits on top of everything for the cassette feel without the cassette weight.
Drop a browser tab on the page. Paste five URLs separated by spaces, commas, or newlines, and each becomes its own row. The app even peeks at your clipboard on focus and offers an "add" pill when it spots a YouTube link. Press Enter on a duplicate and the existing row shakes so you don’t doubt you hit the key.
No build step, no framework lock-in. React 18 via UMD, Babel-standalone for JSX, and a tiny Flask app gluing yt-dlp and FFmpeg together.
Download the zip file from GitHub, uncompress, double-click, done. Your browser opens it
automatically.
If
it saves you an afternoon of fighting browser save dialogs and ads, coffee is appreciated.