aria2 is a lightweight multi-protocol & multi-source, cross platform download utility operated in command-line.


aria2 - The ultra fast download utility


This program comes with no warranty. You must use this program at your own risk.


aria2 is a utility for downloading files. The supported protocols are HTTP(S), FTP, SFTP, BitTorrent, and Metalink. aria2 can download a file from multiple sources/protocols and tries to utilize your maximum download bandwidth. It supports downloading a file from HTTP(S)/FTP/SFTP and BitTorrent at the same time, while the data downloaded from HTTP(S)/FTP/SFTP is uploaded to the BitTorrent swarm. Using Metalink's chunk checksums, aria2 automatically validates chunks of data while downloading a file like BitTorrent.

The project page is located at

See aria2 Online Manual (Russian translation, Portuguese translation) to learn how to use aria2.


Here is a list of features:

  • Command-line interface
  • Download files through HTTP(S)/FTP/SFTP/BitTorrent
  • Segmented downloading
  • Metalink version 4 (RFC 5854) support(HTTP/FTP/SFTP/BitTorrent)
  • Metalink version 3.0 support(HTTP/FTP/SFTP/BitTorrent)
  • Metalink/HTTP (RFC 6249) support
  • HTTP/1.1 implementation
  • HTTP Proxy support
  • HTTP BASIC authentication support
  • HTTP Proxy authentication support
  • Well-known environment variables for proxy: http_proxy, https_proxy, ftp_proxy, all_proxy and no_proxy
  • HTTP gzip, deflate content encoding support
  • Verify peer using given trusted CA certificate in HTTPS
  • Client certificate authentication in HTTPS
  • Chunked transfer encoding support
  • Load Cookies from file using the Firefox3 format, Chromium/Google Chrome and the Mozilla/Firefox (1.x/2.x)/Netscape format.
  • Save Cookies in the Mozilla/Firefox (1.x/2.x)/Netscape format.
  • Custom HTTP Header support
  • Persistent Connections support
  • FTP/SFTP through HTTP Proxy
  • Download/Upload speed throttling
  • BitTorrent extensions: Fast extension, DHT, PEX, MSE/PSE, Multi-Tracker, UDP tracker
  • BitTorrent WEB-Seeding. aria2 requests chunks more than piece size to reduce the request overhead. It also supports pipelined requests with piece size.
  • BitTorrent Local Peer Discovery
  • Rename/change the directory structure of BitTorrent downloads completely
  • JSON-RPC (over HTTP and WebSocket)/XML-RPC interface
  • Run as a daemon process
  • Selective download in multi-file torrent/Metalink
  • Chunk checksum validation in Metalink
  • Can disable segmented downloading in Metalink
  • Netrc support
  • Configuration file support
  • Download URIs found in a text file or stdin and the destination directory and output file name can be specified optionally
  • Parameterized URI support
  • IPv6 support with Happy Eyeballs
  • Disk cache to reduce disk activity

Versioning and release schedule

We use 3 numbers for aria2 version: MAJOR.MINOR.PATCH. We will ship MINOR update on 15th of every month. We may skip a release if we have no changes since the last release. The feature and documentation freeze happens 10 days before the release day (5th day of the month) for translation teams. We will raise an issue about the upcoming release around that day.

We may release PATCH releases between regular releases if we have security issues.

MAJOR version will stay at 1 for the time being.

How to get source code

We maintain the source code at Github:

To get the latest source code, run following command:

$ git clone

This will create aria2 directory in your current directory and source files are stored there.


features dependency
HTTPS OSX or GnuTLS or OpenSSL or Windows
SFTP libssh2
BitTorrent None. Optional: libnettle+libgmp or libgcrypt or OpenSSL (see note)
Metalink libxml2 or Expat.
Checksum None. Optional: OSX or libnettle or libgcrypt or OpenSSL or Windows (see note)
gzip, deflate in HTTP zlib
Async DNS C-Ares
Firefox3/Chromium cookie libsqlite3
XML-RPC libxml2 or Expat.
JSON-RPC over WebSocket libnettle or libgcrypt or OpenSSL


libxml2 has precedence over Expat if both libraries are installed. If you prefer Expat, run configure with --without-libxml2.


On Apple OSX the OS-level SSL/TLS support will be preferred. Hence neither GnuTLS nor OpenSSL are required on that platform. If you'd like to disable this behavior, run configure with --without-appletls.

GnuTLS has precedence over OpenSSL if both libraries are installed. If you prefer OpenSSL, run configure with --without-gnutls --with-openssl.

On Windows there is SSL implementation available that is based on the native Windows SSL capabilities (Schannel) and it will be preferred. Hence neither GnuTLS nor OpenSSL are required on that platform. If you'd like to disable this behavior, run configure with --without-wintls.


On Apple OSX the OS-level checksum support will be preferred, unless aria2 is configured with --without-appletls.

libnettle has precedence over libgcrypt if both libraries are installed. If you prefer libgcrypt, run configure with --without-libnettle --with-libgcrypt. If OpenSSL is selected over GnuTLS, neither libnettle nor libgcrypt will be used.

If none of the optional dependencies are installed, an internal implementation that only supports md5 and sha1 will be used.

On Windows there is SSL implementation available that is based on the native Windows capabilities and it will be preferred, unless aria2 is configured with --without-wintls.

A user can have one of the following configurations for SSL and crypto libraries:

  • OpenSSL
  • GnuTLS + libgcrypt
  • GnuTLS + libnettle
  • Apple TLS (OSX only)
  • Windows TLS (Windows only)

You can disable BitTorrent and Metalink support by providing --disable-bittorrent and --disable-metalink to the configure script respectively.

In order to enable async DNS support, you need c-ares.

How to build

aria2 is primarily written in C++. Initially it was written based on C++98/C++03 standard features. We are now migrating aria2 to C++11 standard. The current source code requires C++11 aware compiler. For well-known compilers, such as g++ and clang, the -std=c++11 or -std=c++0x flag must be supported.

In order to build aria2 from the source package, you need following development packages (package name may vary depending on the distribution you use):

  • libgnutls-dev (Required for HTTPS, BitTorrent, Checksum support)
  • nettle-dev (Required for BitTorrent, Checksum support)
  • libgmp-dev (Required for BitTorrent)
  • libssh2-1-dev (Required for SFTP support)
  • libc-ares-dev (Required for async DNS support)
  • libxml2-dev (Required for Metalink support)
  • zlib1g-dev (Required for gzip, deflate decoding support in HTTP)
  • libsqlite3-dev (Required for Firefox3/Chromium cookie support)
  • pkg-config (Required to detect installed libraries)

You can use libgcrypt-dev instead of nettle-dev and libgmp-dev:

  • libgpg-error-dev (Required for BitTorrent, Checksum support)
  • libgcrypt-dev (Required for BitTorrent, Checksum support)

You can use libssl-dev instead of libgnutls-dev, nettle-dev, libgmp-dev, libgpg-error-dev and libgcrypt-dev:

  • libssl-dev (Required for HTTPS, BitTorrent, Checksum support)

You can use libexpat1-dev instead of libxml2-dev:

  • libexpat1-dev (Required for Metalink support)

On Fedora you need the following packages: gcc, gcc-c++, kernel-devel, libgcrypt-devel, libxml2-devel, openssl-devel, gettext-devel, cppunit

If you downloaded source code from git repository, you have to install following packages to get autoconf macros:

  • libxml2-dev
  • libcppunit-dev
  • autoconf
  • automake
  • autotools-dev
  • autopoint
  • libtool

And run following command to generate configure script and other files necessary to build the program:

$ autoreconf -i

Also you need Sphinx to build man page.

If you are building aria2 for Mac OS X, take a look at the GNU Make makefile.

The quickest way to build aria2 is first run configure script:

$ ./configure

To build statically linked aria2, use ARIA2_STATIC=yes command-line option:

$ ./configure ARIA2_STATIC=yes

After configuration is done, run make to compile the program:

$ make

See Cross-compiling Windows binary to create a Windows binary. See Cross-compiling Android binary to create an Android binary.

The configure script checks available libraries and enables as many features as possible except for experimental features not enabled by default.

Since 1.1.0, aria2 checks the certificate of HTTPS servers by default. If you build with OpenSSL or the recent version of GnuTLS which has gnutls_certificate_set_x509_system_trust() function and the library is properly configured to locate the system-wide CA certificates store, aria2 will automatically load those certificates at the startup. If it is not the case, I recommend to supply the path to the CA bundle file. For example, in Debian the path to CA bundle file is '/etc/ssl/certs/ca-certificates.crt' (in ca-certificates package). This may vary depending on your distribution. You can give it to configure script using --with-ca-bundle option:

$ ./configure --with-ca-bundle='/etc/ssl/certs/ca-certificates.crt'
$ make

Without --with-ca-bundle option, you will encounter the error when accessing HTTPS servers because the certificate cannot be verified without CA bundle. In such case, you can specify the CA bundle file using aria2's --ca-certificate option. If you don't have CA bundle file installed, then the last resort is disable the certificate validation using --check-certificate=false.

Using the native OSX (AppleTLS) and/or Windows (WinTLS) implementation will automatically use the system certificate store, so --with-ca-bundle is not necessary and will be ignored when using these implementations.

By default, the bash_completion file named aria2c is installed to the directory $prefix/share/doc/aria2/bash_completion. To change the install directory of the file, use --with-bashcompletiondir option.

