TopGit
GitHub Repo Review

aria2: A Multi-Protocol Download Manager

aria2/aria2
ATopGit review image for aria2/aria2
Review by Topgit.dev for aria2/aria2, with GitHub repository stats and README context.
Quick verdict

aria2 is a command-line download manager that pulls a single file from HTTP(S), FTP, SFTP, BitTorrent, and Metalink sources at once, splitting it into segments to use more of your bandwidth. That multi-protocol design is the real selling point, since most CLI downloaders handle one protocol per run. It's worth adopting once you're comfortable driving a tool by flags and RPC instead of a GUI, less so for a one-off download.

Stars
โ˜… 42.6k
Forks
โ‘‚ 3.9k
Contributors
๐Ÿ‘ฅ 74
Language
C++
License
GPL-2.0
Topic
โ€”
Updated
Jun 2026

What is aria2?

aria2 is a lightweight, cross-platform command-line utility for downloading files over HTTP(S), FTP, SFTP, BitTorrent, and Metalink. It can fetch the same file from multiple sources and protocols in parallel, for example pulling a file over HTTP while also seeding it into a BitTorrent swarm. Written in C++ and released under the GPL-2.0 license, it runs as a plain CLI binary or as a background daemon controlled over JSON-RPC or XML-RPC.

Key features of aria2

  • โœ“Downloads a single file across HTTP(S), FTP, SFTP, BitTorrent, and Metalink simultaneously, combining bandwidth from every source.
  • โœ“Segmented downloading splits a file into pieces and fetches them in parallel instead of one linear stream.
  • โœ“Full BitTorrent stack: DHT, PEX, the Fast extension, MSE/PSE encryption, multi-tracker and UDP-tracker support, plus local peer discovery.
  • โœ“Metalink version 3 and version 4 (RFC 5854) support, including Metalink/HTTP (RFC 6249) and automatic chunk-checksum validation.
  • โœ“JSON-RPC over HTTP and WebSocket, plus an XML-RPC interface, for driving aria2 as a daemon from another program.
  • โœ“Loads cookies from Firefox3, Chromium, and Netscape-format cookie files, plus custom HTTP headers and proxy support via the standard *_proxy environment variables.
  • โœ“IPv6 with Happy Eyeballs, a disk cache to cut disk activity, and configurable upload/download speed throttling.
How this repository's GitHub stars have grown over time. Source: star-history.com.View the star history โ†—

When to use aria2

  • โ€ขDownloading a single large file faster by pulling it from several mirrors or protocols at once instead of one HTTP connection.
  • โ€ขRunning unattended downloads on a headless server or NAS, driven as a daemon over JSON-RPC instead of a desktop GUI.
  • โ€ขFetching Metalink packages where chunk checksums need to be verified automatically as the file comes down.
  • โ€ขHandling BitTorrent downloads from the same script or pipeline that also grabs plain HTTP/FTP files, without switching tools.

Installing aria2

The aria2 README documents building from source, not a package-manager install; if your distro ships an aria2 package, that path isn't covered here. To build it yourself: clone the repository with `git clone https://github.com/aria2/aria2.git`, then run `./configure` followed by `make`. You'll need a C++11-capable compiler plus development packages for the features you want: libgnutls-dev (or libssl-dev) for HTTPS, libssh2-1-dev for SFTP, libxml2-dev (or libexpat1-dev) for Metalink, libc-ares-dev for async DNS, and libsqlite3-dev for browser cookie support. After `make`, the binary lands at `src/aria2c`. For a statically linked build, configure with `ARIA2_STATIC=yes`; if you cloned from git rather than a source tarball, you also need autoconf, automake, and libtool, and must run `autoreconf -i` first.

Basic command line usage

The compiled binary is `aria2c`, invoked with a URI, or a text file or stdin full of URIs, plus flags. The README documents individual flags rather than a full walkthrough, but it calls out `-d` for the destination directory, `-o` for the output filename, and `-n` to turn off netrc support. HTTPS certificate handling is a flag too: pass a CA bundle with `--ca-certificate`, or drop verification entirely with `--check-certificate=false` if you don't have one installed. Beyond ad hoc runs, aria2 can run as a background daemon and be driven through its JSON-RPC or XML-RPC interface instead of re-invoking the CLI for every download; the exact daemon/RPC flags aren't clearly documented in the material available here.

