---
name: "wcurl"
section: "1"
platform: "linux"
package: "curl"
version: "8.23.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/wcurl"
---

# wcurl(1)

a simple wrapper around curl to easily download files.

## NAME

**wcurl** - a simple wrapper around curl to easily download files.

## SYNOPSIS

**wcurl \<URL\>...**

**wcurl \[--curl-options \<CURL\_OPTIONS\>\]... \[--dry-run\] \[--no-decode-filename\] \[-o\|-O\|--output \<PATH\>\] \[--\] \<URL\>...**

**wcurl \[--curl-options=\<CURL\_OPTIONS\>\]... \[--dry-run\] \[--no-decode-filename\] \[--output=\<PATH\>\] \[--\] \<URL\>...**

**wcurl -V\|--version**

**wcurl -h\|--help**

## DESCRIPTION

**wcurl** is a simple curl wrapper which lets you use curl to download files without having to remember any parameters.

Call **wcurl** with a list of URLs you want to download and **wcurl** picks sane defaults.

If you need anything more complex, you can provide any of curl's supported parameters via the **--curl-options** option. Beware that you likely should be using curl directly if your use case is not covered.

By default, **wcurl** does:

- \* Percent-encode whitespace in URLs;

  - \* Download multiple URLs in parallel

  ```
  if the installed curl's version is \>= 7.66.0 (--parallel);
  ```

- \* Use a total number of 5 parallel connections to the same protocol + hostname + port number target

  ```
  if the installed curl's version is \>= 8.16.0 (--parallel-max-host);
  ```

- \* Follow redirects;

  - \* Automatically choose a filename as output;

  - \* Avoid overwriting files

  ```
  if the installed curl's version is \>= 7.83.0 (--no-clobber);
  ```

- \* Perform retries;

  - \* Set the downloaded file timestamp

  ```
  to the value provided by the server, if available;
  ```

- \* Default to https

  ```
  if the URL does not contain any scheme;
  ```

- \* Disable curl's URL globbing parser

  ```
  so {} and [] characters in URLs are not treated specially;
  ```

- \* Percent-decode the resulting filename;

  - \* Use 'index.html' as the default filename

  ```
  if there is none in the URL, or if it is '-'.
  ```

## OPTIONS

- \--curl-options, --curl-options=\<CURL\_OPTIONS\>...

  Specify extra options to be passed when invoking curl. May be specified more than once.

- \-o, -O, --output, --output=\<PATH\>

  Use the provided output path instead of getting it from the URL. If multiple URLs are provided, resulting files share the same name with a number appended to the end (curl \>= 7.83.0). If this option is provided multiple times, only the last value is considered.

- \--no-decode-filename

  Do not percent-decode the output filename, even if the percent-encoding in the URL was done by **wcurl**, e.g.: The URL contained whitespace.

- \--dry-run

  Do not actually execute curl, print what would be invoked.

- \-V, --version

  Print version information.

- \-h, --help

  Print help message.

## CURL\_OPTIONS

Any option supported by curl can be set here. This is not used by **wcurl**; it is instead forwarded to the curl invocation.

The value is split on whitespace (spaces, tabs and newlines) and each resulting word is passed to curl as a separate argument. Quotes and backslashes are not interpreted, so an argument containing whitespace cannot be passed this way. For example, **--curl-options='-H "Cookie: a=1; b=2"'** passes the four arguments *-H*, *"Cookie:*, *a=1;* and *b=2"* to curl, which treats the extra words as URLs to download.

To pass arguments that contain whitespace, write them to a curl config file and pass it with **--curl-options="--config \<FILE\>"**, or use curl directly.

Everything in \<CURL\_OPTIONS\> becomes part of the curl command line, so never build it from untrusted input.

## URL

URL to be downloaded. Anything that is not a parameter is considered an URL. Whitespace is percent-encoded and the URL is passed to curl, which then performs the parsing. May be specified more than once.

## EXAMPLES

Download a single file:

**wcurl example.com/filename.txt**

Download two files in parallel:

**wcurl example.com/filename1.txt example.com/filename2.txt**

Download a file passing the **--progress-bar** and **--http2** flags to curl:

**wcurl --curl-options="--progress-bar --http2" example.com/filename.txt**

Resume from an interrupted download. The options necessary to resume the download (*--clobber --continue-at -*) must be the **last** options specified in *--curl-options*. Note that the only way to resume interrupted downloads is to allow wcurl to overwrite the destination file:

**wcurl --curl-options="--clobber --continue-at -" example.com/filename.txt**

Download multiple files without a limit of concurrent connections per host (the default limit is 5):

**wcurl --curl-options="--parallel-max-host 0" example.com/filename1.txt example.com/filename2.txt**

## AUTHORS

```
Samuel Henrique \<samueloph@debian.org\>
Sergio Durigan Junior \<sergiodj@debian.org\>
and many contributors, see the AUTHORS file.
```

## REPORTING BUGS

If you experience any problems with **wcurl** that you do not experience with curl, submit an issue on GitHub: https://github.com/curl/wcurl

## COPYRIGHT

**wcurl** is licensed under the curl license

## SEE ALSO

[**curl**(1)](/curl/1.md), [**trurl**(1)](/trurl/1.md)
