Axel – A Command-Line File Download Accelerator for Linux

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 connections 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 8/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 and derivatives such as Ubuntu and Linux Mint, you can install axel directly with aptitude:

# aptitude install axel

On Arch Linux and related distros such as Manjaro Linux and OpenSUSE Linux, you can install axel directly with:

$ sudo pacman -S axel       [On Arch/Manjaro]
$ sudo zypper install axel  [On OpenSUSE]

Once the 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 connections 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 on 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) an 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 to Download Files Faster in Linux

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 an FTP or HTTP download significantly.

Summary

In this article, we have explained how to use axel, an FTP / HTTP download accelerator, and showed how it performs faster than other programs such as wget because 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.

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.

Each tutorial at TecMint is created by a team of experienced Linux system administrators so that it meets our high-quality standards.

Join the TecMint Weekly Newsletter (More Than 156,129 Linux Enthusiasts Have Subscribed)
Was this article helpful? Please add a comment or buy me a coffee to show your appreciation.

12 thoughts on “Axel – A Command-Line File Download Accelerator for Linux”

  1. 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 .

    Reply
  2. 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

    Reply
  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.

    Reply
  4. 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.

    Reply
    • @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…

      Reply
      • 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.

        Reply
        • @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…..

          Reply
    • @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.

      Reply
  5. 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

    Reply
    • 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

      Reply
    • @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.

      Reply

Leave a Reply to Gabriel A. Cánepa Cancel reply

Thank you for taking the time to share your thoughts with us. We appreciate your decision to leave a comment and value your contribution to the discussion. It's important to note that we moderate all comments in accordance with our comment policy to ensure a respectful and constructive conversation.

Rest assured that your email address will remain private and will not be published or shared with anyone. We prioritize the privacy and security of our users.