Download Audio File, choose format OGG MP3
Aria2's Homepage
Metalinker's Homepage


This document is the script for a ``Talk Geek To Me'' podcast episode, and covers a review of the Aria2 Download Manager program.

1  What is it?

Aria2 is this cool command-line download manager I have been using lately that I wanted to tell you about. I’m sure your like “command line download manager, why?” Well, the answer is that people who concentrate on really great functionality may not be good at GUI interface design, but this download manager is really great and I wanted to tell you about it.

Aria2 is developed and maintained by Tatsuhiro Tsujikawa, and is written in C++, it is available on Cygwin for Windows users, Macports for OS X for Mac users, and as a standard installable program in all the major Linuxs and freeBSD. For most of you, it is, as they say, and “apt-get” away. It is available in 26 languages too.

2  What is so great about it?

Besides the multi-platform multi-language support? How about it’s multi-protocol support?

The joke, when making fun of TV ad offerings, is to say “it slices, it dices, it even makes julian fries!” Well, Aria2 does FTP, HTTP, Metalink, and Bittorrent. And just like a TV ad announcer I can say “and that’s not all, if you order now you also get...”

You get fast. I mean I did not know my DSL connection could go that fast fast. I never saw these numbers before, so I just can’t believe it.

How is it achieved? We must first look at the two ways of forming an aria2 request. The one easiest to grok first is multiple files.

With Aria2, you issue a command like “aria2c -Z file1 file2 file3 etc.” Here, “aria2c” well, that is just the command, why the ’c’ on the end, I don’t know. The “-Z” is a switch that says “I’m giving you multiple files here.” Then each of the files is a standard URI, you know, “http:// blah blah blah,” even “http://blah blah blah .torrent” In this example, Aria2 will open up five sessions to the first five files, and ask for data on all 25 of these sessions. So all these different webservers begin sending data to your computer, and this maxes out your pipe to the interweb.

For example, the other day I gave it like ten podcast file uri’s. Now some podcasters use slow webservers, and with podget, which is a podcatcher written in bash (it’s a debian version of bashpodder,) will load each file one at a time, and if a podcast is on a slow server, you wait. Nonsense!

I fed a bunch of links to aria2, and all of a sudden my DSL, and I’m used to thinking 330 kbps is good, is running how wild at 358 kbps, without a falter. ’Hooray speed,’ as they say at the metalinker site. I normally listen to a alternative rock station two counties away over the internet when I am online, and this thing hogged my connection so good it knocked out my internet radio until I was done with my downloads. Oh yeah baby!

Let’s have more fun, and discuss the second great function of aria2, which is called “adaptive split segment downloading, (what a wonderful geeky name for a feature,)” I like to call it either “stradling mirrors,” or “taking advantage of mirrors,” or “abusing mirrors.” Heres the deal, you specify “aria2 url1forafile, url2forafile, url3forafile, etc.” I did this a few days ago for a debian ISO image, and I included a torrent too. Five urls, one of which was a torrent, for the same ISO file. Aria2 went to work on the problem, quickly rejecting one universitie’s mirror as too slow, and opend up connections to the three other mirror websites and the two best seeders that the torrent had to offer, and downloaded the file fast. I did not get that glorious “maxed out” connection, but usually during a file like that I usually see the speed slow down and speed back up several times. That effect I did not get, because when aria2 sees a segment slow down, it favors other servers with more segment requests, until the first one get’s its act together again. And if the last segment comes slow, aria2 will cancel it and get that segment from another server. Sweet!

Give yourself a few points if noticed something else, you can now immediately seed a file off of http or ftp based downloads on bittorrent now with this thing. Imagine you and your buds want to get a torrent seeding fast, you can all put it on a private ftp or http folder, and you and your friends can all download the file from a private webserver, and quickly seed it onto the bittorrent protocol.

There is also every other downloading feature you can imagine, all kinds of resuming options, even proxy options I don’t use.

3  Metalinker support

Now in the last example you may be saying to yourselves, “self, this guy thinks Aunt Sally is going to plug fifteen freaking urls into a command line app.” No, I am not that naive, and this is precisely why aria2 offers full metalinker support.

Metalinker is a xml specification, it is a standard to form a xml file that gives all the details to download a file from multiple locations. There are several metalink clients, but this is the one I can personally reccomend. Metalink files, that is files that end with a “.metalink”, have the work done for you already. That xml files lists all the locations of a file on the web as well as on ftp servers as well as on bittorrent.

Metalink was built for segmented downloader programs, of which aria2 is on of. At the metalink site (,) they brag about their speed records. Cable:800 kbps, Fiber:1.8mbps, fast connection at work:8.9mbps. That is like a cdrom of data in seconds, not minutes. Why connect to 50 bittorrent seeders simultaneously when you can connect to 50 web servers simultaneously?

Metalink files are actively used by such illustrious organizations as Mandriva, Fedora, Ubuntu, Opensuse, and Now “aunt Sally” does not have to become a full fledged geek to enjoy fast downloads!

So I can give you a hearty personal reccomendation for this software!