Skip to content

fetchly

fetchly Logo fetchly Logo

Self-hosted media downloader for YouTube, TikTok, Instagram & Facebook

GitHub Release Docker Pulls License


What is fetchly?

fetchly is a single-container web application that turns yt-dlp into something you can hand to a browser. Paste a link, preview the media, pick a format, and watch the job run on a live dashboard — no command-line flags, no one-shot invocations.

Beyond downloading, fetchly trims audio on an interactive waveform, detects tempo with two independent beat trackers, and — with an optional Lalal.ai key — separates vocals from instrumentals. Everything runs on your own hardware, against a SQLite database on a volume you control.

Key Features

  • Download Everywhere


    Video or audio from YouTube, TikTok, Instagram, and Facebook, with format and quality picked from menus instead of yt-dlp flags.

    Downloads

  • Live Job Dashboard


    Queued, active, completed, and failed jobs stream to the browser over Server-Sent Events — no polling, no page reloads.

    Job Dashboard

  • Waveform Trimming


    Cut a segment out of a downloaded track visually with wavesurfer.js, then export the trimmed audio without re-downloading.

    Audio Trimming

  • BPM Analysis


    Tempo and beat confidence from a beat_this / Essentia cascade, cached by audio hash and folded into the download filename.

    BPM Analysis

  • Stem Separation


    Connect a Lalal.ai activation key to split vocals and instrumentals from any finished audio job.

    Stem Separation

  • Share Links


    Hand out an unguessable link to a finished download. Recipients need no account, and you can cap how often each link works.

    Share Links

  • Platform Cookies


    Paste a Copy as cURL command from your browser to reach age- or login-gated content, per platform.

    Platform Cookies

  • Hardened by Default


    Optional authentication, CSRF double-submit tokens, invisible anti-bot checks, per-route rate limits, and a non-root container.

    Security Overview

Quick Start

export FETCHLY_SECRET_KEY="$(openssl rand -base64 32)"

docker run --rm \
  -p 8000:8000 \
  -e FETCHLY_SECRET_KEY \
  -v "$PWD/data:/app/data" \
  giiibates/fetchly:latest

First Access

Open http://127.0.0.1:8000. Authentication is off on a fresh install and there is no built-in account — create an admin username and password under Settings → Security to require a login.

Never expose an unauthenticated instance

With authentication off, anyone who can reach the port can queue downloads and read every finished file. Enable authentication before binding to anything other than localhost.

Full Installation Guide Quick Start

Screenshots

Dashboard

Login

Supported Platforms

Platform Video Audio
YouTube
TikTok
Instagram
Facebook

Public URLs work without account cookies. Age- or login-gated content may work after importing a current signed-in session under Settings → Integrations; platforms can still reject stale or revoked sessions.

Why fetchly?

fetchly Plain yt-dlp
Interface Web UI with format menus CLI flags
Job tracking Live dashboard with SSE One-shot command
Audio trimming Interactive waveform Manual ffmpeg
Tempo detection Built-in, cached Not available
Stem separation Lalal.ai integration Not available
Sharing Token links with use limits Copy files yourself
Deployment One Docker image Install and maintain yourself

Built With

Community & Support

License

fetchly is licensed under the GNU Affero General Public License v3.0.


Made with ☕ by Gill-Bates