just effing download a youtube video or something. If that's all you need, just effing use this tool.
  • HTML 49.5%
  • Python 47.5%
  • Dockerfile 3%
Find a file
2026-07-11 18:52:52 -06:00
__pycache__ Add default-on compatibility mode for better resulting file support 2026-07-11 18:52:52 -06:00
templates Add default-on compatibility mode for better resulting file support 2026-07-11 18:52:52 -06:00
.dockerignore init 2026-07-10 11:12:42 -06:00
app.py Add default-on compatibility mode for better resulting file support 2026-07-11 18:52:52 -06:00
Dockerfile init 2026-07-10 11:12:42 -06:00
LICENSE Add LICENSE 2026-07-10 11:57:04 -06:00
README.md Add default-on compatibility mode for better resulting file support 2026-07-11 18:52:52 -06:00
requirements.txt init 2026-07-10 11:12:42 -06:00

just-effing-download

Minimal yt-dlp web UI. Paste URL → download → file auto-downloads to your browser. Runs in Docker.

Run

docker build -t just-effing-download .
docker run -d -p 8080:8080 -v jed-downloads:/app/downloads --name jed just-effing-download

If you don't want this publicly accessible, use some form of reverse proxy authentication, such as Authelia, Authentik, etc.

How it works

  • POST /download {url} → starts a yt-dlp job, returns job_id
  • Client polls /progress/<job_id> for live progress
  • On completion, browser auto-triggers /file/<job_id> download
  • Files stored in /app/downloads/<job_id>/, auto-deleted after 24h
  • yt-dlp auto-upgrades daily at 4am via APScheduler
  • The "recent downloads" list lives in browser memory only — refreshing the page clears it, so users can't see each other's history
  • Job IDs are unguessable UUIDs — others can't fetch your file by guessing
  • Max 4 concurrent downloads
  • Video downloads default to compatibility mode (H.264 video + AAC audio) so they play on iOS and most platforms. An "Advanced" option lets you disable this for slightly higher original quality, but the file may not play everywhere.

Config

No env config. Tweak constants at top of app.py: FILE_TTL_HOURS, MAX_CONCURRENT.

CONTRIBUTING

I already consider this software complete. There are more powerful options out there if you need advanced features. That said I will accept contributions or update according to the following conditions:

  1. Vulnerability or bugs I will fix real issues, or accept contributions that do
  2. Non-breaking improvements The user flow must continue to be as simple as possible. Go to site, enter url, download, done. If you wish to contribute new features, they must not impede this basic workflow. I will also not accept features that add unnecessary maintenance overhead.

This software is, after all, just to effing download some video or audio.

All this said, if you wish to contribute, see devtrev/CONTRIBUTING

LICENSE

Copyright (C) 2026 devtrev

AGPL-3.0 - see LICENSE