Skip to content

Note open-source

All posts
Oct 23, 20266 min readopen-source · video downloader · self-hosted · python · yt-dlpRead in:ENID

Reclip: A Self-Hosted Video Downloader Built on yt-dlp in About 150 Lines of Python

Reclip turns yt-dlp's power into a point-and-click downloader for 1,000+ sites. A single Flask file of about 150 lines, one HTML page, and exactly 2 Python dependencies.

A dark laptop with a red-backlit keyboard and blue code glowing on the screen. Photo by Rahul Pandit on Pexels.

Want to download a video from almost any site without signing up for a sketchy converter page? Reclip is an open source, self-hosted downloader with a clean web UI. Paste a link from YouTube, TikTok, Instagram, or 1,000+ other sites, pick MP4 or MP3, and download. The whole thing runs on a Flask backend its author describes as roughly 150 lines of Python, backed by the real workhorse: yt-dlp.

Key Takeaways

What it is: Reclip (averygan/reclip, MIT) is a self-hosted web app that turns yt-dlp's power into a point-and-click video and audio downloader for 1,000+ sites.

How small it is: The backend is a single `app.py` of about 150 lines of Python (its README's own figure), a single `index.html` frontend with no build step, and exactly 2 Python dependencies.

How it works: Paste links, the UI polls a job API while yt-dlp fetches and merges media to MP4 or extracts MP3 via ffmpeg, then serves the file.

Getting started: One Docker command gets it running on port 8899, or run `./reclip.sh` natively after installing yt-dlp and ffmpeg.

Fine print: It is intended for personal use only, so respect copyright and each platform's terms of service.

What Reclip Does

Reclip solves a problem almost everyone has hit: a video you want to keep offline lives behind a platform that does not offer a download button. Its README frames it plainly: "A self-hosted, open-source video and audio downloader with a clean web UI. Paste links from YouTube, TikTok, Instagram, Twitter/X, and 1000+ other sites, download as MP4 or MP3."

Unlike desktop tools or browser extensions, Reclip lives on your own server or laptop as a web page. Open it, paste URLs (it supports bulk pasting and automatically deduplicates repeated links), pick a quality per video, choose MP4 or MP3, and each download becomes a card in the UI that moves through loading, ready, downloading, and done states. A separate endpoint also exposes playlist downloads.

At last check the project had gathered over 10,800 stars on GitHub, which puts it firmly in the "people keep finding this useful" tier of open source tools.

How It Works: A Thin UI Over yt-dlp

The honest core of Reclip is that it does not reinvent downloading. It wraps yt-dlp, the community-maintained video downloader that supports hundreds of sites, in a friendlier interface. Reading the source confirms the architecture:

  1. The browser UI sends pasted URLs to `/api/info`, and the backend shells out to the `yt-dlp` CLI (`-j` flag) to fetch metadata: title, available resolutions, thumbnails.

  2. When you hit download, the server runs yt-dlp in a background thread per job, merging the best video and audio tracks into MP4 (`--merge-output-format mp4`) or extracting audio to MP3 (`-x --audio-format mp3`, which needs ffmpeg).

  3. Each job gets a short ID, and the frontend polls `/api/status/<job_id>` until the file is ready, then downloads it through `/api/file/<job_id>`.

This is a deliberate design choice, not a shortcut: yt-dlp already handles the hard parts (site extractors, format negotiation, throttling), so Reclip's value is the interface, the job tracking, and the self-hosting story. The addROM guide calls this out directly: "ReClip turns the power of yt-dlp into a minimalist, self-hosted web app that automates video and audio downloads from 1000+ sites with almost zero maintenance."

The Codebase: Small on Purpose

Component

What it is

`app.py`

The Flask backend. README says roughly 150 lines of Python; an independent guide puts it at "roughly 140 lines"; the live file currently counts about 170 non-blank lines. Either way, one file, five API endpoints, one job dictionary.

`index.html`

The entire frontend in a single file. Vanilla HTML/CSS/JS, no React, no Vue, no bundler, no build step.

`requirements.txt`

Exactly two lines: `flask` and `yt-dlp`.

`Dockerfile` / `reclip.sh`

Self-hosting paths: a Python 3.12-slim image with ffmpeg and gunicorn, or a native script that checks for python3, yt-dlp, and ffmpeg, builds a virtualenv, and serves on port 8899.

A codebase this small is a feature. There is no framework to update, no dependency tree to audit, and a curious user can read the entire backend in one sitting. That is a big part of why projects like this rack up stars: trust is cheap when the code fits on a few screens.

Getting It Running

Reclip offers two paths, both documented in the README:

Docker (recommended): ```bash docker build -t reclip . docker run -p 8899:8899 reclip ```

Native: ```bash brew install yt-dlp ffmpeg ./reclip.sh ```

Then open `http://localhost:8899`. The script respects a `PORT` environment variable if 8899 is taken. SourceForge's open source video downloader directory lists Reclip alongside the tools in its category and describes it as "a lightweight, self-hosted media downloader that provides a simple web-based interface for downloading videos and audio from a wide range of online platforms."

What It Does Not Do

Honesty matters with downloaders, so here are the boundaries:

  • It is not a website, it is software you host. There is no hosted Reclip service from the author; unofficial lookalike sites exist, but the official project is code you run yourself.

  • It needs a server with yt-dlp and ffmpeg. The pretty UI does not replace those tools, it drives them. No server, no downloads.

  • The "1,000+ sites" figure is inherited. Reclip supports whatever yt-dlp supports; if a site changes its layout and yt-dlp's extractor breaks, Reclip waits on an upstream fix like everyone else.

  • Legality is on you. The README carries a clear disclaimer: "This tool is intended for personal use only. Please respect copyright laws and the terms of service of the platforms you download from." Downloading copyrighted material or violating a site's terms can get accounts banned or worse.

The Takeaway

Reclip is a great example of the open source pattern that keeps winning: take a powerful, intimidating CLI tool, wrap it in the smallest possible friendly interface, and let self-hosters own their stack. About 150 lines of Python, one HTML file, two dependencies, 10,800+ stars. Sometimes the best software is the software that gets out of the way.

Watch the 30-second repo signal for Reclip on repomaniac.com, and if you are new to the idea of open source itself, our What Is Open Source? explainer covers the basics. Read this article in Indonesian.

FAQ

Is Reclip free? Yes. It is MIT-licensed open source, free to use, modify, and self-host. The only costs are your own server and bandwidth.

Which sites does Reclip support? The README claims 1,000+ sites, including YouTube, TikTok, Instagram, and Twitter/X. In practice it supports whatever its engine, yt-dlp, supports, so the list shifts as extractors are updated.

Do I need to install anything besides Reclip? Yes, and this is the part people miss: the backend shells out to the yt-dlp CLI binary and uses ffmpeg for MP4 merging and MP3 extraction. Both are bundled in the Docker image; for native installs, `reclip.sh` checks that they are present.

Is downloading videos legal? It depends on the content and the platform's terms. Reclip's README says it is intended for personal use only and asks users to respect copyright law and platform terms of service.

How is Reclip different from just using yt-dlp? yt-dlp is a command-line tool; Reclip gives it a web UI with paste-and-click downloads, per-video quality pickers, job progress cards, bulk pasting with deduplication, and MP4/MP3 one-click output. Same engine, friendlier steering wheel.

Tags: open-source · video downloader · self-hosted · python · yt-dlp

All posts