Top Related Projects
aria2 is a lightweight multi-protocol & multi-source, cross platform download utility operated in command-line. It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink.
A command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. libcurl offers a myriad of powerful features
Official Transmission BitTorrent client repository
qBittorrent BitTorrent client
Deluge BitTorrent client - Git mirror, PRs only
A feature-rich command-line audio/video downloader
Quick Overview
Axel is a lightweight command-line download accelerator for Linux and Unix-like operating systems. It supports HTTP, HTTPS, FTP, and FTPS protocols, and can use multiple connections to speed up downloads.
Pros
- Significantly faster downloads compared to traditional single-connection methods
- Supports resuming interrupted downloads
- Small footprint and efficient resource usage
- Cross-platform compatibility (Linux, BSD, macOS)
Cons
- Limited GUI options (primarily command-line based)
- May not work well with some servers that limit connections
- Less effective for small files or on slow networks
- Not actively maintained (last major release was in 2020)
Getting Started
To install Axel on Ubuntu or Debian-based systems:
sudo apt-get update
sudo apt-get install axel
To download a file using Axel:
axel -n 4 https://example.com/large-file.zip
This command initiates a download with 4 connections. Adjust the number as needed.
To resume an interrupted download:
axel -c partial-file.zip
For more options and usage information:
man axel
Competitor Comparisons
aria2 is a lightweight multi-protocol & multi-source, cross platform download utility operated in command-line. It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink.
Pros of aria2
- Supports a wider range of protocols (HTTP, HTTPS, FTP, SFTP, BitTorrent, and Metalink)
- Offers more advanced features like RPC interface and multi-source downloads
- Has a larger and more active community, with frequent updates
Cons of aria2
- More complex to set up and use compared to Axel's simpler interface
- Requires more system resources due to its extensive feature set
Code Comparison
Axel (simple usage):
axel -n 4 http://example.com/file.zip
aria2 (equivalent usage):
aria2c -x 4 http://example.com/file.zip
Both tools support multi-threaded downloads, but aria2 offers more advanced options:
aria2c --max-connection-per-server=4 --min-split-size=1M http://example.com/file.zip
This command sets the maximum connections per server and minimum split size for segmented downloading, demonstrating aria2's more granular control over the download process.
A command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. libcurl offers a myriad of powerful features
Pros of curl
- Versatile tool supporting multiple protocols (HTTP, FTP, SMTP, etc.)
- Extensive documentation and wide community support
- Cross-platform compatibility (Windows, macOS, Linux)
Cons of curl
- Slower download speeds compared to Axel for large files
- Lacks built-in download resumption and multi-connection support
- More complex syntax for basic download tasks
Code Comparison
Axel:
axel -n 4 https://example.com/largefile.zip
curl:
curl -O https://example.com/largefile.zip
Axel uses multiple connections by default, while curl requires additional parameters for similar functionality:
curl -O https://example.com/largefile.zip -r 0-1023 -o largefile.zip.part1 &
curl -O https://example.com/largefile.zip -r 1024-2047 -o largefile.zip.part2 &
Axel is designed specifically for accelerating downloads, making it simpler for this task. curl, while more versatile, requires more complex commands to achieve similar download acceleration. However, curl's broader protocol support and extensive features make it a more comprehensive tool for various network operations beyond just downloading files.
Official Transmission BitTorrent client repository
Pros of Transmission
- Full-featured BitTorrent client with a GUI, web interface, and daemon
- Supports more advanced features like RSS feeds, watch directories, and encryption
- Cross-platform support for Windows, macOS, Linux, and more
Cons of Transmission
- Larger codebase and more complex to set up compared to Axel
- May be overkill for simple direct downloads
- Primarily focused on BitTorrent, less optimized for HTTP/FTP downloads
Code Comparison
Axel (HTTP download):
while((size = read(fd, buffer, BUFSIZE)) > 0)
{
if( (i = write(outfd, buffer, size)) < 0 )
{
return( 0 );
}
*bytes_done += i;
}
Transmission (BitTorrent download):
while ((piece = tr_peerMgrGetNextPiece(tor, peer)))
{
tr_peerMsgsRequestPiece(msgs, piece);
n_pieces_requested++;
if (n_pieces_requested >= MAX_CONCURRENT_REQUESTS)
break;
}
The code snippets show that Axel focuses on simple HTTP downloads, while Transmission handles more complex BitTorrent piece management.
qBittorrent BitTorrent client
Pros of qBittorrent
- Full-featured BitTorrent client with a graphical user interface
- Supports magnet links and torrent files
- Includes built-in search engine for torrents
Cons of qBittorrent
- Larger and more complex codebase
- Requires more system resources
- Not focused on direct HTTP/FTP downloads
Code Comparison
qBittorrent (C++):
void TorrentHandle::addTrackers(const QVector<TrackerEntry> &trackers)
{
if (trackers.isEmpty()) return;
const libtorrent::torrent_handle nativeHandle = m_nativeHandle;
for (const TrackerEntry &tracker : trackers)
nativeHandle.add_tracker(tracker.nativeEntry());
}
Axel (C):
void add_url(char *url)
{
conn_t *conn;
conn = malloc(sizeof(conn_t));
memset(conn, 0, sizeof(conn_t));
conn->conf = conf;
conn->url = url;
list_add(&conn->list, &conf->conn_list);
}
The code snippets demonstrate the different focus of each project. qBittorrent deals with torrent-specific functionality, while Axel handles direct URL downloads. qBittorrent uses C++ with object-oriented design, whereas Axel uses C with a more procedural approach.
Deluge BitTorrent client - Git mirror, PRs only
Pros of Deluge
- Full-featured BitTorrent client with a robust GUI and web interface
- Supports plugins for extended functionality
- Cross-platform compatibility (Windows, macOS, Linux)
Cons of Deluge
- More complex setup and configuration compared to Axel
- Larger resource footprint due to its comprehensive feature set
- Primarily focused on BitTorrent, less versatile for general downloads
Code Comparison
Axel (C):
void add_url(char *url)
{
conn_t *conn;
conn = malloc(sizeof(conn_t));
memset(conn, 0, sizeof(conn_t));
conn->conf = conf;
conn->url = url;
list_add(&conn->list, &conf->conn_list);
}
Deluge (Python):
def add_torrent_url(self, url, options=None, headers=None):
"""Add a torrent from a URL."""
if not options:
options = {}
if not headers:
headers = {}
return self.core.add_torrent_url(url, options, headers)
While both projects handle downloads, Axel is a lightweight command-line download accelerator written in C, focusing on HTTP/FTP downloads. Deluge is a feature-rich BitTorrent client written in Python, offering a GUI and extensive torrent management capabilities. Axel is more suitable for simple, direct downloads, while Deluge excels in BitTorrent-based file sharing and management.
A feature-rich command-line audio/video downloader
Pros of yt-dlp
- Specialized for video downloading from various platforms
- Supports a wide range of websites and formats
- Actively maintained with frequent updates
Cons of yt-dlp
- More complex to use for general file downloads
- Larger codebase and dependencies
- Slower for simple HTTP downloads
Code Comparison
yt-dlp (Python):
ydl_opts = {'format': 'bestaudio/best'}
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
ydl.download(['https://www.youtube.com/watch?v=dQw4w9WgXcQ'])
axel (C):
axel_t *axel = axel_new(conf, argc, argv);
if (axel)
axel_start(axel);
axel_delete(axel);
yt-dlp is designed specifically for video downloading from various platforms, offering extensive support for different websites and formats. It's actively maintained and frequently updated. However, it can be more complex to use for general file downloads and has a larger codebase with more dependencies. axel, on the other hand, is a lightweight download accelerator focused on HTTP/FTP protocols, making it faster and simpler for basic downloads but lacking the specialized features for video platforms that yt-dlp provides.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
AXEL - Lightweight CLI download accelerator
About
Axel tries to accelerate the download process by using multiple connections per file, and can also balance the load between different servers.
Axel tries to be as light as possible, so it might be useful on byte-critical systems.
Axel supports HTTP, HTTPS, FTP and FTPS protocols.
Thanks to the original developer of Axel, Wilmer van der Gaast, and everyone else who has contributed to it over the years.
Usage
For usage information, see the manual page:
man axel
How to help
If you can code and are interested in improving Axel, please read the CONTRIBUTING.md file; if you're looking for ideas check our open tickets.
Additionally, there is a
google group to
discuss and to coordinate development. You can also find other developers in the
#axel
channel on Freenode.
The sustainability of the project mainly depends on developers dedicating time, so if you want to contribute but can't code, there's also the option to fund paid development time through:
- Ismael Luceno
Installing from binaries
Your operating system may contain a precompiled version of Axel, and if so you should probably use it. If the package is outdated please get in touch with the package maintainer or open a support ticket with your distro.
Building from source
WARNING: Building from the source code repository is recommended only when doing development, otherwise only use release tarballs.
Axel uses GNU autotools for it's buildsystem; instructions are provided in the INSTALL file. The basic actions for most users are:
./configure && make && make install
To build without SSL/TLS support, pass to configure
the --without-ssl
flag.
If you're working from the source code repository instead of a release tarball, you need to generate the buildsystem first with:
autoreconf -i
When working from a git repository the build system will detect that and will
add -Werror to the CFLAGS if supported; so if you're not doing development you
should probably consider passing --disable-Werror
to configure
in order to
prevent build failures due to mere warnings.
Dependencies
gettext
(orgettext-tiny
)pkg-config
Optional:
libssl
(OpenSSL, LibreSSL or compatible) -- for SSL/TLS support.
Extra dependencies for building from snapshots
autoconf-archive
autoconf
automake
autopoint
txt2man
Packages on Debian-based systems
build-essential
autoconf
autoconf-archive
automake
autopoint
gettext
libssl-dev
pkg-config
txt2man
Packages on Mac OS X (Homebrew)
autoconf-archive
automake
gettext
openssl
Building on Mac OS X (Homebrew)
You'll need to provide some extra options to autotools so it can find gettext and openssl.
GETTEXT=/usr/local/opt/gettext
OPENSSL=/usr/local/opt/openssl
PATH="$GETTEXT/bin:$PATH"
[ -x configure ] || autoreconf -fiv -I$GETTEXT/share/aclocal/
CFLAGS="-I$GETTEXT/include -I$OPENSSL/include" \
LDFLAGS=-L$GETTEXT/lib ./configure
You can just run make
as usual after these steps.
Related projects
License
Axel is licensed under GPL-2+ with the OpenSSL exception.
Top Related Projects
aria2 is a lightweight multi-protocol & multi-source, cross platform download utility operated in command-line. It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink.
A command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. libcurl offers a myriad of powerful features
Official Transmission BitTorrent client repository
qBittorrent BitTorrent client
Deluge BitTorrent client - Git mirror, PRs only
A feature-rich command-line audio/video downloader
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot