reclip

Self-hosted yt-dlp wrapper with a clean web UI for downloading video or audio from 1000+ sites.

A small Flask app that wraps yt-dlp behind a clean web UI. Paste one or many URLs, pick MP4 or MP3, choose resolution, hit download. The whole backend is one Python file at ~150 lines, the frontend is vanilla HTML/CSS/JS with no build step. The right amount of code for the job.

What it is for

A tiny self-hosted alternative to commercial downloader sites. Useful when:

  • You want a permanent local URL (http://localhost:8899) instead of pasting into ad-laden web tools.
  • You need to bulk-download from a list of links (paste them all, deduped automatically).
  • You want video as MP4 or audio-only as MP3 with a resolution picker.

Stack

Layer Tech
Backend Python + Flask, ~150 lines
Frontend Vanilla HTML/CSS/JS, single file, no build
Download engine yt-dlp + ffmpeg
Dependencies 2 (Flask, yt-dlp)
License MIT

Install

brew install yt-dlp ffmpeg          # macOS
# or: apt install ffmpeg && pip install yt-dlp
git clone https://github.com/averygan/reclip.git
cd reclip
./reclip.sh

Open http://localhost:8899.

Docker version:

docker build -t reclip . && docker run -p 8899:8899 reclip

Supported sites

Anything yt-dlp supports — YouTube, TikTok, Instagram, Twitter/X, Reddit, Facebook, Vimeo, Twitch, Dailymotion, SoundCloud, Loom, Streamable, Pinterest, Tumblr, Threads, LinkedIn, and ~1000 more.

Value

The yt-dlp CLI is already excellent. What reclip adds:

  • A persistent UI on the home network instead of remembering CLI flags.
  • Bulk paste with dedup — handy for pulling a bunch of links from a chat or notes file.
  • A separation between "fetch info / pick format" and "actually download", so you can sanity-check before committing.

Good fit for a Docker container on a home server next to other small tools. Not a replacement for yt-dlp itself when you want full control or scheduling.