How to Use ‘Axel’ as Download Accelerator to Speed Up FTP and HTTP Downloads

If you are the kind of person who enjoys downloading and trying out several Linux distributions, we are sure you will welcome with open arms a download accelerator that talks the talk and walks the walk – one that does what its description says.

In this guide we will introduce you to Axel, a lightweight wget clone that was no dependencies (other than gcc and makeutils).

Axel - Linux Commandline Download Accelerator

Axel – Linux Commandline Download Accelerator

Although its description states that it is specially fit for byte-critical systems, axel can be installed anywhere and used not only to download multiple files simultaneously over HTTP/FTP links, but also to speed them up as well.

Installing Axel, a Command Line Download Accelerator for Linux

As we mentioned earlier, axel is not just another download tool. It accelerates HTTP and FTP downloads by using multiple connection to retrieve files from the destination, and can also be configured to use multiple mirrors as well.

If this wasn’t enough to get you motivated to try it out, let’s just add that axel supports automatic aborting and resuming connections that are unresponsive or not returning any data after a given period of time.

In addition, if you have permission to do so, you can leverage axel to open multiple simultaneous FTP connections to a server in order to multiply the allocated bandwidth per connection.

If you are not allowed to do this, or are not sure about it, you can instead open multiple connections to separate servers and download from all of them at the same time.

Last but not least, axel differs from other Linux download accelerators in that it puts all the data in a single file at download time, as opposed to writing data to separate files and joining them at a later stage.

In CentOS/RHEL 7, you will need to enable the EPEL repository in order to install axel:

# yum install epel-release
# yum install axel

In Fedora, it is available from default repositories.

# yum install axel   
# dnf install axel   [On Fedora 23+ releases]

In Debian Jessie and derivatives such as Ubuntu and Linux Mint, you can install axel directly with aptitude:

# aptitude install axel

Once axel is installed, let’s dive in with both feet.

Configuring Axel – Linux Download Accelerator

You can configure axel using /etc/axelrc and pass further desired options in the command line when you invoke it. The configuration file is well documented but we will review the most useful options here:

reconnect_delay is the number of seconds that axel will wait before trying again to start a new connection to the server.

max_speed is self-explanatory. Value is given in bytes per second (B/s). You may want to set this variable to an appropriate value after considering your available bandwidth. This will help you to prevent axel from consuming a great deal of your bandwidth while it’s downloading.

Important: Please note that the actual maximum download rate will depend on your Internet connection – it goes without saying that setting max_speed to 5 MB/s will not do anything if your Internet connection maxes out at 1.22 MB/s (as it was in my case, as you’ll see in the examples below – I just left that value to make the point).

num_connections is the maximum number of connection that axel will attempt to start. The recommended value (4) is enough for most cases, and is given mostly on the grounds of respect for other FTP users. Please note that some servers may not even allow multiple connections.

connection_timeout indicates the number of seconds that axel will wait to receive a response before attempting to abort and resume it automatically.

