A complete guide to wget / curl / aria2

Pick the right tool and flags, and downloads just work.

2026-08-24 · Tips

Choosing a tool

  • curl: script-friendly, great for single files, broad protocol support. Fits one-command downloads and ships with nearly every system
  • wget: strong recursive download and mirroring, simple resume flags. Fits directory structures and offline mirrors
  • aria2: multi-connection segmented downloads, batch queues, resume. Fits large files and many-file jobs

Rule of thumb: curl for a quick single download, wget for mirroring, aria2 for speeding up large files. All three support resume; see below for flags.

Quick parameter reference

curl -L -O                    follow redirects, save with the remote filename
curl -C - -fL --retry 3 -o F  resume, retry 3 times, save as F
wget -c -t 3 --timeout=30     resume, 3 retries, 30s timeout
wget -i urls.txt -P dir/      batch download from a list into dir/
aria2c -c -x8 -s8 -k 1M       resume, 8 connections, 8 segments, 1MB chunks

In practice: downloading a Release asset

Using the accelerated address, a robust command combines redirect following, resume, retries and timeouts:

curl -C - -fL --retry 3 --retry-delay 2 --timeout 60 \
  -o app-v1.0.zip \
  "https://ghclone.com/https://github.com/owner/repo/releases/download/v1.0/app-v1.0.zip"

After an interruption, run the same command again to continue. Once finished, check the file size and, when the publisher provides hashes, run sha256sum.

Three stability tips

  • Control concurrency: more aria2 connections is not always better; under jitter, individual segments can stall for a long time
  • Set retries and timeouts: let the tool wait and retry instead of failing fast
  • Pin versions: download tag- or commit-addressed files so resume cannot stitch mismatched content

FAQ

  • TLS or certificate errors? Usually an environment issue — update the tool or check system time; avoid skipping verification.
  • Behind a proxy? curl uses --proxy, wget reads https_proxy, aria2 takes --all-proxy.
  • Downloading many files? wget uses -i with a list; aria2 accepts multiple URLs or an input file.

← Back to blog