After a make the executable is located at src/aria2c.

aria2 uses CppUnit for automated unit testing. To run the unit test:

$ make check

Cross-compiling Windows binary

In this section, we describe how to build a Windows binary using a mingw-w64 ( cross-compiler on Debian Linux. The MinGW ( may not be able to build aria2.

The easiest way to build Windows binary is use Dockerfile.mingw. See Dockerfile.mingw how to build binary. If you cannot use Dockerfile, then continue to read following paragraphs.

Basically, after compiling and installing depended libraries, you can do cross-compile just passing appropriate --host option and specifying CPPFLAGS, LDFLAGS and PKG_CONFIG_LIBDIR variables to configure. For convenience and lowering our own development cost, we provide easier way to configure the build settings.

mingw-config script is a configure script wrapper for mingw-w64. We use it to create official Windows build. This script assumes following libraries have been built for cross-compile:

  • c-ares
  • expat
  • sqlite3
  • zlib
  • libssh2
  • cppunit

Some environment variables can be adjusted to change build settings:

cross-compile to build programs to run on HOST. It defaults to i686-w64-mingw32. To build 64bit binary, specify x86_64-w64-mingw32.
Prefix to the directory where dependent libraries are installed. It defaults to /usr/local/$HOST. -I$PREFIX/include will be added to CPPFLAGS. -L$PREFIX/lib will be added to LDFLAGS. $PREFIX/lib/pkgconfig will be set to PKG_CONFIG_LIBDIR.

For example, to build 64bit binary do this:

$ HOST=x86_64-w64-mingw32 ./mingw-config

If you want libaria2 dll with --enable-libaria2, then don't use ARIA2_STATIC=yes and prepare the DLL version of external libraries.

Cross-compiling Android binary

In this section, we describe how to build Android binary using Android NDK cross-compiler on Debian Linux.

At the time of this writing, Android NDK r21e should compile aria2 without errors.

android-config script is a configure script wrapper for Android build. We use it to create official Android build. This script assumes the following libraries have been built for cross-compile:

  • c-ares
  • openssl
  • expat
  • zlib
  • libssh2

When building the above libraries, make sure that disable shared library and enable only static library. We are going to link those libraries statically.

android-config assumes that $ANDROID_HOME and $NDK environment variables are defined.

We currently use Android NDK r21e. $NDK should point to the directory to Anroid NDK. The build tools will be found under $NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/.

All the dependent libraries must be installed under $ANDROID_HOME/usr/local.

After android-config, run make to compile sources.

Building documentation

Sphinx is used to build the documentation. aria2 man pages will be build when you run make if they are not up-to-date. You can also build HTML version of aria2 man page by make html. The HTML version manual is also available at online (Russian translation, Portuguese translation).


About file names

The file name of the downloaded file is determined as follows:

single-file mode
If "name" key is present in .torrent file, file name is the value of "name" key. Otherwise, file name is the base name of .torrent file appended by ".file". For example, .torrent file is "test.torrent", then file name is "test.torrent.file". The directory to store the downloaded file can be specified by -d option.
multi-file mode
The complete directory/file structure mentioned in .torrent file is created. The directory to store the top directory of downloaded files can be specified by -d option.

Before download starts, a complete directory structure is created if needed. By default, aria2 opens at most 100 files mentioned in .torrent file, and directly writes to and reads from these files. The number of files to open simultaneously can be controlled by --bt-max-open-files option.


aria2 supports mainline compatible DHT. By default, the routing table for IPv4 DHT is saved to $XDG_CACHE_HOME/aria2/dht.dat and the routing table for IPv6 DHT is saved to $XDG_CACHE_HOME/aria2/dht6.dat unless files exist at $HOME/.aria2/dht.dat or $HOME/.aria2/dht6.dat. aria2 uses same port number to listen on for both IPv4 and IPv6 DHT.

UDP tracker

UDP tracker support is enabled when IPv4 DHT is enabled. The port number of UDP tracker is shared with DHT. Use --dht-listen-port option to change the port number.

Other things should be noted

  • -o option is used to change the file name of .torrent file itself, not a file name of a file in .torrent file. For this purpose, use --index-out option instead.
  • The port numbers that aria2 uses by default are 6881-6999 for TCP and UDP.
  • aria2 doesn't configure port-forwarding automatically. Please configure your router or firewall manually.
  • The maximum number of peers is 55. This limit may be exceeded when download rate is low. This download rate can be adjusted using --bt-request-peer-speed-limit option.
  • As of release 0.10.0, aria2 stops sending request message after selective download completes.


The current implementation supports HTTP(S)/FTP/SFTP/BitTorrent. The other P2P protocols are ignored. Both Metalink4 (RFC 5854) and Metalink version 3.0 documents are supported.

For checksum verification, md5, sha-1, sha-224, sha-256, sha-384 and sha-512 are supported. If multiple hash algorithms are provided, aria2 uses stronger one. If whole file checksum verification fails, aria2 doesn't retry the download and just exits with non-zero return code.

The supported user preferences are version, language, location, protocol and os.

If chunk checksums are provided in Metalink file, aria2 automatically validates chunks of data during download. This behavior can be turned off by a command-line option.

If signature is included in a Metalink file, aria2 saves it as a file after the completion of the download. The file name is download file name + ".sig". If same file already exists, the signature file is not saved.

In Metalink4, multi-file torrent could appear in metalink:metaurl element. Since aria2 cannot download 2 same torrents at the same time, aria2 groups files in metalink:file element which has same BitTorrent metaurl and downloads them from a single BitTorrent swarm. This is basically multi-file torrent download with file selection, so the adjacent files which is not in Metalink document but shares same piece with selected file are also created.

If relative URI is specified in metalink:url or metalink:metaurl element, aria2 uses the URI of Metalink file as base URI to resolve the relative URI. If relative URI is found in Metalink file which is read from local disk, aria2 uses the value of --metalink-base-uri option as base URI. If this option is not specified, the relative URI will be ignored.


The current implementation only uses rel=duplicate links only. aria2 understands Digest header fields and check whether it matches the digest value from other sources. If it differs, drop connection. aria2 also uses this digest value to perform checksum verification after download finished. aria2 recognizes geo value. To tell aria2 which location you prefer, you can use --metalink-location option.


netrc support is enabled by default for HTTP(S)/FTP/SFTP. To disable netrc support, specify -n command-line option. Your .netrc file should have correct permissions(600).


The WebSocket server embedded in aria2 implements the specification defined in RFC 6455. The supported protocol version is 13.


The libaria2 is a C++ library which offers aria2 functionality to the client code. Currently, libaria2 is not built by default. To enable libaria2, use --enable-libaria2 configure option. By default, only the shared library is built. To build static library, use --enable-static configure option as well. See libaria2 documentation to know how to use API.


  • Seed Ratio Problem

    Seed Ratio Problem

    If I set in torrent seed mode the torrent rating to 1.0 in the other side the downloader receive only 99.9% and the aria is disconnect the connection from tracker.

    opened by motypas 28
  • NOT safe using JSON-RPC with HTTP GET

    NOT safe using JSON-RPC with HTTP GET

    It's not safe with JSON-RPC using HTTP GET, even if use --rpc-passwd.

    1. aria2c --enable-rpc --rpc-user=username --rpc-passwd=password
    2. Login with some webui using HTTP GET like this. @ziahamza
    3. Now everyone can make a RPC using http://localhost:6800/jsonrpc without password. (make XSS like this )

    Browser will keep basic authentication status with remote host using http GET. It would be stolen to download evil /etc/resove.conf or /root/.bash_profile to user.

    opened by binux 27
  • GnuTLS 3.1.18/3.2.4 cannot connect to

    GnuTLS 3.1.18/3.2.4 cannot connect to

    Well, actually it can, but it cannot when used by aria2 (see #177) Other SSL libraries (OpenSSL, AppleTLS, WinTLS, and nss in Firefox) can connect just fine. gnutls-cli can connect just fine as well.

    3.1.10 and earlier (which translates to 3.2.0 IIRC) cannot connect due to a bug, so that is expected. However, later versions should be able to connect.

    opened by nmaier 27
  • AppleTLS: Implement native TLS support on OSX

    AppleTLS: Implement native TLS support on OSX

    As mentioned in issue #56, by @antbryan and others, OSX provides platform SSL/TLS support. I took the opportunity to implement just that in aria2. As AppleTLS uses the KeyChain, it will also automatically use the root CAs stored there, so no more worries about ca-bundle, like the stuff @zhuangya encountered. Besides that, I also implemented message digests via OSX platform support.

    This stuff is still somewhat experimental. It should be default secure, but I'm not an expert :p Maybe mark it experimental for now and require explicitly configuring with --with-appletls?

    Also, the configure stuff still is somewhat crappy. As I didn't implement the RC4/DH stuff, it still needs gcrypt/nettle/gmp/openssl. But openssl is disabled when appletls is enabled, so one less option. Not sure about that...

    IIRC this stuff should build and work in OSX 10.4 and later.

    Feel free to comment, but please do not merge before I had a chance to test more compiler configs and SSL scenarios

    opened by nmaier 26
  • coredump on SmartOS

    coredump on SmartOS

    I'm able to compile and run on SmartOS, but aria2c core dumps during any activity on the RPC socket. Here's a core stack:

    fffffd7fffdfefe0 0x32d8dd() fffffd7fffdff160 fffffd7fffdff180 fffffd7fffdff210 _ZN5aria219HttpHeaderProcessor5parseEPKhm+0x5b1() fffffd7fffdff2f0 _ZN5aria210HttpServer14receiveRequestEv+0x6c() fffffd7fffdff490 _ZN5aria217HttpServerCommand7executeEv+0x144() fffffd7fffdff4d0 _ZN5aria212_GLOBAL__N_114executeCommandERSt5dequeIPNS_7CommandESaIS3_EENS2_6STATUSE+0x6f() fffffd7fffdff510 _ZN5aria214DownloadEngine3runEb+0xa1() fffffd7fffdff550 _ZN5aria219MultiUrlRequestInfo7executeEv+0x43() fffffd7fffdff5b0 _ZN5aria24mainEiPPc+0x4f() fffffd7fffdff600 main+0x2c() fffffd7fffdff610 _start+0x6c()

    opened by jjlawren 25
  • aria2-1.32.0-osx-darwin.tar.bz2 = Segmentation fault: 11

    aria2-1.32.0-osx-darwin.tar.bz2 = Segmentation fault: 11


    i extract and run the binary aria2c from bien folder, but when i run i get the error : Segmentation fault: 11

    ./aria2c "" --console-log-level=debug
    06/27 00:49:47 [INFO] <<--- --- --- ---
    06/27 00:49:47 [INFO]   --- --- --- ---
    06/27 00:49:47 [INFO]   --- --- --- --->>
    06/27 00:49:47 [INFO] aria2 1.32.0
    06/27 00:49:47 [INFO] Apple LLVM 8.1.0 (clang-802.0.42)
      built by   x86_64-apple-darwin16.6.0
      on         Jun 15 2017 14:41:20
    06/27 00:49:47 [INFO] Darwin 15.0.0 Darwin Kernel Version 15.0.0: Wed Aug 26 16:57:32 PDT 2015; root:xnu-3247.1.106~1/RELEASE_X86_64 x86_64
    06/27 00:49:47 [INFO] zlib/1.2.11 expat/2.2.0 sqlite3/3.19.3 AppleTLS GMP/6.1.2 c-ares/1.12.0 libssh2/1.8.0
    06/27 00:49:47 [INFO] Logging started.
    06/27 00:49:47 [DEBUG] Set rlimit NO_FILE from 256 to 1024
    06/27 00:49:47 [INFO] Checking configured addresses
    06/27 00:49:47 [INFO] Not considered: ::1
    06/27 00:49:47 [INFO] Not considered:
    06/27 00:49:47 [INFO] Not considered: fe80::1%lo0
    06/27 00:49:47 [INFO] Not considered: fe80::20c:29ff:feb4:eb22%en0
    06/27 00:49:47 [INFO] Found configured address:
    06/27 00:49:47 [INFO] IPv4 configured=1, IPv6 configured=0
    06/27 00:49:47 [NOTICE] Downloading 1 item(s)
    06/27 00:49:47 [DEBUG] 1 RequestGroup(s) added.
    06/27 00:49:47 [DEBUG] CUID#7 - socket: read:0, write:0, hup:0, err:0
    06/27 00:49:47 [DEBUG] Selected from normCands
    06/27 00:49:47 [DEBUG] FeedbackURISelector selected
    06/27 00:49:47 [DEBUG] CUID#7 - socket: read:0, write:0, hup:0, err:0
    Segmentation fault: 11
    opened by devildant 21
  • optimize-concurrent-downloads


    Hi Tatsuhiro, as anticipated here the proposed update to support dynamic tuning/management of the number of concurrent downloads as a function of the download bandwidth observed. Still a few bits to complete in the option handling in particular but i would need there your advice. thanks for looking at it

    opened by oliviercommelarbre 21
  • Torrents added with

    Torrents added with "waiting" status

    Situation: I've downloaded 10 torrents. They are completed and now seeding. When i add new torrent - it stucks in state "waiting".

    In config i've


    When i restart aria2 - all torrents in "waiting" state starts downloading.

    in what cases torrent can be in "waiting" status?

    opened by amirotin 21
  • Should we get away from

    Should we get away from

    With the recent bad news, loses its credibility from OSS community. I heard that curl project now completely transitioned into github. Should we also consider this kind of move? recently removes many functionality, including trac and its wiki, so we actually not depend on the unique feature of Perhaps, mirror system may be useful, but its file management UI is horrible, and slow.

    opened by tatsuhiro-t 20
  • Peer refreshing

    Peer refreshing


    I found that long running torrents are getting a major drop off speed after, say 10 hours. I'm left with two connections and achieving a low speed. If I pause the job and instantly get it running again, it quickly finds another 44 connections and maxes out my connection (torrent is healthy). Is there an option for updating the tracker in intervals? How can I maintain the speed and accept new connections?

    opened by farnoy 20
  • Segmentation fault using HTTPS on OS X 10.7

    Segmentation fault using HTTPS on OS X 10.7

    I'm getting crashes when I try to download from some URLs with an https prefix on 10.7.

    $ aria2c Segmentation fault: 11

    The same URLs download as expected with HTTP:

    $ aria2c [#a98f7e 0B/0B CN:1 DL:0B]

    09/03 17:33:57 [NOTICE] Download complete: $path_to_file

    Download Results: gid |stat|avg speed |path/URI ======+====+===========+======================================================= a98f7e|OK | 4.1KiB/s| $path_to_file

    Status Legend: (OK):download completed.

    I used as an example; note that the URLs in question are valid signed URLs that download successfully in a web browser. The problem does not seem to apply to all https URLs, for example the following may be downloaded without issue:

    opened by eedlund 19
  • download large lz4 file error

    download large lz4 file error

    aria2c -s14 -x14 -k100M -o erigon-data-20221227.tar.lz4 after some time ,CTRL+C . run test file #lz4 -t erigon-data-20221227.tar.lz4 Error 66 : Decompression error : ERROR_decompressionFailed

    while wget works fine after some time ,CTRL+C run test file #./lz4 -t erigon-data-20221227.tar.lz4.1 Decompressed : 11920 MiB Error 68 : Unfinished stream

    I've tried : single thread download the whole file both raise err wget is fine with in this situation

    opened by justforfunya 0
  • Aria messes up colors in Windows command prompt

    Aria messes up colors in Windows command prompt

    Hi All

    I am using Windows batch script to download multiple files. Script is big, and I am using colored parts to interpret logs fast. At the script start, colored output is activated with command:

    :: colors to default b/w
    color 07
    :: activate colors
    for /F %%a in ('echo prompt $E ^| cmd') do @set "ESC=%%a"

    Colors work OK until aria2c is started:

    if "%DOWNLOAD%" == "DA" (
    	echo %ESC%[7;33m PREUZIMANJE DATOTEKA %ESC%[0m
    	echo %ESC%[36m --- Preuzimam portable paket aplikacija %ESC%[0m
    	aria2c.exe --connect-timeout=10 --max-tries=3 --max-concurrent-downloads=1 --dir="%DIR_TEMP%" --out="%FILE_PORTABLE%" --http-user=%DOWNLOAD_USER% --http-passwd=%DOWNLOAD_PASS% --http-no-cache=true --file-allocation=none --allow-overwrite=true --console-log-level=warn --download-result=full %DOWNLOAD_URL%/%FILE_PORTABLE%
    	echo %ESC%[36m --- Preuzimam DeploymentRuleset %ESC%[0m
    	aria2c.exe --connect-timeout=10 --max-tries=3 --max-concurrent-downloads=1 --dir="%DIR_TEMP%" --out="%FILE_DRS%" --http-user=%DOWNLOAD_USER% --http-passwd=%DOWNLOAD_PASS% --http-no-cache=true --file-allocation=none --allow-overwrite=true --console-log-level=warn --download-result=full %DOWNLOAD_URL%/%KORISNIK%/%FILE_DRS%

    After first aria2c.exe is started color coding does not work any more, until all aria2c downloads are finished:


    How can I get color coded echo output while using Aria2? Colors work in the rest of the script, in multiple IF statements etc.

    Thanks, regards Ivica

    opened by iglavocic 0
  • can't reset the download directory when add a new downloading task

    can't reset the download directory when add a new downloading task

    it will occur an error: aria2 write disk cache flush failure if I reset the download directory when add a new downloading task through the web UI. here is the log: Last 50 lines of log file:

    2022-12-26 16:43:30.936665 [DEBUG] [] 0 dht messages remaining in the queue. 2022-12-26 16:43:30.936653 [DEBUG] [] Executing 0 Task(s). Queue has 0 task(s). 2022-12-26 16:43:30.936644 [DEBUG] [] Updating immediateTaskQueue 2022-12-26 16:43:30.936634 [DEBUG] [] Executing 0 Task(s). Queue has 0 task(s). 2022-12-26 16:43:30.936621 [DEBUG] [] Updating periodicTaskQueue2 2022-12-26 16:43:30.936608 [DEBUG] [] Executing 0 Task(s). Queue has 0 task(s). 2022-12-26 16:43:30.936594 [DEBUG] [] Updating periodicTaskQueue1 2022-12-26 16:43:30.936582 [INFO] [] CUID#39 - Persist connection. 2022-12-26 16:43:30.936567 [INFO] [] CUID#39 - HttpServer: all response transmitted. 2022-12-26 16:43:30.936503 [DEBUG] [] 0 dht messages remaining in the queue. 2022-12-26 16:43:30.936489 [DEBUG] [] Executing 0 Task(s). Queue has 0 task(s). 2022-12-26 16:43:30.936480 [DEBUG] [] Updating immediateTaskQueue 2022-12-26 16:43:30.936471 [DEBUG] [] Executing 0 Task(s). Queue has 0 task(s). 2022-12-26 16:43:30.936460 [DEBUG] [] Updating periodicTaskQueue2 2022-12-26 16:43:30.936451 [DEBUG] [] Executing 0 Task(s). Queue has 0 task(s). 2022-12-26 16:43:30.936438 [DEBUG] [] Updating periodicTaskQueue1

    Content-Encoding: gzip Access-Control-Allow-Origin: * Content-Type: application/json-rpc Cache-Control: no-cache Expires: Mon, 26 Dec 2022 16:43:30 GMT Content-Length: 160 Date: Mon, 26 Dec 2022 16:43:30 GMT HTTP/1.1 200 OK 2022-12-26 16:43:30.936417 [DEBUG] [] HTTP Server sends response: 2022-12-26 16:43:30.936157 [INFO] [] Executing RPC method aria2.getGlobalStat 2022-12-26 16:43:30.936117 [DEBUG] [] 0 dht messages remaining in the queue. 2022-12-26 16:43:30.936100 [DEBUG] [] Executing 0 Task(s). Queue has 0 task(s). 2022-12-26 16:43:30.936084 [DEBUG] [] Updating immediateTaskQueue 2022-12-26 16:43:30.936076 [DEBUG] [] Executing 0 Task(s). Queue has 0 task(s). 2022-12-26 16:43:30.936060 [DEBUG] [] Updating periodicTaskQueue2 2022-12-26 16:43:30.936051 [DEBUG] [] Executing 0 Task(s). Queue has 0 task(s). 2022-12-26 16:43:30.936037 [DEBUG] [] Updating periodicTaskQueue1

    Cookie: username=admin; login=1; _pk_id.1.bb19=90952fcfef616788.1671897210.; _clck=1px26wv|1|f7p|0 Accept-Language: en,zh-CN;q=0.9,zh-TW;q=0.8,zh;q=0.7 Accept-Encoding: gzip, deflate Origin: chrome-extension://mpkodccbngfoacfalldjimigbofkhgjn Content-Type: application/json;charset=UTF-8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/ Safari/537.36 DNT: 1 Accept: application/json, text/plain, / Content-Length: 131 Connection: keep-alive Host: POST /jsonrpc HTTP/1.1 2022-12-26 16:43:30.935953 [INFO] [] HTTP Server received request

    Last 50 lines of syslog:

    Tue Dec 27 00:34:18 2022 aria2c[3223]: jail: exec-ing /usr/bin/aria2c Tue Dec 27 00:34:18 2022 aria2c[1866]: jail: jail (1868) exited with exit: 0 Tue Dec 27 00:34:17 2022 aria2: Aria2 will run with user 'root'. Tue Dec 27 00:32:25 2022 aria2c[1866]: jail: exec-ing /usr/bin/aria2c Tue Dec 27 00:32:25 2022 aria2: Aria2 will run with user 'root'. Tue Dec 27 00:26:35 2022 aria2c[7087]: jail: jail (7123) exited with exit: 9 Tue Dec 27 00:23:11 2022 aria2: Aria2 will run with user 'root'. Tue Dec 27 00:12:25 2022 aria2c[7087]: jail: exec-ing /usr/bin/aria2c Tue Dec 27 00:12:25 2022 aria2: Aria2 will run with user 'root'.

    opened by LarryLi-cn 0
  • Please reconsider the 16 connection limit.

    Please reconsider the 16 connection limit.

    Right now the Iranian government has limited per connection https bandwidth to 2 to 25kB/s and It is getting extremely frustrating to deal with artificial limits like this when dealing with other limits. The current 16 connection limit gives us between 30 and 400kB/s which is unbearable for most tasks.
    Not everybody can recompile their download manager, specially with limited internet access.

    opened by BehroozAmoozad 0
  • Feature request: Do not let the tasks wating for verifying be counted in the downloading task number

    Feature request: Do not let the tasks wating for verifying be counted in the downloading task number

    The following is describing the http download.

    We can limit the concurrent task num by the max-concurrent-downloads option. However if the checksum option is added to verify the files, the task is considered "downloading" in the verifying phrase. What's more, only one file is calculated checksum at one time.

    So imagine this: We set max-concurrent-downloads to 10 and download 100 same big files. The first 10 tasks are fine. But when they complete downloading at almost the same time, no tasks will be downloaded now. Instead, only 1 download-completed task starts verifying, which makes a big bandwidth waste.

    Thus, I suggest not counting these download-completed tasks into the concurrent-downloading number. At least add an option to let the users decide.

    opened by KeyID7 0
  • 我用aira2下载文件时,电脑自动息屏了导致下载中断。现在去下载原来的文件提示如下错误。请问这是为什么呢?


    CUID#18 - Download aborted. URI= Exception: [] errorCode=24 URI= -> [] errorCode=24 Authorization failed.

    opened by TG-Cooper 1
  • release-1.36.0(Aug 21, 2021)

    Release Note

    This release fixes several bugs. See Changes for details.


    • Update wslay

    • Bump Windows build dependencies

    • Bump android build dependencies

    • Fix segfault when time_t is 64bit on 32bit arch

      Patch from Natanael Copa


    • Updates the make_bash_completion script to Python3.

      Patch from sleepymac


    • Prevent corrupt downloads after app and/or system crash

      Patch from Ali MJ Al-Nasrawy


    • Reset sessionDownloadLength and sessionUploadLength on download start


    • AppleTLS: Add TLSv1.3 support

    Source code(tar.gz)
    Source code(zip) MB) MB) MB)
    aria2-1.36.0.tar.bz2(2.20 MB)
    aria2-1.36.0.tar.gz(3.62 MB)
    aria2-1.36.0.tar.xz(1.54 MB)
  • release-1.35.0(Oct 6, 2019)

    Release Note

    This release fixes several bugs. See Changes for details.


    • Update mingw build dependencies


    • Update android build dependencies

      Update android build dependencies. Use android NDK r20 and build aarch64 binary.


    • Drop SSLv3.0 and TLSv1.0 and add TLSv1.3

      TLSv1.3 support is added for GNUTLS and OpenSSL.


    • Platform: Fix compilation without deprecated OpenSSL APIs

      Patch from Rosen Penev


    • Remove linux getrandom and use C++ stdlib instead


    • Don't send Accept Metalink header if Metalink is disabled


    • gnutls: Fix bug that commonName is always empty


    • Fix openssl API version logic for libressl 2.7.x

      Patch from Ben Chaney


    • Fix build failure when InternalDHKeyExchange is used

    Source code(tar.gz)
    Source code(zip) MB)
    aria2-1.35.0-osx-darwin.dmg(2.10 MB)
    aria2-1.35.0-osx-darwin.tar.bz2(1.86 MB) MB) MB)
    aria2-1.35.0.tar.bz2(2.19 MB)
    aria2-1.35.0.tar.gz(3.62 MB)
    aria2-1.35.0.tar.xz(1.46 MB)
  • release-1.34.0(May 15, 2018)

    Release Note

    This release fixes several bugs. See Changes for details.


    • mingw: Use SetFileTime to avoid DST adjustment


    • UnknownLengthPieceStorage: return piece length

      show something in console status when downloading items with unknown content length

      Patch from kwkam


    • WinConsoleFile: fix colour properly

      Patch from kwkam


    • util: also detect xdg_* env variables on windows

      so if people like to keep FHS they could define XDG_* for it

      Patch from kwkam


    • MacOS: Allocate once (apfs compat)

    • Fix bug that signal handler does not work with libaria2

      This commit fixes the bug that signal handler does not work with libaria2 when aria2::RUN_ONCE is passed to aria2::run().


    • Retry on HTTP 502

      Patch from nicolov


    Source code(tar.gz)
    Source code(zip) MB) MB) MB)
    aria2-1.34.0.tar.bz2(2.18 MB)
    aria2-1.34.0.tar.gz(3.61 MB)
    aria2-1.34.0.tar.xz(1.45 MB)
  • release-1.33.1(Nov 8, 2017)

    Release Note

    This release fixes a bug that causes high CPU usage in mingw build.


    • mingw: Fix high CPU usage in BitTorrent downloads

      This commit fixes high CPU usage in BitTorrent downloads. Only mingw build is affected by this bug.

      Thank you kwkam for identifying the cause of the issue, and helping debugging this patch.

    Source code(tar.gz)
    Source code(zip) MB) MB) MB)
    aria2-1.33.1.tar.bz2(2.18 MB)
    aria2-1.33.1.tar.gz(3.60 MB)
    aria2-1.33.1.tar.xz(1.43 MB)
  • release-1.33.0(Oct 17, 2017)

    Release Note

    This release fixes several bugs, and add new features.


    • Include arm in a filename of android zip

    • Upgrade base image of Dockerfile.mingw to ubuntu:16.04

    • wintls: Potential fix for undecrypted read


    • libaria2: Return last error code from DownloadHandle::getErrorCode


    • Windows: pass writefds also as exceptfds to select()

      winsock notifies connect() failures on exceptfds instead of writefds.

      Fixes GH-969 Fixes GH-975

    • libuv: use pkg-config

    • FeatureConfig: align text

    • Update Dockerfile.mingw

      avoid docker cache when using git

      Patch from qweaszxcdf


    • Add --peer-agent option

      Add --peer-agent for setting the version/user agent used in the extended handshake protocol for bittorrent.

      Patch from Kurt Kartaltepe


    • OSX: Allow to specify a build

    • OSX: update c-ares

    • [Docs, libaria2] Fix type of obj pushed into options vector

      aria::KeyVals is a vector of pair of std strings, therefore the type of object being pushed should be std::pair<std::string, std::string>, however in the docs, the type of the said object is KeyVals. If one follows the docs, their code will fail to compile.

      Patch from geetam


    • AppleTLS: Silence cipher suite selection

    • Unbreak build OSX build

    • Update macOS versions

    • Add --bt-load-saved-metadata option

      Before getting torrent metadata from DHT when downloading with magnet link, first try to read file saved by --bt-save-metadata option. If it is successful, then skip downloading metadata from DHT. By default, this feature is turned off.


    • Fix regression in bfc54d0b9a694e5d87efd8ed11b5393bc4b66f93

      Don't save control file if --auto-save-interval is 0.


    • Fix infinite loop bug when file is not found

    Source code(tar.gz)
    Source code(zip) MB)
    aria2-1.33.0-osx-darwin.dmg(1.90 MB)
    aria2-1.33.0-osx-darwin.tar.bz2(1.68 MB) MB) MB)
    aria2-1.33.0.tar.bz2(2.18 MB)
    aria2-1.33.0.tar.gz(3.61 MB)
    aria2-1.33.0.tar.xz(1.45 MB)
  • release-1.32.0(May 17, 2017)

    Release Note

    This release fixes several minor bugs, and spelling mistakes.


    • Clarify --max-concurrent-downloads option


    • Fix compile error with toolchain which lacks IPV6_TCLASS


    • Log directed URI in notice log level


    • Fix typo

      Patch from Tse Kit Yam

      GH-879, GH-899

    • Spelling fixes

      Patch from klemens


    • Remove unused Android parts

      These parts where unused after merging

      Patch from Fredrik Fornwall


    • Save control file early


    • Update links in Dockerfile.raspberrypi

      Some links used in Dockerfile.raspberrypi are not accessible anymore, because they were pointing to old versions of some source packages and new versions were released. This commit fixes this by changing the links to point to the newest versions.

      Patch from Michał Leśniewski


    • Propagate disk full error on pre-allocation to last error code


    Source code(tar.gz)
    Source code(zip) MB)
    aria2-1.32.0-osx-darwin-build2.dmg(1.86 MB)
    aria2-1.32.0-osx-darwin-build2.tar.bz2(1.64 MB) MB) MB)
    aria2-1.32.0.tar.bz2(2.17 MB)
    aria2-1.32.0.tar.gz(3.59 MB)
    aria2-1.32.0.tar.xz(1.43 MB)
  • release-1.31.0(Jan 16, 2017)

    Release Note

    This release fixes assertion error in SimpleRandomizer::getRandomBytes. It adds new option content-disposition-default-utf8.


    • Better error message when local file status cannot be retrieved


    • Fix assertion failure in SimpleRandomizer::getRandomBytes

      errno might not be initialized to 0, and we may get both rv == -1 and errno != ENOSYS. This leads to assertion failure. Since getrandom_linux always returns -1 on failure, checking errno is useless in this function.


    • Add option content-disposition-default-utf8

      Patch from JimmyZ


    Source code(tar.gz)
    Source code(zip) MB) MB) MB)
    aria2-1.31.0.tar.bz2(2.17 MB)
    aria2-1.31.0.tar.gz(3.59 MB)
    aria2-1.31.0.tar.xz(1.43 MB)
  • release-1.30.0(Dec 15, 2016)

    Release Note

    This release fixes several bugs. See Changes below for detailed bug fixes. This release adds an ability to expand ${HOME} to user's home directory in several options. It would be useful when used in configuration file. -S option against torrent file now prints out DHT nodes.


    • mingw: Use sqlite 3.15.2

    • Fix bug that --disable-websocket causes build error

    • Fix bug that lower bound of optimize-concurrent-downloads becomes 1


    • Print DHT nodes with -S option


    • Take into account address family when resolving DHT node address


    • Allow block device file to -i option


    • Expand ${HOME} to user's home directory in several options

      The following options implement this substitution:

      • --ca-certificate
      • --certificate
      • --dht-file-path
      • --dht-file-path6
      • --dir
      • --input-file
      • --load-cookies
      • --log
      • --metalink-file
      • --netrc-path
      • --on-bt-download-complete
      • --on-download-complete
      • --on-download-error
      • --on-download-start
      • --on-download-stop
      • --on-download_pause
      • --out
      • --private-key
      • --rpc-certificate
      • --rpc-private-key
      • --save-cookies
      • --save-session
      • --server-stat-if
      • --server-stat-of
      • --torrent-file


    • Document that libaria2 is not thread safe


    • configure: Use pkg-config to find libs whenever possible

      Use pkg-config to find cppunit, libxml2 and expat. All those libraries provide pkg-config files, and in all of those cases the pkg-config macro is superior to the custom macros used currently.

      The advantages of pkg-config files include:

      • Explicit static linking support via --static. Currently, e.g. 'xml2-config --libs' prints all libraries needed for static linking when doing dynamic linking unnecessary, resulting in unnecessary direct deps.
      • Better cross-build support. You don't have to build the additional *-config tools for target.
      • Better multilib support. Per-ABI pkgconfig directories are commonly supported while packages usually fail to look for per-CHOST *-config variants.
      • Better override support. The current macros allow little to no result overrides, the pkg-config macros let you pass FOO_CFLAGS and FOO_LIBS manually.
      • Cleaner version checks. The code used in libxml.m4 is really creepy.

      Patch from Michał Górny


    • WinTLS: Rewrite writeData

      We re-wrote WinTLSSession::writeData. The major points are:

      • Buffer is now preallocated once handshake is finished. Previously, they are allocated each time when we send one TLS record.
      • Schannel uses header, body and trailer for each secBuffer. Now we send them off at once using WSASend which is windows counterpart of sendv. Previously, we do memmove if some of them are truncated.
      • We don't try to send application data in WinTLSSession::closeConnection, since semantically we need same application data used to create TLS record before. Using 0 length data to finish sending buffered data looks like a hack.


    Source code(tar.gz)
    Source code(zip) MB)
    aria2-1.30.0-osx-darwin.dmg(1.87 MB)
    aria2-1.30.0-osx-darwin.tar.bz2(1.66 MB) MB) MB)
    aria2-1.30.0.tar.bz2(2.16 MB)
    aria2-1.30.0.tar.gz(3.57 MB)
    aria2-1.30.0.tar.xz(1.42 MB)
  • release-1.29.0(Nov 15, 2016)

    Release Note

    This release fixes several bugs. See Changes below for detailed bug fixes. This release adds 1xx non-final response support. Wslay library is updated to the latest revision.


    • WinTLS: Fix busy loop on write error


    • Support 1xx non-final response


    • Update wslay


    • Don't download piece which is filtered out (e.g., --select-file)

      This commit fixes the bug that piece which is not requested by --select-file is downloaded in multi-file Web-Seeding.


    Source code(tar.gz)
    Source code(zip) MB)
    aria2-1.29.0-osx-darwin.dmg(1.89 MB)
    aria2-1.29.0-osx-darwin.tar.bz2(1.66 MB) MB) MB)
    aria2-1.29.0.tar.bz2(2.16 MB)
    aria2-1.29.0.tar.gz(3.57 MB)
    aria2-1.29.0.tar.xz(1.42 MB)
  • release-1.28.0(Oct 16, 2016)

    Release Note

    This release fixes the bug that file name is not logged with --conditional-get option is used. The new option --keep-unfinished-download-result was added to keep incomplete downloads in memory regardless of --max-download-result so that we can save those downloads with --save-session option. This option is enabled by default.

    This release


    • Restore LTLIBINTL in src/

      Patch from Juan Francisco Cantero Hurtado

    • Add --keep-unfinished-download-result option

      This option keeps unfinished download results even if doing so exceeds --max-download-result. This is useful if all unfinished downloads must be saved in session file (see --save-session option). Please keep in mind that there is no upper bound to the number of unfinished download result to keep. This option is enabled by default.

    • Fix -Wexpansion-to-defined warning with clang-3.9

      The error message was:

      warning: macro expansion producing 'defined' has undefined behavior [-Wexpansion-to-defined]

    • Fix bug that file name is not logged with --conditional-get


    Source code(tar.gz)
    Source code(zip) MB) MB) MB)
    aria2-1.28.0.tar.bz2(2.15 MB)
    aria2-1.28.0.tar.gz(3.57 MB)
    aria2-1.28.0.tar.xz(1.42 MB)
  • release-1.27.0(Sep 16, 2016)

    Release Note

    This release fixes bug which may cause crash if UDP tracker is used. It adds new option --save-not-found which prevents downloads failed by "not found" error from being saved in session file.


    • Hard-disable openssl in osx build

      Closes #739

    • Fix possible cause of crash if UDP tracker is used

    • Remove custom ftruncate64 for Android

      The latest NDK versions support ftruncate64, so building a local copy of ftruncate64 is no longer needed.

      Also, the arm and x86 builds of ftruncate64 failed when targeting API level 21 or higher, as they include <linux/err.h> which are not present starting from API level 21.

      Patch from Fredrik Fornwall

    • Fix typo found by Debian's Lintian

    • Add --save-not-found option

    • Update comment to match code

      Patch from Torbjörn Lönnemark

    • WinTLS: Better errors (from WSA)

    • Compile with openssl 1.1.0

    Source code(tar.gz)
    Source code(zip) MB) MB) MB)
    aria2-1.27.0.tar.bz2(2.15 MB)
    aria2-1.27.0.tar.gz(3.56 MB)
    aria2-1.27.0.tar.xz(1.42 MB)
  • release-1.26.1(Aug 28, 2016)

    Release Note

    This release fixes the bug that causes assertion failure during BitTorrent downloads.


    • Make assertion hold

      If we have peer which is already used, make addAndCheckoutPeer() fail. If peer is in unused list, first remove the old entry, and then add new one. This would make assertion in ~DefaultPeerStorage hold.

    Source code(tar.gz)
    Source code(zip) MB)
    aria2-1.26.1-osx-darwin.dmg(1.86 MB)
    aria2-1.26.1-osx-darwin.tar.bz2(1.65 MB) MB) MB)
    aria2-1.26.1.tar.bz2(2.15 MB)
    aria2-1.26.1.tar.gz(3.56 MB)
    aria2-1.26.1.tar.xz(1.42 MB)
  • release-1.26.0(Aug 20, 2016)

    Release Note

    This release fixes linking bug with libaria2 enabled. It also changes how aria2 renames the download file name when the same name already exists in file system. In summary, we use numbers before extension (e.g., foo.1.txt), rather than after extension (e.g., foo.txt.1). Now --seed-time option can take floating point number to specify fractional minutes.


    • aria2mon: Replace with local method

      Patch from Florian Gamböck

    • Reorder a note section in aria2c.rst

      Patch from Artur Petrov

      Closes GH-722

    • bash_completion: Add missing options which takes one of pre-defined values

    • Replace "/" with "-" in magnet dn name when used as in-memory download name

    • Fix Dockerfile.raspberrypi to correctly decompress expat archive

      Patch from Char

    • Enable ccache in travis-ci

      Speeds up the build most of the time.

      Closes GH-710

    • Enable OSX/macOS build for travis

      Closes GH-711 Closes GH-666

    • Better auto-renaming

      Up until now aria2 file auto renaming worked by just appending a new unique number to the file path, behind the file name extension, if any, changing what most other programs consider the file extension in the process. Now, aria2 will attempt to insert the number before the file extension, leaving the extension intact, so that e.g. a ".jpg" still is a ".jpg" file and opens in your configured image viewer when clicking it. If a file has no extension (incl. so called "dot files"), the number will be appended to the file name as usual.

      Note: This is a potentially breaking change that might break third party scripts that rely on aria2 auto file renaming producing a certain format for renamed files. Please fix your scripts accordingly.

      Closes GH-709

    • Log number of items loaded from input file

    • Link external libraries to libaria2 with --enable-libaria2

      Fixes GH-707

    • Allow seconds for seed-time (fractional minutes)

      Patch from Sébastien Cabaniols

      Closes GH-704

    Source code(tar.gz)
    Source code(zip) MB)
    aria2-1.26.0-osx-darwin.dmg(1.61 MB)
    aria2-1.26.0-osx-darwin.tar.bz2(1.40 MB) MB) MB)
    aria2-1.26.0.tar.bz2(2.15 MB)
    aria2-1.26.0.tar.gz(3.56 MB)
    aria2-1.26.0.tar.xz(1.42 MB)
  • release-1.25.0(Jul 15, 2016)

    Release Note

    This release fixes many bugs reported so far. There is no new functionality in this release. We have fixed many performance issues in BitTorrent downloads.


    • Update third-party libraries for binary releases

    • Send have message without too much delay

      Also send bitfield rather than have messages if bitfield message is equal to or less than the sum of have messages which otherwise would be sent.

    • Fix bug that causes bogus EOF connection failure in BitTorrent downloads

    • Fix frequent interested/not interested message transmission

    • Fix frequent choke/unchoke message transmission

    • Try to use available URI if all pooled requests are sleeping

    • Update expat in OSX build

      Closes GH-694

    • aria2mon: Add --secret option

      Fixes GH-700

    • Set server status error on network failure in server performance profile

    • Disable AI_ADDRCONFIG if no IPv4/IPv6 address is configured for any interface

      Fixes GH-698

    • Russian manual: Update aria2c.rst

      Patch from ITriskTI

    • Apply --retry-wait on 503 only

    • Ensure that lowest speed check is done even when download speed is 0

      Fixes GH-686

    • Document that -o is always relative to -d option

      Fixes GH-684

    • Allow larger ut_metadata size

      Fixes GH-681

    • mingw: Change FD_SETSIZE to 32768

      Fixes GH-678

    • Fix compile error on OS X

      Fixes GH-683

    Source code(tar.gz)
    Source code(zip) MB)
    aria2-1.25.0-osx-darwin.dmg(1.86 MB)
    aria2-1.25.0-osx-darwin.tar.bz2(1.66 MB) MB) MB) MB)
    aria2-1.25.0.tar.bz2(2.15 MB)
    aria2-1.25.0.tar.gz(3.56 MB)
    aria2-1.25.0.tar.xz(1.42 MB)
  • release-1.24.0(Jun 15, 2016)

    Release Note

    This release fixes several bugs. The new functionality is that when options which is only applicable in waiting state are submitted to an active download via RPC, the download is now automatically restarted to reflect the changes. Previously, those options were just ignored.


    • BitTorrent: Allow 32KiB request

      It looks like the 32KiB is the default request size of python bittorrent client. Previously, aria2 only allowed maximum 16KiB request.

    • Don't unchoke peer which is not interested in us

    • Fix bug that evaluation of Peer::amChoking is negated

    • Faster seed/download on fast connection

    • Increase DHT task concurrency to 15

      Fix GH-653

    • Fixed mmap failure check with MAP_FAILED flag

      Fix GH-662

      Patch from suzker

    • Added file size overflow check for mmap on 32bit os

      Fix GH-662

      Patch from suzker

    • Use standard percent-encode for tracker request query

      Fix GH-659

    • mingw32: Gain privilege before opening files

      Fix GH-657

    • Restart active download to apply previously not applicable options

      Previously, we categorized options that can be used in aria2.changeOption RPC method into 2 categories. The options in one category can be applied on the fly, meaning that download continues to be active while applying options. Another category includes options which are only applicable when downloads are waiting or paused.

      In this change, when active download is ordered to change options which only applicable in waiting or paused state, it is now paused, and then automatically restarted. Although we have limited number of download concurrency, the pause and restart is done atomically, and the download is inserted at the front of the queue, it is picked up immediately if the concurrency regulation allows.

      Fix GH-640 and GH-644

    Source code(tar.gz)
    Source code(zip) MB)
    aria2-1.24.0-osx-darwin.dmg(1.86 MB)
    aria2-1.24.0-osx-darwin.tar.bz2(1.66 MB) MB) MB)
    aria2-1.24.0.tar.bz2(2.15 MB)
    aria2-1.24.0.tar.gz(3.57 MB)
    aria2-1.24.0.tar.xz(1.42 MB)
  • release-1.23.0(May 15, 2016)

    aria2 1.23.0

    Release Note

    This release fixes several bugs reported by users, and adds several new features. Read the following section for details.


    • Simplify cache write

      The previous cache write routine was too complex. I'm sure I can rewrite it to more elegantly. But the primary motivation of this complex logic is for disk activity reduction on Windows 7, and I observed it on my old IDE disk. I checked it again recently, and there is no difference between with and without this complex logic. For this reason, it was removed. Will revert this change if many of users are not happy with this.

    • Allow subsecond value in ns cookie.txt file's expiry time field

      Fixes GH-655

    • Adjust chromium cookie time

    • import-po: iterate on glob, not ls output

      Patch from Mingye Wang

    • Add --stderr option to redirect all stdout log output to stderr

      Fixes GH-638

    • Add "hide" to --download-result option

      Fixes GH-639

    • Fix downloaded metaurl torrent filename

    • Add a little bit of color to have a better visual of important informations

      Patch from rotor

    • Update README URLs based on HTTP redirects

      Patch from ReadmeCritic

    • Relocate from to

      Fixes GH-602

    • mingw: Defer the falloc warning until falloc is specified by option

      Fixes GH-594

    • Add bittorrent key to aria2.tellStopped status

      Fixes GH-612

    • Addsystem.listNotifications RPC method

      Merges GH-620

      Patch from Sonny Piers

    • Report CheckIntegrity info in tellStatus

      • Adds verifiedLength to tellStatus. Reports the length of data that has been verified of the current RequestGroup being verified.
      • Adds verifyPending to tellStatus. Reports if the RequestGroup has a verification of integrity pending.

      Closes GH-561

      Patch from Kurt Kartaltepe

    Source code(tar.gz)
    Source code(zip) MB)
    aria2-1.23.0-osx-darwin.dmg(1.86 MB)
    aria2-1.23.0-osx-darwin.tar.bz2(1.65 MB) MB) MB)
    aria2-1.23.0.tar.bz2(2.15 MB)
    aria2-1.23.0.tar.gz(3.56 MB)
    aria2-1.23.0.tar.xz(1.42 MB)
  • release-1.22.0(Apr 15, 2016)

    Release Note

    This release adds new feature that manages the number of concurrent downloads dynamically. --stream-piece-selector option gets new value "random" which randomizes the piece selection for HTTP/FTP downloads. This effectively randomizes the order of files on multi-file Web Seeding. Now all contributor's names are in AUTHORS file. Previously, aria2 shows error when it sees floating point number in a torrent file because torrent file specification does not allow floating point number. In this release, they are just ignored, and aria2 continues to parse the rest of the torrent file as if there is nothing wrong.


    • Add description about possible fragmentation with --file-allocation=trunc

    • Make single-entry metalink download with multi-file torrent work

    • Add all contributor's names in AUTHORS

    • Ignore floating number in torrent file

    • Added support for a dynamic management of the number of concurrent downloads as a function of the overall bandwidth observed

      This change adds --optimize-concurrent-downloads option.

      Patch from oliviercommelarbre

    • Add --stream-piece-selector=random

    Source code(tar.gz)
    Source code(zip) MB)
    aria2-1.22.0-osx-darwin.dmg(1.86 MB)
    aria2-1.22.0-osx-darwin.tar.bz2(1.65 MB) MB) MB)
    aria2-1.22.0.tar.bz2(2.10 MB)
    aria2-1.22.0.tar.gz(3.51 MB)
    aria2-1.22.0.tar.xz(1.38 MB)
  • release-1.21.0(Mar 15, 2016)

    Release Note

    This release fixes several bugs, see the Changes for details. We added "following" key to the response of aria2.tellStatus RPC method as reverse link for followedBy.


    • SessionSerializer: Fix bug that pause=true is added to wrong item

      This change also defers writing metadata download to the location where first its follower download is written.

    • Add "following" to aria2.tellStatus response key as reverse link for followedBy

    • mingw: Add warning for falloc

    • Update ciphers in AppleTLS

      Also enable fast start while at it

    • OSX: Enable libssh2 and sftp

      Closes GH-468

    • Update OSX dependencies

      Closes GH-466

    • Fix compile error without TLS support

    • Add support for using gnutls system wide crypto policy

      Patch from Athmane Madjoudj

    Source code(tar.gz)
    Source code(zip) MB)
    aria2-1.21.0-osx-darwin.dmg(1.84 MB)
    aria2-1.21.0-osx-darwin.tar.bz2(1.63 MB) MB) MB) MB)
    aria2-1.21.0.tar.bz2(2.09 MB)
    aria2-1.21.0.tar.gz(3.49 MB)
    aria2-1.21.0.tar.xz(1.37 MB)
  • release-1.20.0(Feb 15, 2016)

    Release Note

    This release fixes lots of bugs. See the Changes section below. There are new features in this release. We added "seeder" key in aria2.tellStatus RPC response. We added system.listMethods RPC method to return all RPC method supported. We added --max-mmap-limit option to avoid mmap if total file size is greater than given size.


    • src/ fix colour

      Set default foreground/background colour correctly

      Patch from kwkam

    • fix autoreconf error

      Use m4_ifdef so we do not have to install optional libraries

      Patch from kwkam

    • Don't inherit file descriptor to child process

      For non-Mingw32 build, set FD_CLOEXEC to file descriptors which live beyond function scope. For Mingw32 build, just pass false to bInheritHandles parameter of CreateProcessW.

    • Update Russian version documentation

      Patch from ITriskTI

    • Add "seeder" key to tellStatus RPC response

    • WinTLS: Fix hang because of buffered received data

      WinTLSSession buffers received decrypted data into its own buffer. If read is requested, it copies the data from its buffer. But if requested buffer size is less than decrypted buffer, some of the data is left in the buffer. Previously, we had no facility to check the existence of this pending data. If this data is the last requested data from remote server, we may end up waiting for read event even if we have already data in our buffer, which may cause hang. This commit fixes this issue by introducing function to return the buffered length in TLSSession. SocketCore also provides the same function, which delegates to TLSSession object.

    • Add --max-mmap-limit option

      Set the maximum file size to enable mmap (see --enable-mmap option). The file size is determined by the sum of all files contained in one download. For example, if a download contains 5 files, then file size is the total size of those files. If file size is strictly greater than the size specified in this option, mmap will be disabled.

    • mingw: Use SetFileValidData to make --file-allocation=falloc work

    • Retry with 504 status code

    • Increase DHT transaction ID from 2 to 4 bytes to avoid conflict

    • Update wslay

    • Add --enable-werror option to configure to enable warning flags

    • Don't modify user variables (e.g., CFLAGS, LIBS, etc)

    • Improve error message when loading pkcs12 file failed

    • Updated dependency and source url's

      The RaspberryPi Dockerfile had some out-of-date dependency packages and was downloading an outdated aria2 source from Sourceforge, which resulted in a build for version 1.19.0. The new fetch-latest-release-from-GitHub script I've cooked up should always work as long as GitHub doesn't change their API and aria2's platform agnostic releases follow the "{version number}.tar.bz2" naming format.

      Patch from c3mb0

    • Reduce delay in tracker request

      We eliminated 1 second delay between completion of name resolution for tracker request and time when it is actually issued. We also elimited 1 second delay after last torrent download exists and it is told to DHTInteractionCommand.

    • Disable IPv6 on non-async NameResolver if configuration wants

    • Fix mysterious 1 second delay with async DNS

    • Fix bug that UDP port was incorrectly used in UDP tracker announce request

    • Refactor HttpRequest

      This also makes comparison performed when replacing builtin header field with user-defined one case-insensitive.

    • Send Want-Digest as per RFC 3230

    • Try all found address set to bind sockets with --multiple-interface

      Fixes GH-523

    • Replace sourceforge references with

    • Add system.listMethods RPC method

      system.listMethods just returns the available RPC method names. It can be executed without secret token, because it just returns the method names, and does not alter anything.

      See GH-437

    • Support content-range from non-compliant server

      See GH-509

    • Reduce UDP tracker request timeout

      See GH-507

    • Apply --retry-wait when retrying after 404

      Previously, --retry-wait was not used when retrying after 404 (--max-file-not-found). The retry was done without delay. Also the maximum retry count (--max-retries) was ignored when retrying with 404.

      This commit makes --retry-wait apply for retrying with 404 as well. It also combines --max-retries and --max-file-not-found. When retrying with 404, it is counted toward retry count.

    Source code(tar.gz)
    Source code(zip) MB)
    aria2-1.20.0-osx-darwin.dmg(1.62 MB)
    aria2-1.20.0-osx-darwin.tar.bz2(1.41 MB) MB) MB)
    aria2-1.20.0.tar.bz2(2.08 MB)
    aria2-1.20.0.tar.gz(3.44 MB)
    aria2-1.20.0.tar.xz(1.34 MB)
  • release-1.19.3(Dec 6, 2015)

    Release Note

    This release fixes lots of bugs. See the Changes section below.


    • Fix bug that pause/unpause seeding torrent prevents new downloads from starting

      Previously, with --bt-detach-seed-only, when user issued pause and unpause command to seeding torrent, and it was started again, and it immediately got seeding status, but aria2 did not start new download waiting in the queue. This commit fixes this bug.

      See GH-490

    • Add --bt-enable-hook-after-hash-check option

      This option sets flag which allows hook command invocation after hash check (see -V option) in BitTorrent download. By default, when hash check succeeds, the command given by --on-bt-download-complete is executed. To disable this action, give false to this option.

    • Add --socket-recv-buffer-size option

      Set the maximum socket receive buffer in bytes. Specifing 0 will disable this option. This value will be set to socket file descriptor using SO_RCVBUF socket option with setsockopt() call.

      See GH-487 about the usecase of this option

    • Disable --deferred-input when --save-session is used together

      With --deferred-input=true, aria2 only reads input file to fill active download slots, while keeping input file open. Meanwhile, --save-session saves all download info inside memory, but this does not take into account of unread item in input file. This will lead to lose input data in saved session file. Also current BufferedFile implementation used to read/write input/output file take a lock on Windows. This effectively prevents session serializer from writing session data to the same file which is still kept open because of --deferred-input. See GH-493

    • base32: decode lowercased characters as well

      This fixes the bug that magnet URI with lowercased btih is treated as malformed.

    • mingw: Use GetFileSize to get file size

      _wstat family does not work with symbolic links. They always returns size 0. To workaround this, we now use GetFileSize to get file size. To do that, we need to first obtain file HANDLE, which is a bit tedious because of the messy interface of CreateFileW, but we have no way to get around it.

    • Fix bug that file allocation=trunc does not work with Windows symlink

    • Send the last error message as part of tellStatus RPC response

      Patch from Jarda Snajdr

    • Don't enable mmap if file allocation is disabled

      Without file allocation, we cannot map file because file length could be zero.

      This could fix bug reported at GH-478

    • Evict timed out pooled socket periodically

      Previously we only scanned pool socket to check they are timed out when we pooled another socket. This means that pooled socket is not closed long time (stays in CLOSE-WAIT state) if we don't pool any more socket. In this commit, we now check pooled socket periodically (30 seconds) to avoid the sockets hanging in CLOSE-WAIT state long time.

      See GH-477

    • Don't write control file if content is not changed from previous one

      This is desirable so that we don't have to wake up disk if control file is not changed, and it is not have to be written again. We use the same method (SHA1 hash) to check the content is the same. The limitation is the hash is stored in memory, so we have to write the first time in each session.

      See GH-382

    • Remove content-length and content-range if transfer-encoding is given

      See GH-473

    • Retry after 404 status if --max-file-not-found > 0

    Source code(tar.gz)
    Source code(zip) MB)
    aria2-1.19.3-osx-darwin.dmg(1.62 MB)
    aria2-1.19.3-osx-darwin.tar.bz2(1.40 MB) MB) MB)
    aria2-1.19.3.tar.bz2(2.06 MB)
    aria2-1.19.3.tar.gz(3.39 MB)
    aria2-1.19.3.tar.xz(1.34 MB)
  • release-1.19.1(Sep 27, 2015)

    aria2 1.19.1

    Release Note

    This release fixes TLS handshake error with servers which only support RSA-SHA1 signature algorithm. We removed RSA-SHA1 for enchanced security, but many users reported there were servers which could not talk aria2 1.19.0, so added it again for compatibility reasons. For Windows build, we fixed potential infinite loop bug when TLS is used.

    We changed the location where dht.dat and aria2.conf are looked up. The aria2 manual page described details. Basically we now follow XDG specification ( For dht.dat, the default location is $XDG_CACHE_HOME/aria2/ directory. For aria2.conf, the default location is $XDG_CONFIG_HOME/aria2/ directory. To keep the current user configuration working, if aria2 detects dht.dat under $HOME/.aria2/ directory, it is used instead. Similarly, if aria2.conf exists under $HOME/.aria2/ directory, it is used instead.

    Previously, we return 500 HTTP status if RPC method execution encountered error. Now it returns with 400 HTTP status with error code. This is more natural because server processed request and found an error, and returned error reply correctly. This is not something server crashed or something. Also, there is RPC libraries which throws exception if it sees 5XX status code, where 400 is better because we can examine the error.


    • Update

      Providing some workarounds about CA certificates and standard output

      Patch from amtlib-dot-dll

    • Return 400 HTTP status code if exception was caught while executing RPC method

      Previously, we returned 500 HTTP status code. I think the found in RPC level, not in HTTP protocol, so 500 is not appropriate.

    • WinTLS: Fix potential infinite loop

    • Fix on-download-error is executed even if download succeeded

    • Update Dockerfile.mingw

      Patch from Adam Baxter

    • Increase --select-file upper bound to 1m for torrent containing lots of files

    • Fix busy loop with --dry-run and 4xx response for URI listed in metalink

      See GH-430

    • Update sqlite in OSX build to

    • Make LibuvEventPoll compatible with the latest libuv again

    • gnutls: Allow SIGN-RSA-SHA1 for compatibility reason

    • Make script compatible with both Python 2 and 3

      Patch from Vasilij Schneidermann

    • Make config and cache files conform to XDG

      See for further details. This implementation decides the default based on whether a file exists at the legacy location, if it doesn't, it picks the XDG-conforming location instead.

      Patch from Vasilij Schneidermann

    • ftp, sftp: Fix heap-after-free bug on exception

    • ftp: Fix timeout when reusing FTP connection

    • Various MinGW-w64 build improvements

      • Fix detection of localtime_r and asctime_r on MinGW-w64
      • Fix linking with libintl on MinGW-w64

      Patch from David Macek

    Source code(tar.gz)
    Source code(zip) MB)
    aria2-1.19.1-osx-darwin.dmg(1.62 MB)
    aria2-1.19.1-osx-darwin.tar.bz2(1.41 MB) MB) MB)
    aria2-1.19.1.tar.bz2(2.05 MB)
    aria2-1.19.1.tar.gz(3.38 MB)
    aria2-1.19.1.tar.xz(1.31 MB)
