DEV Community

pickuma
pickuma

Posted on • Originally published at pickuma.com

Gopeed Review: A Fast, Scriptable, No-Bloat Download Manager for Developers

Most download managers are either feature-starved utilities that stall on large files, or legacy Java beasts that ship a toolbar and a crypto miner in the same installer. Gopeed sits in neither camp. It is a cross-platform download manager built with Go on the backend and Flutter on the frontend, open-source under GPLv3, with 24,600+ GitHub stars as of early 2026 and an active release cadence — v1.9.3 shipped in March 2026, less than two months after v1.9.0. If you want to understand what it actually offers before committing time to it, this review covers the specifics.

What Gopeed supports and how it handles it

Protocol coverage is the first thing to verify with any download manager. Gopeed handles HTTP/HTTPS, BitTorrent (including DHT, PEX, and magnet links), and ed2k — the last of which was added as a notable addition in v1.9.3. For HTTP downloads, it splits files into segments and fetches them in parallel over multiple connections, which noticeably improves throughput on servers that allow range requests. This is standard segmented downloading, not magic, but it works reliably.

BitTorrent support is full-featured rather than bolted-on. You get selective file downloading within a torrent, bandwidth throttling, and peer management. It is not a replacement for a dedicated client like qBittorrent if you live in the BitTorrent ecosystem — qBittorrent has more tuning knobs per-torrent — but for developers who occasionally pull large dataset torrents or open-source ISO distributions without wanting a separate torrent client running, Gopeed handles it without friction.

Platform coverage is genuinely broad: Windows (including ARM as of v1.9.0), macOS, Linux, Android, iOS, Docker, and QNAP NAS packages. The Docker image runs a headless web interface, which makes Gopeed practical as a self-hosted download service on a home server or VPS. There is also a command-line tool installable via go install for scripted or terminal-only workflows.

The backend communicates with the Flutter UI through platform-appropriate sockets — Unix sockets on Linux and macOS, TCP on Windows, standard HTTP for web deployments. This architecture means the backend can run headlessly while any frontend connects to it, which is what makes the Docker and web-UI modes work.

If you deploy Gopeed via Docker for a home server setup, set explicit PUID/PGID environment variables in your compose file. The entrypoint uses su-exec to drop privileges based on those values — getting them wrong leads to permission errors on the download directory that are annoying to diagnose after the fact.

The extension system and REST API

This is where Gopeed earns its developer-audience reputation. The extension system runs on Goja, a Go-implemented ECMAScript 5.1 engine. That last part matters: extensions are limited to ES5.1, not modern JavaScript. You can work around most of it with a Webpack build step — the official scaffolding uses Webpack — but if you are used to writing ES2022 modules directly, there is friction.

Extensions hook into the download lifecycle and can intercept requests, transform URLs, and add new download sources. The official extension catalog includes integrations for YouTube, Bilibili, GitHub Release assets, GitHub repository batch downloads, Hugging Face datasets, MediaFire, TikTok, Instagram Reels, Pinterest, and Pixiv. An extension store launched in v1.9.2 centralizes discovery. The gopeed-js development kit on GitHub provides TypeScript definitions, a REST client abstraction, and the scaffolding CLI — so extension development is at least structured, even if the ES5.1 runtime is a constraint.

The REST API covers everything you can do in the UI: create tasks, pause, resume, delete, query task status, and configure global settings. Webhooks, added in v1.8.3, let external systems receive push notifications when task states change — useful if you want Gopeed wired into a broader automation pipeline without polling. Post-task script hooks arrived in v1.9.1, allowing you to trigger arbitrary scripts after a download completes, which closes the loop for most automation needs without requiring a separate process watching the download directory.

If you are comparing this to aria2, the distinction is interface and ergonomics rather than raw capability. aria2 is a CLI daemon with a JSON-RPC API that has been stable for years; it is extremely lightweight and has a large ecosystem of frontends. Gopeed gives you a native GUI by default, an extension store, and a more modern codebase, but trades aria2's maturity and CLI-first ergonomics for those features. aria2 also supports FTP, SFTP, and Metalink, which Gopeed does not. If your workflow is entirely scripted and headless, aria2 is arguably simpler; if you want a maintained GUI that also exposes an API, Gopeed is the more practical choice.

Versus JDownloader: JDownloader has deep integration with file-hosting services (Mega, one-click hosts, automated CAPTCHA solving, premium account management) that Gopeed does not attempt. JDownloader is a Java application with a heavyweight UI and a long history of bundled junk in its installer — Gopeed is GPLv3, has no installer extras, and ships native binaries. If you need file-hoster automation, JDownloader still wins that specific category. If you want a clean, scriptable tool for HTTP and BitTorrent, Gopeed is the better fit.

Honest limits

The browser extension is the weakest part of the experience. It supports Chrome, Edge, and Firefox, and the workflow is: install the extension, point it at your running Gopeed instance via IP/port/token, and downloads the extension intercepts get routed to Gopeed instead of the browser's native downloader. In practice, interception is unreliable — users report that downloads frequently stay in the browser rather than being forwarded, the extension loses its connection after a restart and requires manual reconfiguration, and the token setup is not obvious to configure correctly the first time. There is an open issue on the Gopeed GitHub tracker about the Flatpak package shipping an outdated version that causes browser extension incompatibility, which suggests package manager builds may lag behind what the extension expects.

The extension system's ES5.1 ceiling is a real constraint if you are building anything moderately complex. It is workable with a build step, but it adds tooling overhead to what should be a simple scripting layer.

Mobile background downloading works, but with the limitations iOS and Android impose on background processes generally — long downloads on mobile will be interrupted when the OS suspends the app. This is not a Gopeed-specific failure, but worth setting expectations.

The anonymous analytics added in v1.9.0 are opt-out rather than opt-in. The project has not published a detailed breakdown of what is collected. For privacy-sensitive environments, this is worth verifying in the settings before deploying.

Finally, Gopeed does not support FTP, SFTP, Metalink, or premium file-hoster accounts. If any of those are requirements, Gopeed is not the right tool regardless of its other merits.

Should you use it?

Gopeed is well-suited for developers who want a maintained, non-bloated download manager with a usable GUI across all major platforms, the option to run headlessly via Docker with a REST API, and an extension system for adding site-specific download logic. The Go backend is lightweight, the release cadence is fast (roughly monthly), and the codebase is genuinely open-source under GPLv3 with 24,600+ community stars.

Where it falls short: the browser extension is unreliable enough to not treat as a core feature, the extension runtime is limited to ES5.1, and it does not cover FTP or premium file-hoster integrations. If your use case fits within HTTP, BitTorrent, and ed2k — and you want programmatic control through a REST API or webhooks — Gopeed delivers that without the overhead that has historically made download managers unpleasant to use.

The project is hosted at github.com/GopeedLab/gopeed. Installation packages for all platforms are available at the official docs site.


Originally published at pickuma.com. Subscribe to the RSS or follow @pickuma.bsky.social for new reviews.

Top comments (0)