Ubuntu Server 25.10 dropped wget from the default install. In its place, you get wcurl. Log into a fresh server, type wget out of muscle memory, and you’ll get a message pointing you to the new tool.
So what is wcurl, really? And when does it make sense to use it over calling curl directly?
What Is wcurl?
wcurl is a curl wrapper designed to provide a wget-like user experience. Starting with curl 8.14.0, it’s bundled with the regular curl release. Ubuntu 25.10 made it the default download tool to reduce base system footprint.
Most wget usage is just downloading files. Ubuntu realized they could ship one tool (curl) with a thin wrapper (wcurl) instead of two separate binaries. The wrapper gives you wget-style ergonomics without the extra dependency.
How wcurl Works
When you run:
wcurl https://example.com/file.zip
wcurl actually executes curl with sensible defaults:
- Follows redirects automatically
- Picks appropriate filenames from URLs
- Downloads multiple URLs in parallel (up to 5 connections per host)
- Retries failed downloads
- Sets file timestamps to match server values
- Avoids overwriting existing files
Syntax Comparison: Same Task, Different Tools
Download a Single File
wcurl (wget-style):
wcurl https://example.com/data.csv
Raw curl equivalent:
curl -LO https://example.com/data.csv
Resume an Interrupted Download
wcurl:
wcurl --curl-options="--clobber --continue-at -" https://example.com/large-file.tar.gz
Raw curl:
curl -C - -LO https://example.com/large-file.tar.gz
Save with a Custom Filename
wcurl:
wcurl -O mydata.csv https://example.com/data.csv
Raw curl:
curl -L -o mydata.csv https://example.com/data.csv
Download Multiple Files
wcurl:
wcurl https://example.com/file1.zip https://example.com/file2.zip
Raw curl:
curl -LO https://example.com/file1.zip https://example.com/file2.zip
Feature Comparison
| Feature | wcurl | Raw curl |
|---|---|---|
| Simple downloads | ✅ wcurl URL | ⚠️ curl -LO URL (need flags) |
| Follow redirects | ✅ Automatic | ⚠️ Requires -L |
| Resume downloads | ✅ --curl-options | ✅ -C - flag |
| Custom headers | ❌ Not supported | ✅ -H "Header: value" |
| API debugging | ❌ Not supported | ✅ -v, -i flags |
| POST requests | ❌ Not supported | ✅ -X POST -d ... |
| Cookie handling | ❌ Not supported | ✅ -c, -b flags |
| Protocol flexibility | ❌ HTTP/HTTPS only | ✅ FTP, SFTP, IMAP, etc. |
| Unix pipelines | ❌ Outputs to file only | ✅ Can pipe to stdout |
| Recursive mirroring | ❌ Not supported | ❌ Not supported |
When to Use wcurl
Use wcurl when:
- You just need to download a file quickly
- You’re used to wget’s simplicity and don’t want to remember curl flags
- You’re on a fresh Ubuntu system and wget isn’t installed
- You’re writing simple setup scripts where readability matters more than flexibility
Real-world example:
# Quick server setup—download a config file
wcurl https://raw.githubusercontent.com/user/dotfiles/main/.bashrc
Readable and it works.
When to Use Raw curl
Use raw curl when:
- You’re debugging an API and need to see headers
- You need custom authentication headers
- You’re uploading files (POST/PUT requests)
- You want to pipe output to another tool (jq, grep, etc.)
- You need protocols beyond HTTP/HTTPS
- You’re writing complex automation scripts
Real-world example:
# Debug a failing API endpoint
curl -v -H "Authorization: Bearer $TOKEN" \
https://api.example.com/user/profile
# Download JSON and pipe to jq
curl -s https://api.example.com/data | jq '.results[]'
# Upload a file with progress
curl -T backup.tar.gz sftp://user@server.com/backups/
Migrating from wget to wcurl
If you’re used to wget, here’s a quick translation:
| wget Command | wcurl Equivalent | Raw curl Equivalent |
|---|---|---|
wget URL | wcurl URL | curl -LO URL |
wget -c URL | wcurl --curl-options="--clobber --continue-at -" URL | curl -C - -LO URL |
wget -O file URL | wcurl -O file URL | curl -L -o file URL |
wget URL1 URL2 | wcurl URL1 URL2 | curl -LO URL1 -LO URL2 |
wget --mirror URL | ❌ Not supported | ❌ Not supported |
Limitations of wcurl
wcurl is intentionally simple. It’s designed for the 80% use case (downloading files) and explicitly doesn’t try to cover curl’s full feature set.
What you can’t do with wcurl:
- Send custom HTTP headers
- Make POST/PUT/DELETE requests
- Debug with verbose output
- Handle cookies
- Use protocols other than HTTP/HTTPS
- Pipe output to other tools
- Fine-tune SSL/TLS settings
If you need any of these, use raw curl.
Ubuntu’s Shift: Why This Matters
Ubuntu Server 25.10 removed wget from the default install to reduce base system size. They introduced wcurl as part of the curl package to provide a simple download tool without the overhead of maintaining wget separately.
What this means for you:
- Fresh Ubuntu servers won’t have
wgetunless explicitly installed wcurlis available on any system with curl (which is almost everywhere)- You can install wget manually if you need recursive mirroring
- For everything else, wcurl + raw curl covers the use cases
Summary
| Use Case | Tool |
|---|---|
| Quick file downloads | wcurl |
| Simple scripts | wcurl |
| API debugging | curl |
| Custom headers/auth | curl |
| POST/PUT requests | curl |
| Unix pipelines | curl |
| Non-HTTP protocols | curl |
| Website mirroring | wget (install manually) |
The simplest way to think about it: wcurl downloads files. Curl does everything else. Pick the right one and you won’t waste time memorizing flags you’ll use once. If you live in the terminal, check out our tmux cheatsheet for managing multiple sessions.
Frequently Asked Questions
Can I use wcurl on macOS?
wcurl ships with curl 8.14.0+. Ubuntu 25.10+ has it by default. macOS has curl but not wcurl. If you want the same ergonomics, add this to your .zshrc:
alias wcurl='curl -LO --progress-bar'
Does wcurl support all curl options?
No. wcurl only supports a subset of common download options. For full curl functionality, use raw curl directly.
Is wcurl slower than curl?
No—wcurl is just a shell script that builds curl commands. The actual download performance is identical.
Should I alias wget to wcurl?
You could create an alias, but it’s better to learn the new command. If you really need wget’s advanced features (like recursive mirroring), install the real wget: sudo apt install wget
What if I need to download multiple files?
wcurl supports downloading multiple URLs in parallel (up to 5 connections per host):
wcurl https://example.com/file1.zip https://example.com/file2.zip
For recursive mirroring of entire websites, you’ll still need to install wget: sudo apt install wget
What to Read Next
- wget vs curl: When to Use Each — The foundation: understanding the two original tools
- How to Set Up SSH Keys for GitHub — Secure file transfers beyond HTTP
Related Articles
Deepen your understanding with these curated continuations.
wget vs curl: When to Use Each (Complete Guide)
Learn the real differences between wget and curl. When to use wget for downloads and site mirroring, and when to reach for curl for APIs and HTTP debugging.
Install and Configure Git on Ubuntu 26.04
Complete guide to install Git on Ubuntu 26.04. Configure user identity, generate SSH keys for GitHub/GitLab, master essential workflow commands, and customize with aliases.
Install .deb Packages on Ubuntu 26.04
Complete guide to install .deb packages on Ubuntu 26.04 using apt, dpkg, and GDebi. Handle dependencies, verify installations, and troubleshoot common errors.