tydle / mp3 deck

A hosted web app: paste a YouTube video or playlist link, get the highest-quality mp3 of every track — powered by a Rust YouTube extractor compiled to WebAssembly.

Open the live deck

What it is

tydle is a YouTube video extractor written in Rust — a small subset of yt-dlp that runs natively or in any JavaScript runtime via wasm. The deck is a zero-dependency Node server on top of it: tydle (as a wasm module) extracts the streams, the server picks the best audio-only stream, and ffmpeg transcodes it to mp3 at LAME's highest VBR quality, streamed straight to the browser.

Details it gets right

YouTube paces plain downloads to roughly twice the media bitrate — a 53-minute mix would take 25 minutes. The deck fetches sources in 10 MiB Range chunks instead, which YouTube serves at full speed: same file, 38 seconds.

Playlists (including auto-generated radio mixes) are enumerated from the page data and downloaded sequentially with per-track progress and a live ETA. Piped mp3 can't carry a Xing VBR header, so each file gets an exact ID3 TLEN tag instead — players still show the right duration. Title and artist tags come along for free.

How it's hosted

YouTube bot-checks requests from datacenter IPs — every innertube client returns “Sign in to confirm you're not a bot”, so extraction fails outright from a VPS. A Proof-of-Origin token (BotGuard attestation) isn't enough to lift an IP-level block.

So the deck doesn't extract on the server. chilos.dev/tydle/ is an nginx reverse proxy on the VPS that forwards over a persistent reverse SSH tunnel to the deck running on a machine at home — so the YouTube requests originate from a residential IP that isn't flagged. The VPS only ever sees the finished mp3 stream on its way to your browser.

Run it

The live deck runs at chilos.dev/tydle/. To run it locally, build the wasm package with wasm-pack, run node server.js, then paste a link.