SoftEther VPN - Cross-platform multi-protocol VPN software.

SoftEther VPN - Cross-platform multi-protocol VPN software.

SoftEther 9.6k Jan 4, 2023
DS Download Play-compatible (flashme/haxxstation) GBA cart dumper over Wi-Fi

gbaxxdumper DS Download Play-compatible (flashme/haxxstation) GBA cart dumper over Wi-Fi, made by vappster. Uses softmods only, no flashcart/dongle/GC

vappster 25 Dec 18, 2022
Built a peer-to-peer group based file sharing system where users could share or download files from the groups they belonged to. Supports parallel downloading with multiple file chunks from multiple peers.

Mini-Torrent Built a peer-to-peer group based file sharing system where users could share or download files from the groups they belonged to. Supports

null 1 Nov 15, 2021
XQUIC Library released by Alibaba is a cross-platform implementation of QUIC and HTTP/3 protocol.

XQUIC 简体中文文档 README-zh-CN Introduction XQUIC Library released by Alibaba is … … a client and server implementation of QUIC and HTTP/3 as specified by

Alibaba 1.4k Dec 29, 2022
C and C++ client for QuestDB Input Line Protocol over TCP

c-questdb-client QuestDB - InfluxDB Line Protocol - Ingestion Client Library for C and C++ This library makes it easy to insert data into QuestDB. Thi

