# aria2/aria2

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/aria2-aria2).**

40,068 stars · 3,815 forks · C++ · gpl-2.0

## Links

- GitHub: https://github.com/aria2/aria2
- Homepage: https://aria2.github.io/
- awesome-repositories: https://awesome-repositories.com/repository/aria2-aria2.md

## Topics

`bittorrent` `cpp11` `download` `ftp` `http` `metalink` `rpc` `sftp`

## Description

Aria2 is a multi-protocol command-line download manager designed to maximize bandwidth utilization by retrieving files from multiple sources and protocols simultaneously. It functions as an asynchronous, event-driven engine that handles complex download lifecycles, including peer-to-peer transfers via BitTorrent, while ensuring data integrity through continuous chunk-based verification.

The utility distinguishes itself through its ability to act as a background process that can be controlled programmatically via a remote procedure call interface. This allows external applications to manage, monitor, and queue download tasks securely using authentication tokens. Furthermore, it provides robust support for resilient data transfers by maintaining binary state persistence, which enables the seamless resumption of interrupted downloads and the preservation of peer routing tables.

Beyond its core transfer capabilities, the software supports automated workflows by triggering custom shell scripts upon specific lifecycle events, such as the completion or failure of a task. Users can optimize storage and bandwidth by selectively downloading individual files from archives and configuring advanced settings for concurrency, logging, and file system interactions.

## Tags

### Web Development

- [BitTorrent Engines](https://awesome-repositories.com/f/web-development/bittorrent-engines.md) — Implements a peer-to-peer transfer engine that handles distributed hash tables and local peer discovery.
- [Download Managers](https://awesome-repositories.com/f/web-development/download-managers.md) — Retrieves files from multiple sources and protocols simultaneously to maximize bandwidth utilization.
- [Peer-to-Peer Transfer Engines](https://awesome-repositories.com/f/web-development/peer-to-peer-transfer-engines.md) — Manages complex BitTorrent transfers with support for peer discovery and selective file downloading.
- [Multi-Protocol Downloaders](https://awesome-repositories.com/f/web-development/multi-protocol-downloaders.md) — Downloads files from HTTP, FTP, and BitTorrent sources simultaneously to maximize bandwidth.
- [Download Libraries](https://awesome-repositories.com/f/web-development/download-libraries.md) — Manage file downloads by initializing sessions, setting up event callbacks, and controlling the full lifecycle of data transfers through a unified interface. ([source](https://aria2.github.io/manual/en/html/libaria2.html))

### Networking & Communication

- [Multi-Protocol Clients](https://awesome-repositories.com/f/networking-communication/multi-protocol-clients.md) — Retrieve files from multiple sources and protocols simultaneously to maximize bandwidth utilization and ensure data integrity across different network environments. ([source](https://aria2.github.io/manual/en/html/README.html))
- [Segmented Downloaders](https://awesome-repositories.com/f/networking-communication/segmented-downloaders.md) — Splits files into smaller chunks retrieved concurrently across different network protocols to maximize total bandwidth utilization and transfer speed.
- [Network Transfer Managers](https://awesome-repositories.com/f/networking-communication/network-transfer-managers.md) — Route traffic through proxy servers and verify file integrity using checksums across multiple protocols to ensure secure and accurate data movement. ([source](https://aria2.github.io/manual/en/html/aria2c.html))
- [Peer-to-Peer Clients](https://awesome-repositories.com/f/networking-communication/peer-to-peer-clients.md) — Handle peer-to-peer downloads with support for distributed hash tables and local peer discovery while maintaining custom directory structures and selective file downloads. ([source](https://aria2.github.io/manual/en/html/README.html))
- [Remote Control Interfaces](https://awesome-repositories.com/f/networking-communication/remote-control-interfaces.md) — Exposes programmatic management of download queues and task monitoring through standard procedure call protocols.
- [Remote Procedure Call Interfaces](https://awesome-repositories.com/f/networking-communication/remote-procedure-call-interfaces.md) — Exposes internal download management functions via standard network protocols to allow external applications to control and monitor tasks. ([source](https://aria2.github.io/manual/en/html/aria2c.html))
- [Selective Downloaders](https://awesome-repositories.com/f/networking-communication/selective-downloaders.md) — Inspect file contents within multi-file archives and download specific items by index to optimize bandwidth usage and save local storage space. ([source](https://aria2.github.io/manual/en/html/aria2c.html))
- [Task Schedulers](https://awesome-repositories.com/f/networking-communication/task-schedulers.md) — Submit new download requests by providing resource addresses, configuration settings, and queue positioning via standard remote procedure call methods. ([source](https://aria2.github.io/manual/en/html/aria2c.html))

### Programming Languages & Runtimes

- [Asynchronous Event Loops](https://awesome-repositories.com/f/programming-languages-runtimes/asynchronous-event-loops.md) — Processes network I/O and download lifecycle events through a non-blocking loop to manage multiple concurrent transfers efficiently.

### Data & Databases

- [Transfer State Persistence](https://awesome-repositories.com/f/data-databases/transfer-state-persistence.md) — Tracks piece availability and file length to enable seamless resumption of interrupted downloads. ([source](https://aria2.github.io/manual/en/html/technical-notes.html))
- [State Persistence](https://awesome-repositories.com/f/data-databases/state-persistence.md) — Records download progress and peer routing tables in local binary files to enable seamless resumption of interrupted network transfers.

### Development Tools & Productivity

- [Transfer Orchestrators](https://awesome-repositories.com/f/development-tools-productivity/transfer-orchestrators.md) — Executes custom scripts and manages complex download lifecycles based on real-time events.
- [Transfer Orchestration](https://awesome-repositories.com/f/development-tools-productivity/transfer-orchestration.md) — Streamlines data handling pipelines by orchestrating automated workflows around file transfers.
- [Remote Management Tools](https://awesome-repositories.com/f/development-tools-productivity/remote-management-tools.md) — Allows programmatic control and monitoring of background file transfer tasks through network interfaces.

### Testing & Quality Assurance

- [Integrity Verification](https://awesome-repositories.com/f/testing-quality-assurance/integrity-verification.md) — Validates individual data segments against checksums during the download process to ensure file accuracy before final assembly.
- [Metadata Validation](https://awesome-repositories.com/f/testing-quality-assurance/metadata-validation.md) — Verify downloaded files using chunk checksums and signatures defined in metadata to ensure data accuracy through automatic verification during the transfer process. ([source](https://aria2.github.io/manual/en/html/README.html))
- [Data Integrity Verification](https://awesome-repositories.com/f/testing-quality-assurance/data-integrity-verification.md) — Ensures accurate and uninterrupted file downloads by automatically verifying data integrity.

### System Administration & Monitoring

- [Remote Management Tools](https://awesome-repositories.com/f/system-administration-monitoring/remote-management-tools.md) — Manage download tasks programmatically using network interfaces or by running the utility as a background process to maintain control from any location. ([source](https://aria2.github.io/manual/en/html/README.html))

### Security & Cryptography

- [Access Control Systems](https://awesome-repositories.com/f/security-cryptography/access-control-systems.md) — Secure remote procedure call access by requiring a secret authorization token for all method calls to prevent unauthorized access and potential security threats. ([source](https://aria2.github.io/manual/en/html/aria2c.html))
- [Authentication Strategies](https://awesome-repositories.com/f/security-cryptography/authentication-strategies.md) — Protects remote control interfaces using authentication tokens to allow external applications to manage, pause, and monitor download queues safely over a network. ([source](https://aria2.github.io/manual/en/html/aria2c.html))
