Design center
curl speaks many URL schemes (HTTP(S), SFTP, LDAP, etc.), exposes fine-grained TLS and HTTP/2 controls, and is the default choice for REST calls, OAuth token exchanges, and CI/CD health checks. wget optimizes for unattended file and site retrieval with built-in recursion, host-spanning rules, and conservative defaults for mirroring static sites.
Quick comparison
| Need | Prefer | Why |
|---|---|---|
| POST JSON to an API | curl | `-d`, `-H`, HTTP verbs, `-w` timings |
| Mirror a static documentation tree | wget | `-r -np -k` patterns, simpler robots handling |
| Resume a huge ISO | Either | curl `-C -`, wget `-c`—verify server supports Range |
| Script portability | curl | Ships on macOS; ubiquitous in containers |
Output and errors
curl defaults progress to stderr and body to stdout—ideal for pipes. wget logs linearly and creates files by default; both support quiet modes for cron jobs.
Related: Linux curl explained, what does curl do, diagnosing slow internet, public and private IP commands.