wcurl(1)

๐Ÿ’… wcurl(1) โ€” the General Commands Manual, but make it cute โœจ

okay so bestie, you're reading the General Commands Manual page for wcurl, and i promise this is gonna be the most painless download tool you've ever met ๐Ÿซถ

๐ŸŒธ NAME ๐ŸŒธ

wcurl โ€” a simple wrapper around curl to easily download files. that's it. that's the whole vibe. โœจ

๐ŸŽ€ 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 that lets you use curl to download files without having to remember any of the parameters. literally the whole point. no cap. ๐Ÿ’…

You call wcurl with a list of URLs you want to download, and it picks sane defaults for you, like a friend who actually knows what they're doing ๐Ÿ˜Œ

If you need anything more complex, you can provide any of curl's supported parameters via the --curl-options option. Beware though โ€” if your use case isn't covered, you likely should be using curl directly. highkey true ๐Ÿ™ˆ

By default, wcurl does all of this:

  • 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. yes you can stack 'em ๐Ÿ”ฅ
  • -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 โ€” the rest get ghosted ๐Ÿ’€
  • --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. peek before you leap, bestie ๐Ÿ‘€
  • -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. middle-man energy, but make it useful โœจ

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. ๐Ÿ˜ญ yeah. it do be like that.

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. seriously. this is not the moment for main character energy, protect yourself ๐Ÿ’–

๐ŸŒˆ 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. drop as many as you want, queen ๐Ÿ‘‘


๐Ÿ“ 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. ily all ๐Ÿซถ

๐Ÿ‘‘ 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 โ€” pls include the deets so it can actually get fixed ๐Ÿ™

wcurl is licensed under the curl license.

๐Ÿฆ‹ SEE ALSO ๐Ÿฆ‹

curl(1), trurl(1) โ€” go read those too, iykyk ๐Ÿ’…


and that's the whole page, bestie!! this version of wcurl (version wcurl) dropped on 2026-10-25, so if your copy dates differently, that's why ๐ŸŽ€ slay, go download something ๐Ÿ’–

๐Ÿ“ฆ where this page comes from