Download videos from almost any website. Lightweight, self-hosted media downloader with a clean web UI.
English | Tiếng Việt
- Downloads from 1000+ sites through yt-dlp
- MP4 and MKV video with a quality picker
- MP3, M4A, Opus, FLAC and WAV audio
- Trimming to a time range
- Subtitles, embedded or as a separate SRT file
- Cover art, metadata and chapters embedded in the file
- A queue with live progress, cancel and a concurrency limit
- Bulk links and playlists
- Cookies for age-restricted or bot-checked videos
- Optional password, rate limiting and private-network blocking
- History, drag and drop, paste anywhere, keyboard shortcuts
- Installable PWA with a share target
- Light and dark themes with seven accent colors
- English and Vietnamese
Download compose.yaml and example.env from the
latest release, then
copy the example settings:
cp example.env .envEdit .env and set OPENMEDIA_PASSWORD to a password of your own. The API
refuses to start while it is still changeme; leave it empty only for a
private local instance. Then start the stack:
docker compose up -dOpen http://localhost:8080.
curl -fsSL https://github.com/ttncode/openmedia/releases/latest/download/install.sh | bashThe installer generates a random password and prints it with the address when it finishes.
git clone https://github.com/ttncode/openmedia.git
cd openmedia
mise install
mise run //apps/api:dev
mise run //apps/web:devOpen http://localhost:3000.
Every config root (apps/api, apps/web, docs) answers the same task
contract: install, format/format-fix, lint, check, test, build,
ci-unit, checklist. Run one root's checks with mise run //apps/api:ci-unit, or mise run checklist from the project root to run
every root, which is exactly what CI runs.
| Path | What lives there |
|---|---|
apps/api |
Flask backend, yt-dlp integration |
apps/web |
Next.js web UI |
docs |
This documentation site |
See CONTRIBUTING.md for the branch and commit conventions.
- ReClip, the project OpenMedia is built on
- yt-dlp
- FFmpeg
- Deno
- Next.js
- Flask
- Phosphor Icons
- The scaffold toolbox this project was generated with
OpenMedia is for personal use. Respect copyright law and the terms of service of the sites you download from.

