Enhanced fork of averygan/reclip — a self-hosted media downloader with a premium dark UI.
This fork adds a premium dark mode UI, anti-bot bypass via browser sidecar, Apple-native codec selection, optimized audio extraction, metadata embedding, and optional VPN proxy routing — all running inside Docker.
Original project by averygan — a lightweight, self-hosted video downloader with a beautiful web UI. All credit for the core concept, original UI design, and the initial Flask + yt-dlp architecture goes to the original author.
This fork builds upon that foundation with infrastructure and compatibility improvements documented below.
Completely redesigned interface with a dark-first aesthetic: monochrome palette (#0a0a0a background), editorial serif typography (Instrument Serif + DM Mono), subtle noise texture, shimmer loading skeletons, and smooth slide-up animations. Fully responsive — works on mobile and desktop.
YouTube blocks cloud-based yt-dlp requests with "Sign in to confirm you're not a bot" challenges. This fork solves it with a two-layer authentication strategy:
- POT (Proof of Origin Token) — Automatic token generation via the
bgutil-ytdlp-pot-providerplugin with Deno runtime. - Browser Sidecar — A persistent Chromium container (linuxserver/chromium) shares its authenticated cookies with
yt-dlp. One manual YouTube login = persistent session across all downloads.
The backend automatically tries POT first, then falls back to browser cookies if authentication fails.
If you run VPN proxy containers on your host, download traffic is automatically routed through them with failover:
- Primary: NordVPN proxy (port
8891) - Fallback: ProtonVPN proxy (port
8892) - No VPN? No problem — if no proxy is detected, ReClip prompts you to continue with your direct internet connection. VPN is completely optional.
The browser sidecar can also route through the same VPN chain via a dynamically-generated PAC file.
The original project uses yt-dlp's default format selection, which may produce VP9/AV1 video inside MP4 containers. These codecs are not natively supported by macOS QuickTime, iOS, or Safari — resulting in black screens or playback failures.
This fork forces H.264 (AVC) codec selection by heavily weighting AVC formats during quality analysis (is_avc * 1000000 scoring), ensuring every downloaded MP4 plays natively on Apple devices without needing VLC.
The original audio extraction downloads the full video stream (potentially gigabytes) just to discard it and keep the audio track. This fork adds -f bestaudio before the extraction flags, downloading only the audio stream (~5MB instead of ~5GB), making MP3 conversion near-instant.
Downloads now include embedded metadata (title, artist, year) and thumbnail cover art via --embed-metadata and --embed-thumbnail. The mutagen library is included for reliable MP3 cover art injection that ffmpeg alone often corrupts.
The frontend extracts only valid URLs from clipboard content using regex, ignoring any surrounding text or formatting artifacts.
Auto-detects the user's browser language and renders the entire UI in English or Spanish. A toggle button in the top-right corner lets users switch manually — preference is saved to localStorage.
Includes a declarative web extension manifest (mobile-ext/) for sharing URLs directly from mobile browsers to the ReClip instance.
┌─────────────────────────────────────────────────┐
│ Docker Network │
│ │
│ ┌──────────────┐ ┌────────────────────┐ │
│ │ reclip │ │ reclip-browser │ │
│ │ (Flask) │◄─────►│ (Chromium) │ │
│ │ Port 8899 │cookies│ Port 3002 │ │
│ │ │ │ (KasmVNC Web UI) │ │
│ │ yt-dlp │ │ │ │
│ │ + ffmpeg │ │ Persistent login │ │
│ │ + Deno/POT │ │ session & cookies │ │
│ └──────┬───────┘ └────────┬───────────┘ │
│ │ │ │
│ └───────┬────────────────┘ │
│ │ VPN Proxy Chain │
│ ┌───────▼───────┐ │
│ │ PAC Router │ │
│ │ NordVPN:8891 │ │
│ │ ProtonVPN:8892│ │
│ │ DIRECT (opt) │ │
│ └───────────────┘ │
└─────────────────────────────────────────────────┘
git clone https://github.com/ungrav/reclip-noir.git
cd reclip-noir
docker compose up -dOpen http://localhost:8899 for the downloader UI. Open http://localhost:3002 for the browser sidecar (first-time YouTube login).
- Open the browser sidecar at
http://localhost:3002 - Log in to YouTube with any Google account
- Close the browser tab — the session persists
- All future downloads will use that authenticated session
- Paste one or more video URLs into the input box
- Choose MP4 (video) or MP3 (audio)
- Click Fetch to load video info and thumbnails
- Select quality/resolution if available
- Click Download on individual videos, or Download All
Anything yt-dlp supports, including:
YouTube · TikTok · Instagram · Twitter/X · Reddit · Facebook · Vimeo · Twitch · Dailymotion · SoundCloud · Loom · Streamable · Pinterest · Tumblr · Threads · LinkedIn · and 1000+ more.
| Layer | Technology |
|---|---|
| Backend | Python 3.12 + Flask |
| Frontend | Vanilla HTML/CSS/JS (single file, no build step) |
| Download Engine | yt-dlp + ffmpeg |
| Anti-Bot | bgutil-ytdlp-pot-provider + Deno |
| Browser Sidecar | linuxserver/chromium |
| Metadata | mutagen |
This tool is intended for personal use only. Please respect copyright laws and the terms of service of the platforms you download from. The developers are not responsible for any misuse of this tool.
MIT — Same as the original project.

