Send every browser download to aria2
Turn Chrome, Edge, Firefox or Brave into a thin client: a browser extension intercepts downloads and hands them to a local (or remote) aria2 daemon over JSON-RPC. Faster speeds, real resume, and downloads that survive closing the laptop. This is the complete setup, security and troubleshooting guide.
Last reviewed 2026-09 · aria2 v1.37.0
Before you start
- aria2 installed and running with the RPC server enabled (
aria2c --versionworks). - Chrome, Edge, Firefox or Brave.
- A browser extension that speaks aria2 JSON-RPC (next sections).
- Optional: a reverse proxy or VPN if the daemon is on another machine.
Why browsers are slow at big downloads
One socket, one speed cap
A browser download uses a single connection. If a CDN throttles that stream, you're stuck at its limit. aria2 opens up to 16 connections.
Weak resume
A dropped Wi-Fi or browser crash often restarts a download from zero. aria2 resumes byte-accurately using its continue flag and control files.
Tied to the tab
Close the browser and the download dies. aria2 runs as a daemon, so downloads continue on your PC or home server 24/7.
How interception works
The extension watches the browser's download API. When a download starts, it reads the real URL plus the current tab's cookies, Referer and User-Agent, and posts an aria2.addUri JSON-RPC call (or a magnet/torrent) to your daemon. aria2 does the actual transfer. Nothing is proxied through a third party — the request goes straight to your own machine.
That header forwarding is why protected sites (which return 403 to a bare downloader) work when the browser is signed in.
Step 1: run aria2 with the RPC server
Start aria2 with RPC enabled and a secret token. Add --rpc-allow-origin-all=true so browser clients can call it, and keep it bound to your machine's local network.
aria2c --enable-rpc --rpc-allow-origin-all=true \ --rpc-listen-all=true --rpc-secret=CHANGE_ME_STRONG_SECRET \ --continue=true --daemon=true
For a permanent install, put these into ~/.aria2/aria2.conf (Linux/macOS) or %USERPROFILE%\.aria2\aria2.conf (Windows) and run aria2 at login (systemd service, Task Scheduler, or the Docker guide).
Security: never expose port 6800 to the internet without TLS + authentication. See Remote & NAS setups.
Step 2: pick an extension
| Extension | Browsers | Notes | Link |
|---|---|---|---|
| Aria2 Explorer | Chrome, Edge, Firefox, Brave | Built-in AriaNg popup, cookie capture, size threshold. Widely used. | Chrome Web Store |
| Camtd | Chrome, Edge | Lightweight background monitor, context-menu capture, multiple RPC profiles. | GitHub |
| Userscripts (e.g. cloud-drive exporters) | Any + Tampermonkey | Site-specific: convert a cloud-drive page into direct aria2 RPC tasks. | Tampermonkey |
The exact settings screens differ per extension, but they all ask for the same four things: RPC URL, secret, capture toggle, and a minimum file size.
Step 3: configure it
- RPC URL:
http://localhost:6800/jsonrpcfor a local daemon (some extensions preferws://localhost:6800/jsonrpc). - Secret token: the same value as
--rpc-secret. - Auto-capture downloads: enable it.
- Minimum file size: set 20–50 MB so tiny images/PDFs stay in the browser.
- Cookies / headers: enable cookie and referer forwarding (the fix for 403 and login-only links).
- Download directory: optionally override aria2's
dirper capture. - Use the extension's test/connection button (or the checker below) to confirm it is connected.
Test the RPC connection
Check that this browser can reach your aria2 instance before blaming the extension:
This page calls your daemon directly from the browser, so it needs rpc-allow-origin-all=true (or the extension's method of calling). If it fails on an HTTPS page, that's the mixed-content rule — see below.
Remote & NAS setups
- Same machine: point the extension at
http://localhost:6800/jsonrpc. Nothing else to do. - LAN (e.g. a NAS at 192.168.1.50): use
http://192.168.1.50:6800/jsonrpcand setrpc-allow-origin-all=true. Keep it on the LAN only. - Over the internet: do not port-forward 6800. Put a TLS reverse proxy with authentication in front (or use a VPN / Cloudflare Tunnel). Modern browsers block a page loaded over HTTPS from calling a plain
http://RPC endpoint (mixed content) — you needhttps:///wss://.
# Nginx: authenticate + TLS + forward the RPC (and WebSocket)
location /jsonrpc {
proxy_pass http://127.0.0.1:6800/jsonrpc;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 86400;
}
Then use https://aria2.example.com/jsonrpc in the extension. Always keep a strong rpc-secret.
Troubleshooting
Downloads started in aria2 return HTTP 403 / 401
The site needs the browser session. Enable cookie/referer forwarding in the extension, or pass cookies to aria2 (--load-cookies) and a matching --user-agent/--referer.
"Mixed content" / blocked request on an HTTPS page
An HTTPS page cannot call a plain http:// RPC endpoint. Use a TLS reverse proxy (https:///wss://), a VPN, or a local page like this one served over the local network.
Extension says disconnected though aria2 is running
Verify host, port and secret; confirm aria2c --enable-rpc is running; confirm rpc-allow-origin-all=true; test with the checker above. A wrong secret returns an RPC error rather than a connection error.
It intercepts small images and PDFs
Raise the extension's minimum file size to 20–50 MB, or add the site to its exclusion list.
Downloads appear twice
The browser began its own download while the extension also captured it. Make sure "auto-capture" replaces the download (most extensions cancel the browser copy), and don't run two capturing extensions at once.
Nothing is ever intercepted
Some sites use proprietary downloaders, blob: URLs, or streaming protocols the extension can't see. For media, use yt-dlp + aria2 instead.
FAQ
Can I send work-laptop downloads to my home NAS?
Yes. Expose the RPC through a secured tunnel/reverse proxy, enter that URL in the extension, and every download runs on the NAS at full speed while your laptop stays free.
Is it safe to enable rpc-allow-origin-all?
Only if the port is not publicly reachable. It allows any web page you visit to call your RPC, so a strong secret and a private network (or authenticated proxy) are essential.
Does this work on Firefox?
Yes — Aria2 Explorer ships a Firefox build, and other integrations exist. The RPC setup is identical.
Related resources
- aria2 tools hub — WebUI, tracker list, and config generator
- Online WebUI — manage the same daemon from any browser
- Docker guide — run the daemon 24/7 on a NAS or server
- yt-dlp + aria2 — for streaming/media sites
- Troubleshooting — common aria2 errors with exact fixes
- GUIs & browser extensions — AriaNg, Motrix and other front-ends