http_proxy allows you to set a proxy server in case the HTTP_PROXY environment variable has not been set system-wide. This variable uses the same format as HTTP_PROXY (http://:PORT).

no_proxy is a list of local domains, separated by commas, which axel should not try to reach through a proxy. This setting is optional.

buffer_size represents the maximum amount, in bytes, to read from all of the current connections at a time.

verbose lets you choose whether download-related messages will be printed in the screen. Set this to 0 if you want to disable it, or 1 if you want to still see the messages.

interfaces lets you list the network interfaces that have access to the Internet, should you have more than one. If this is not explicitly set, axel will use the first interface in the routing table.

Similar configuration options are available from:

# axel --help

If you look carefully, you will realize that most command-line options resemble those in the configuration file. Additionally, the -o (–output) option allows you to specify an output filename.

If used, it will override the source filename. If you set any of the command-line options, they will override those set in the configuration file.

How to Use Axel Command-line Download Accelerator

We will use the following settings from the configuration file (uncomment the corresponding lines):

reconnect_delay = 20
max_speed = 500000
num_connections = 4
connection_timeout = 30
buffer_size = 10240
verbose = 1
Configuring Axel Download Accelerator

Configuring Axel Download Accelerator

We will now compare the download times from HTTP and FTP links using wget and axel. You can choose any file of any size, but for simplicity, we will download 100 MB files available from:

  1. ftp://speedtest:[email protected]/test100Mb.db
  2. http://speedtest.ftp.otenet.gr/files/test100Mb.db

Compare FTP and Axel Download Times

FTP download with wget (459 KB/s on average):
# wget ftp://speedtest:[email protected]/test100Mb.db
Download Files with FTP in Linux Using Wget

Download Files with FTP in Linux Using Wget

FTP download with axel (1181.43 KB/s on average):
# axel -n 10 --output=axel-test100Mb.db ftp://speedtest:[email protected]/test100Mb.db
Download Files Over FTP Using Axel

Download Files Over FTP Using Axel

Compare HTTP and Axel Download Times

HTTP download with wget (482 KB/s on average):
# wget http://speedtest.ftp.otenet.gr/files/test100Mb.db
Download Files Using HTTP with Wget

Download Files Using HTTP with Wget

HTTP download with axel (1178.93 KB/s on average):
# axel -n 10 --output=axel-test100Mb.db http://speedtest.ftp.otenet.gr/files/test100Mb.db
Download Files Over HTTP Using Axel

Download Files Over HTTP Using Axel

As you can see in the results from the tests we performed above, axel can accelerate a FTP or HTTP download significantly.

Summary

In this article we have explain how to use axel, a FTP / HTTP download accelerator, and showed how it performs faster than other programs such as wget because of it being able to open multiple simultaneous connections to remote servers.

Don’t Miss: 5 Most Popular Download Managers for Your Linux Systems

Don’t Miss: 10 Wget (Linux File Downloader) Command Examples in Linux

We hope that what we have shown here motivates you to try axel. Feel free to let us know if you have any questions or comments about this article using the form below. We always look forward to receiving feedback from our readers.

If You Appreciate What We Do Here On TecMint, You Should Consider:

TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.

If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.

Support Us

We are thankful for your never ending support.

Gabriel Cánepa

Gabriel Cánepa is a GNU/Linux sysadmin and web developer from Villa Mercedes, San Luis, Argentina. He works for a worldwide leading consumer product company and takes great pleasure in using FOSS tools to increase productivity in all areas of his daily work.

Your name can also be listed here. Got a tip? Submit it here to become an TecMint author.

RedHat RHCE and RHCSA Certification Book
Linux Foundation LFCS and LFCE Certification Preparation Guide

You may also like...

12 Responses

  1. https://silasoft.ml/ says:

    Beside all shitty comment over here I want to say Axel is the best Download accelerator ever build I use it over 10 years and never disappointed me.

    I use it do download files “Big fat files” from G Drive and it suck all the Network connection from my VPS server “Yeah it is bad like that” I got comfortably ~20MB/s from G.

    Las Visitors don’t listens to does ignorant commenter above specially “JayC”
    Cheers .

  2. Michael Reiche says:

    It appears that axel will use the http_proxy environment variable, but the no_proxy environment variable is ignored. It does recognize no_proxy in $HOME/.axelrc

  3. I like aria2 https://aria2.github.io/ as a command line downloader.
    It is similar to axel if you can’t find axel in your repos try aria.

    It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink. aria2 can be manipulated via built-in JSON-RPC and XML-RPC interfaces.

    Can you do write up on it as well.

  4. JayC says:

    First: Axel doesn’t work in most of the sites because servers are configured to reject simultaneous download petitions. For instance I bet you publish speed difference trying to download an Ubuntu ISO from the Ubuntu servers. You will see that there is no improvement using Axel.
    Second: Remove the shitty message about the push notifications.
    Third: Remove the shitty pop up to follow you. Just to see the shitty pop up I can grant you I won’t follow you
    Fourth: Remove the add to buy the book.

    • Ravi Saive says:

      @Jay,

      First: I do agree with your point that most of the sites are configured to reject number of simultaneous requests to single site and also speed various in this case..
      Second: If you feel that shitty push notification not useful for you, there is a option for users to unsubscribe for such notifications.
      Third: If you don’t want to follow, just ignore that shitty popup, that’s it as simple as it…
      Fourth: Why? any explanation why you want us to remove the “buy book”?

      Don’t you feel you are requesting so much from us, which is non of your business…

      • JayC says:

        Second: I mean the shitty pop up. Of course I’m not suscribed to push notifications. That’s just shitty stuff.
        Third: Yes Each time I must close the shitty pop up and this makes me annoy. For me to see this pop up is enough reason to do the opposite. So don’t worry I won’t follow you.
        Fourth: Why? I come to here to read an article… and not to read or buy a book.

        Yes I agree. Most of what I say is not my business, so I apologise. However note that for me points 2,3 and 4 are a good reasons to don’t visit your blog anymore. I’m sure I’m not the only one that may have the same opinion.

        • Ravi Saive says:

          @JaC,

          Second: That shitty pop has option “Close” to disable notification, if you would have been chosen ‘Close’ button, that pop up never be shown you again.

          Third: Actually, as Gabriel stated, you won’t read the article carefully, the pop has clear instructions and its upto you to Allow or Close the notification..

          It’s your choice, whether you want to visit or not this blog, and yes there are number of other good blogs, but there too you will find such same popup notifications, ads, buy products, etc…..

    • @JayC,
      Obviously, you did not read the explanation for num_connections, where I explicitly stated that some servers may not allow multiple connections. For the rest of your opinions, I agree with the response Ravi gave you below.

  5. gbx says:

    They’re cheating

    Axel
    Downloaded 100.0 megabytes in 55 seconds. (1832.55 KB/s)
    test100Mb.db.1 100%[===========================================================================>] 100.00M 2.99MB/s en 35s

    • JayC says:

      Of course they are cheating. Servers normally rejects multiple requests…. so normally Axel doesn’t improve anything. Just in few cases you can take advantage of Axel

    • @gbx,
      If you don’t say what you mean by “They’re cheating” we have no way to provide a helpful answer. Please clarify and let us know if you have a specific question, and we will be more than glad to respond.

Got something to say? Join the discussion.

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.