MediaLoader

MediaLoader - YouTube & Instagram Downloader

Cross-platform desktop app written in Go with Fyne UI framework.

Latest release Total downloads Platform

⬇️ Download

No installation, no Python, no setup. One file — download it and double-click.

Download MediaLoader for Windows

The button always gives you the newest version · browse all releases

How to install

  1. Download MediaLoader.exe with the button above (about 350 MB — everything is inside the file).
  2. Move it anywhere you like, for example to your Desktop or Documents folder.
  3. Double-click it. That’s it — there is nothing to install.

[!NOTE] “Windows protected your PC”? The app is not code-signed yet, so Windows SmartScreen warns about it. Click More infoRun anyway. The file is built from the source code in this repository.

The first launch takes a few extra seconds: MediaLoader unpacks its bundled yt-dlp, FFmpeg and Deno into your user cache folder. Later launches are instant.

macOS and Linux: no prebuilt package yet — see Build & Run to compile it yourself.

Features

Previews

📸 Click to view screenshots — download, queue, history, settings, light theme
Download page
Download — automatic platform detection, quality segments, live progress
Download queue
Queue — per-item progress, speed and ETA
History
History — last 50 downloads with a shortcut to their folder
Settings
Settings — theme, bundled runtime status, cookies
Download page with the technical log open
Technical log — collapsible raw yt-dlp output
Empty queue
Empty states — every list explains what goes in it
Light theme
Light theme — switchable in Settings

Install the desktop release

End users should download the installer/package for their OS. The release must ship with its own yt-dlp, FFmpeg, and Deno runtimes; neither Python, pip, nor a system PATH configuration is required.

MediaLoader[.exe]
bin/
  yt-dlp[.exe]
  ffmpeg[.exe]
  ffprobe[.exe]
  deno[.exe]

At launch, MediaLoader verifies these components. If one is missing, it asks the user to reinstall instead of failing during a download.

Development prerequisites

1. Install Go

# Ubuntu/Debian
sudo apt install golang-go

# macOS
brew install go

# Windows: download from https://go.dev/dl/

2. Install Fyne dependencies (Linux only)

sudo apt-get install gcc libgl1-mesa-dev xorg-dev

3. Provide the bundled runtime for local development

Put current platform-specific yt-dlp, ffmpeg, ffprobe, and deno binaries in a directory, then point the app to it:

$env:MEDIA_LOADER_BIN_DIR = "C:\path\to\medialoader-runtime"
go run ./cmd

For release builds, copy this directory as bin/ next to the executable (or to MediaLoader.app/Contents/Resources/bin on macOS). Pin versions and verify SHA-256 checksums in CI before publishing an installer.

YouTube sign-in / “not a bot”

YouTube can temporarily block an IP address or ask for a browser sign-in. Each user must provide their own cookies; do not ship cookies with the app.

  1. Open youtube.com in your own browser, sign in, and complete any CAPTCHA.
  2. Export YouTube cookies in Netscape cookies.txt format. yt-dlp documents Get cookies.txt LOCALLY for Chrome and cookies.txt for Firefox as suitable export extensions.
  3. In MediaLoader, open SettingsSelect cookies.txt and choose the exported file. The selected path is saved in your local app settings and passed to yt-dlp for subsequent downloads.
  4. Re-export the file after signing out, changing password, completing a new CAPTCHA, or when YouTube starts rejecting it.

cookies.txt grants access to your account session. Never commit, upload, or share it; do not send it to support, and do not place it in an installer. The repository ignores common cookie filenames. Advanced users may instead set MEDIA_LOADER_COOKIES to an absolute file path.

The release bundles Deno because modern YouTube extraction needs a JavaScript runtime. It also bundles a current FFmpeg because YouTube often supplies video and audio as separate streams.

Build & Run

# Clone / download the project
cd medialoader

# Download Go dependencies
go mod tidy

# Run directly
go run cmd/main.go

# Build executable
go build -o medialoader cmd/main.go

# Windows build
GOOS=windows GOARCH=amd64 go build -o medialoader.exe cmd/main.go

# Build with no console window (Windows release)
go build -ldflags="-H windowsgui" -o medialoader.exe cmd/main.go

Project Structure

medialoader/
├── cmd/
│   └── main.go                  # Entry point
├── internal/
│   ├── downloader/
│   │   └── downloader.go        # bundled yt-dlp/FFmpeg/Deno wrapper
│   ├── config/
│   │   └── config.go            # User preferences
│   └── ui/
│       ├── app.go               # Window shell, pages and actions
│       ├── theme.go             # Dark/light palettes, sizes, radii
│       └── widgets.go           # Cards, chips, sidebar nav, segments
├── images/                      # README screenshots
├── go.mod
└── README.md

Usage

  1. Paste a YouTube or Instagram URL — the platform is detected automatically
  2. Choose quality (Best / 1080p / 720p / 480p / MP3 for audio only)
  3. Click Download for an immediate download
  4. Or click Add to queue to batch multiple URLs
  5. Output folder: ~/Downloads/MediaLoader/ (configurable)

Instagram Notes

Extending