Self-hosted service
averygan/reclip avatar
averygan/reclip

ReClip: A Self-Hosted Web UI for Downloading Videos via yt-dlp

Download videos from almost any website. Lightweight, self-hosted media downloader with a clean web UI.

9,613 stars1,482 forksHTMLMIT

At a glance

What is it?
ReClip is a self-hosted, open-source video and audio downloader that wraps the yt-dlp engine in a clean web interface, accessible on any device with a browser. It is a thin Python and vanilla-JavaScript application for personal use, not a streaming service or cloud tool.
Who is it for?
ReClip is a reasonable choice for someone who wants a browser-based interface to yt-dlp without installing a native client on every device. The Docker path makes deployment straightforward.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 83 days ago.
What is it written in?
Mainly HTML, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 22, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What ReClip Is and Who It Is For

ReClip solves a specific problem: running yt-dlp from a browser without touching a terminal. The project is aimed at users who want to download videos from YouTube, TikTok, Instagram, Twitter/X, Reddit, Vimeo, Twitch, and more than a thousand other sites, using any device that can open a web browser, without requiring that device to have Python or yt-dlp installed locally.

The backend is a single Python file of approximately 150 lines that wraps yt-dlp and exposes an API through Flask. The frontend is a single vanilla HTML, CSS, and JavaScript file with no build step. The README lists the dependency count as two: Flask and yt-dlp. This minimalism is deliberate. There is no database, no user accounts, and no background queue. Each download request runs synchronously through the Python process.

ReClip is not a media archive server, a streaming platform, or a tool for bulk content ingestion. The README includes a disclaimer: the tool is intended for personal use only, and users are responsible for respecting copyright laws and platform terms of service.

Installing and Running ReClip

The README gives two paths: a native install and a Docker container.

For the native path, install the system dependencies first, then clone and start:

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

After running the startup script, the interface is available at `http://localhost:8899`. The port 8899 is fixed in the code.

For Docker, the README provides a one-line command:

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

Or with Docker Compose, using the provided `docker-compose.yml`:

bash
docker run -p 8899:8899 reclip

The Docker image is built on `python:3.12-slim`. The Dockerfile installs ffmpeg from the system package manager, installs Flask, yt-dlp, and gunicorn via pip, creates a dedicated `reclip` user with UID 1000, and starts gunicorn with four threads and a 600-second timeout. The 600-second timeout accommodates long video downloads without the process being killed mid-stream.

Downloaded files land in `/app/downloads` inside the container. The Docker Compose file defines a named volume `reclip-downloads` that persists downloads across container restarts.

For the native path, ffmpeg must be available on the system PATH. Without it, MP3 extraction and certain video conversions will fail since yt-dlp relies on ffmpeg for post-processing.

How the Download Workflow Works

The interface is straightforward. Paste one or more video URLs into the input box. Select MP4 for video or MP3 for audio extraction. Click Fetch to load video metadata and thumbnails. Choose a quality or resolution from the available options. Then click Download on a single item or Download All for the batch.

ReClip includes automatic URL deduplication: if the same URL is pasted twice, only one copy is processed. This prevents duplicate downloads when pasting a list that includes repeated links.

The frontend calls the Flask backend, which invokes yt-dlp with the selected options. yt-dlp handles format selection, playlist expansion, and extraction from whatever site the URL points to. ReClip itself does not contain site-specific logic; it inherits whatever yt-dlp supports. The supported site list is maintained by the yt-dlp project, not by ReClip.

For MP3 extraction, yt-dlp downloads the audio stream (or the video stream if audio-only is not available) and passes it to ffmpeg for conversion. The resulting file is then served to the browser for download.

What ReClip Cannot Do

ReClip has no authentication layer. Anyone who can reach port 8899 on the host can use the interface. Exposing the default port to the internet without a reverse proxy or firewall rule is a significant security gap. The README does not document any access control configuration.

There is no queue or job management. If a long download is in progress and a second request arrives, both will attempt to run through the single-worker Flask process. The Dockerfile's gunicorn configuration starts with one worker and four threads (`-w 1 --threads 4`), so some concurrency is available, but there is no progress tracking, no cancellation mechanism, and no retry on failure.

ReClip does not support playlist management beyond what yt-dlp handles natively. There is no library view, no search over downloaded files, and no streaming playback. The interface is a download tool, not a media server.

The application does not update yt-dlp automatically. When a site changes its API and yt-dlp needs an update to continue working, the Docker image or the local pip installation must be updated manually.

How ReClip Compares to Using yt-dlp Directly

yt-dlp is the underlying engine that does all the work in ReClip. Running yt-dlp directly from the command line gives more control: custom format strings, post-processing hooks, authentication cookies for private content, rate limiting, and subtitle extraction. ReClip exposes a subset of yt-dlp's capabilities through a browser interface and hides the rest.

The practical difference is accessibility. On a home server, a NAS, or a VPS, ReClip makes yt-dlp usable from a phone, tablet, or any machine without Python installed. A developer already comfortable with the command line loses nothing by using yt-dlp directly. Someone less comfortable with terminals, or someone who wants to share the downloader with family on a home network, benefits from the browser interface.

For teams or households that want something more feature-complete, Tube Archivist is a self-hosted media server built around yt-dlp with a library view, metadata management, and a subscription model. Tube Archivist is a larger, more complex application. ReClip is simpler and more constrained: a frontend for single downloads, not a long-running archiving system.

Licensing and Repository State

ReClip is released under the MIT licence. The repository had its last push on 2026-07-09. The repository has no GitHub releases; users tracking updates must watch the main branch directly.

The stack involves two external runtime dependencies (Flask and yt-dlp) and one system dependency (ffmpeg). Both Flask and yt-dlp are actively developed projects with their own release cycles. A working ReClip installation depends on the yt-dlp version being current enough to handle whichever sites the user targets. When a site update breaks yt-dlp extraction, the fix comes from the yt-dlp project, not from ReClip.

Editorial conclusion

ReClip is a reasonable choice for someone who wants a browser-based interface to yt-dlp without installing a native client on every device. The Docker path makes deployment straightforward. Those who are comfortable with yt-dlp directly on the command line will find ReClip adds little. The repository had its last push on 2026-07-09, and the README explicitly limits its intended use to personal, copyright-respecting downloads. Anyone using it to ingest content for redistribution is acting outside what the licence and disclaimer cover.

Frequently asked questions

how to install reclip

Clone the repository with `git clone https://github.com/averygan/reclip.git`, then run `./reclip.sh` after installing ffmpeg and yt-dlp. Alternatively, run `docker build -t reclip . && docker run -p 8899:8899 reclip` to use the Docker image. The interface opens at http://localhost:8899.

what does reclip do

ReClip is a self-hosted web interface for downloading videos and audio. Paste one or more URLs from YouTube, TikTok, Instagram, or over a thousand other supported sites, choose MP4 or MP3, and download the files to the server.

is reclip legal

ReClip is a download tool and the README states it is intended for personal use only. The README instructs users to respect copyright laws and the terms of service of the platforms they download from. Legal compliance depends on what the user downloads and how they use it.

Official sources

  1. averygan/reclip on GitHub
  2. Issues
  3. License: MIT
  4. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/averygan-reclip.svg)](https://hysenlabs.com/projects/averygan-reclip)