Advantages of aria2

  • โœ“Genuinely multi-protocol: one tool covers HTTP(S), FTP, SFTP, BitTorrent, and Metalink instead of stitching wget, curl, and a torrent client together.
  • โœ“Segmented, multi-source downloading can use more of your bandwidth than a single HTTP connection.
  • โœ“JSON-RPC/XML-RPC daemon mode makes it easy to control from another program, not just a terminal.
  • โœ“Metalink chunk-checksum validation catches corrupted data mid-download rather than after the fact.
  • โœ“IPv6 with Happy Eyeballs and a configurable disk cache are built in, not bolted on.

Limitations and drawbacks

  • โ–ณNo official GUI ships with aria2. Everything runs through flags, a config file, or RPC, which is a real learning curve if you've only used browser downloaders.
  • โ–ณPackage-manager installation isn't documented in the README; building from source means installing a C++11 toolchain and the right dependency set for whichever protocols you need.
  • โ–ณThe README caps the maximum number of BitTorrent peers at 55, which can limit swarm throughput compared to a dedicated torrent client tuned for large swarms.
  • โ–ณaria2 doesn't configure port-forwarding automatically; you have to open ports on your router or firewall yourself for BitTorrent to work well.
View on GitHub โ†—Homepage โ†—

Alternatives to aria2

wget โ€” classic single-connection HTTP/FTP downloader; simpler but no multi-source or BitTorrent support.curl โ€” general-purpose data transfer tool for scripting single requests, without aria2's segmented multi-source downloads.Motrix โ€” a GUI download manager built on the aria2 engine, for people who want aria2's protocol coverage without driving it from flags. โ†—

Frequently asked questions

Is aria2 free and open source?

aria2 is free and open source, distributed under the GPL-2.0 license, with its source code hosted on GitHub. You can clone the repository and build it yourself with a C++11 compiler and the usual autoconf/configure/make toolchain.

What protocols does aria2 support?

aria2 supports HTTP(S), FTP, SFTP, BitTorrent, and Metalink, and it can combine several of them for a single download, for example fetching a file over HTTP while also pulling pieces from a BitTorrent swarm.

Can aria2 download files from multiple sources simultaneously?

aria2 can pull the same file from multiple sources and protocols at once, splitting it into segments to use more of the available bandwidth. It can even download over HTTP(S)/FTP/SFTP and BitTorrent for the same file at the same time.

How do I use aria2 as a daemon with RPC interface?

aria2 can run as a background daemon process and be controlled remotely over JSON-RPC, available over both HTTP and WebSocket, or over XML-RPC, instead of driving it through one-off CLI commands. That's what lets other programs queue and monitor aria2 downloads programmatically.

Does aria2 support BitTorrent DHT and peer exchange?

aria2 supports mainline-compatible DHT for trackerless torrents and PEX (peer exchange), alongside the BitTorrent Fast extension, multi-tracker support, and UDP trackers. The DHT routing table is saved to disk so it doesn't rebuild on every restart.

What is the difference between aria2 and wget or curl?

wget and curl each fetch a file over one connection and one protocol per request. aria2 downloads the same file from multiple sources and protocols simultaneously, including BitTorrent and Metalink, which wget and curl don't handle at all.

The problem it solves

Grabbing a large file from a single mirror over one HTTP connection wastes available bandwidth, and if that mirror is slow you're stuck. Juggling wget for HTTP, a separate SFTP client, and a torrent app for BitTorrent means three tools and three command sets for one job. aria2 solves that by letting a single command-line utility pull one file from several protocols and sources at once, including mixing HTTP/FTP/SFTP with BitTorrent on the same download, and by exposing that same capability over RPC so it can be automated instead of driven by hand every time.

Who should try it โ€” and who should skip

Try aria2 if you script downloads, run headless servers, or need one tool that handles HTTP, FTP, SFTP, BitTorrent, and Metalink without switching between wget, curl, and a torrent client, especially if you're comfortable driving it by flags, a config file, or JSON-RPC. Skip it if you just want to click a link and watch a progress bar: there's no bundled GUI, and Motrix or your browser's built-in downloader will get you there with far less setup.

Related repositories

Source & attribution

Based on the aria2 GitHub repository (github.com/aria2/aria2) and its README.

GitHub data ยท last synced Aug 15, 2026Reviewed by Henry
โ† Back to TopGit

Is aria2 worth your time?

ChatGPT, Claude and Perplexity can all read this page. Ask one of them what it makes of aria2.

GitHub