QuestDB 27 Dec 22, 2022
Warp speed Data Transfer (WDT) is an embeddedable library (and command line tool) aiming to transfer data between 2 systems as fast as possible over multiple TCP paths.

WDT Warp speed Data Transfer Design philosophy/Overview Goal: Lowest possible total transfer time - to be only hardware limited (disc or network bandw

Facebook 2.7k Dec 31, 2022
Mongoose Embedded Web Server Library - a multi-protocol embedded networking library with TCP/UDP, HTTP, WebSocket, MQTT built-in protocols, async DNS resolver, and non-blocking API.

Mongoose - Embedded Web Server / Embedded Networking Library Mongoose is a networking library for C/C++. It implements event-driven non-blocking APIs

Cesanta Software 9k Jan 1, 2023
Multi-protocol Port Mapping client library

libplum - Multi-protocol Port Mapping client library libplum (Port Lightweight and Universal Mapping) is a library allowing to forward ports on Networ

Paul-Louis Ageneau 18 Dec 26, 2022
RakNet is a cross platform, open source, C++ networking engine for game programmers.

RakNet 4.081 Copyright (c) 2014, Oculus VR, Inc. Package notes The Help directory contains index.html, which is full help documentation in HTML format

Facebook Archive 3.1k Dec 30, 2022
RakNet is a cross platform, open source, C++ networking engine for game programmers.

RakNet 4.081 Copyright (c) 2014, Oculus VR, Inc. Package notes The Help directory contains index.html, which is full help documentation in HTML format

Facebook Archive 3.1k Dec 30, 2022
rdesktop is an open source client for Microsoft's RDP protocol

?? rdesktop is in need of a new maintainter. Please see the home page for more details. ??

null 1.1k Dec 26, 2022
Cross-platform, efficient, customizable, and robust asynchronous HTTP/WebSocket server C++14 library with the right balance between performance and ease of use

What Is RESTinio? RESTinio is a header-only C++14 library that gives you an embedded HTTP/Websocket server. It is based on standalone version of ASIO

Stiffstream 924 Jan 6, 2023
LibVNCServer/LibVNCClient are cross-platform C libraries that allow you to easily implement VNC server or client functionality in your program.

LibVNCServer: A library for easy implementation of a VNC server. Copyright (C) 2001-2003 Johannes E. Schindelin If you already used LibVNCServer, you

null 888 Dec 30, 2022
An extensible, cross-platform, single-header C/C++ OpenGL loader library.

Simple OpenGL Loader An extensible, cross-platform, single-header C/C++ OpenGL loader library. Usage For Windows Win32 or Linux X11 applications, the

Tarek Sherif 77 Dec 12, 2022
Mars is a cross-platform network component developed by WeChat.

Mars is a cross-platform infrastructure component developed by WeChat Mobile Team

Tencent 16.6k Jan 3, 2023
Cross-platform library for building Telegram clients

TDLib (Telegram Database library) is a cross-platform library for building Telegram clients. It can be easily used from almost any programming language.

Telegram Library 5.3k Jan 8, 2023
OpenBoard is a cross-platform interactive whiteboard application intended for use in a classroom setting.

OpenBoard is an open source cross-platform interactive white board application designed primarily for use in schools. It was originally forked from Open-Sankoré, which was itself based on Uniboard.

OpenBoard 1.7k Dec 29, 2022
LANDrop is a cross-platform tool that you can use to conveniently transfer photos, videos, and other types of files to other devices on the same local network.

LANDrop is a cross-platform tool that you can use to conveniently transfer photos, videos, and other types of files to other devices on the same local network.

LANDrop 3.4k Jan 7, 2023
modern c++(c++17), cross-platform, header-only, easy to use http framework

cinatra--一个高效易用的c++ http框架 English | 中文 目录 使用cinatra常见问题汇总(FAQ) cinatra简介 如何使用 快速示例 性能测试 注意事项 roadmap 联系方式 cinatra简介 cinatra是一个高性能易用的http框架,它是用modern

qicosmos 1.4k Dec 30, 2022