Axel - A console based Download Accelerator for Linux

I am a big fan of wget. It provides you with immense capabilities, but when it comes to accelerating the download speed, wget doesn't provide any option. After searching for a decent download accelerator for Linux, I came across axel and it being a console tool is an added bonus.

Download accelerator do nothing special. Instead of downloading a file through a single connection they request for multiple copies of the file, part by part, through multiple http/ftp connections. In simple words, its as if multiple users are connected to the remote server, but downloading different parts of the same file. This makes the whole process immensely faster(note that, the speed will be bounded by the maximum capacity of your connection).

Install Axel on Ubuntu or Fedora

Axel is available in the default repositories of major distros. Run the following command to install it on your system.

[shredder12]$ sudo apt-get install axel #for Ubuntu or Debian based systems

[root]# yum install axel  #for fedora or RedHat based systems

It doesn't provide as many options as wget, but if you just want to download a single file, axel is your best bet.

Please note that, multiple connections and faster speed do sound impressive but most ftp servers have limit on the number of concurrent connections. So, their admins are not a big fans of such tool which just fake multiple users. In such cases, you should go for alternate links. e.g. If you want to download Ubuntu ISO from a server, doesn't matter http/ftp, its always a good idea to choose multiple locations. This way the load will be well distributed among the servers and you'll be happy too.

Download from multiple locations

You can either give it multiple alternative locations to download the files.

[shredder12]$ axel <url1> <url2> <url3>

This will use all these mirrors to download the file.

Limit the download speed

If you want to limit the download speed.

[shredder12]$ axel -s 3000000 <url>

You have to mention the speed in bytes per second.

Limit the number of concurrent connections or threads

This can be done using the -n option.

[shredder12]$ axel -n 3 <url>

Change the name of the output file

The default behavior is to use the downloaded file name as the local name. But if you want to change the output or final name then use the -o option.

[shredder12]$ axel -o output_file.ext <url>

Mentioning a directory will save the file in that directory.

View the download information of each connection or thread

By default, the progress bar will show you the overall progress of the download. In case you are interested in knowing the information of each file, use the -a option to show an alternate progress bar.

[shredder12]$ axel -a n 3 <url>

You can also hardcode some of these options into its configuration file - /etc/axelrc(global) or ~/.axelrc(local). The file /etc/axelrc is well documented and modifying it is pretty easy.

As you can see, Axel is pretty good, but there are still a lot of things I wish would have been supported by it, eg - it doesn't work if ftp requires authentication etc. If only there was acceleration ability in wget :).


Geoff (not verified)
February 9th, 2011 08:34 pm
This seems like a really useful and nifty application! It must be mentioned though, that this only works if the maximum speed of your actual internet connection isn't reached. For example, this generally wouldn't provide any benefit to me on my internet connection at home, which is only 384kbps. However, on the 4mbps connection at work, this could definitely provide a boost in download speeds.
February 9th, 2011 10:25 pm

Thanks Geoff, for pointing it out. I have updated the post.

henry (not verified)
February 10th, 2011 02:11 am
{tried to format it so the commands would stand out clearer, don't seem to be able to do that } I found this from a post about axel a while back. I don't remember where. But this is quite useful as it will accelerate software installation. To do so, enter the following in a terminal sudo add-apt-repository ppa:tldm217/ sudo apt-get update sudo apt-get install apt-fast Using apt-fast To install a single package, make sure your database is up to date apt-fast update  apt-fast install packagename You will notice that the speed of downloading the package has increased. Now To upgrade or dist-upgrade, do the same thing. apt-fast dist-upgrade or apt-fast upgrade.
Chris (not verified)
February 10th, 2011 03:34 pm
Take a look at curl(1) Much more powerful than any of the above.
Geoff Garbers (not verified)
February 10th, 2011 06:12 pm
That's a good point. I forgot about using cURL from the command line. It would do the same thing.
Turgon (not verified)
February 14th, 2011 05:42 am
Not a big deal, but maybe you should mention that it allows for resuming of previous stopped downloads the same way as wget -c. zI had to google it to find it, so why not add it to the article :) And thanks a lot... axel is indeed cool :)
Apoorv Reddy (not verified)
March 6th, 2011 04:52 pm
I've checked out axel -- there seem to be a few drawbacks 1) If the number of redirects from the download links are many, it throws up a message "Too many redirects" . I tried this while downloading the Gnome3 USB- Image Writer with axel. Here's the link : Sitting behind a proxy server makes it even worse i guess. wget handled the above problem easily. 2) Also it doesn't check for certificates, as wget does.

Post new comment

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <img> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <blockquote> <h1> <h2> <h3> <h4> <h5> <h6> <p> <br>
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.
  • Image links with 'rel="lightbox"' in the <a> tag will appear in a Lightbox when clicked on.

More information about formatting options

Type the characters you see in this picture. (verify using audio)
Type the characters you see in the picture above; if you can't read them, submit the form and a new image will be generated. Not case sensitive.