- Category
- Developer Tools
- Rank
- No. 770Tools index
Previous survey · No. 755 ·
- Pricing
- Open Source
- Type
- TOOL
- Builder
- curl
- GitHub
- 515 stars
- Latest release
- v2026.08.30
- Date
About
Simple wrapper around curl from the curl project itself for easily downloading files with sensible defaults.
What it does
Give wcurl one or more URLs and it constructs a curl command with redirects, retries, HTTPS fallback, output naming, timestamps, and safer file handling already configured. It can run several downloads concurrently, derive readable filenames, accept extra curl flags, or print the command without executing it.
Why it's ranked here
The value is narrow but convincing. Common downloads become short commands while retaining access to curl’s broader option set. Version-aware behavior avoids requesting unsupported parallel and no-clobber features. The tested filename safeguards, dry-run mode, and conservative overwrite policy make it more than a disposable convenience script.
What's good
Defaults address practical failure points: HTTP errors fail visibly, redirects work, retries absorb transient problems, and existing files remain protected when curl supports that feature. Multiple URLs can run concurrently. Filename decoding excludes slashes, backslashes, colons, and control characters, reducing path traversal risk while preserving readable names.
Tradeoffs
Behavior depends on the installed curl version. Older releases lose parallel downloads and overwrite protection, while multiple URLs with a custom output name require newer curl. Advanced transfers still demand curl knowledge because extra flags pass through directly, and resuming requires carefully ordered options that permit overwriting the destination.
How to use it well
Use it for interactive shell work, scripts, and repeatable batches where the job is simply fetching files with predictable names and cautious defaults. Check the dry-run output before unusual transfers. Pass occasional curl flags through, but switch to curl itself when option ordering, protocol behavior, or transfer logic becomes central. It is not an application library.
Technical notes+
The wcurl executable is a POSIX shell script requiring curl 7.46.0 or newer. exec_curl() inspects the installed curl version, conditionally adds --parallel, --parallel-max-host 5, and --no-clobber, then uses exec rather than eval. percent_decode() preserves encoded control characters, /, \, and :, while get_url_filename() strips query strings and fragments before choosing an output name. tests/tests.sh uses shunit2 and primarily checks generated commands through --dry-run. .github/workflows/test.yml runs tests on Debian, Fedora, and macOS, plus shellcheck, checkbashisms, shfmt, spelling checks, workflow analysis, and REUSE validation. wcurl.md is the manpage source, with generated output in wcurl.1.
Observed
- License
- curl license
- Primary language
- POSIX shell
- Interface
- Command-line executable
- Installation surface
- Single downloadable executable script, with a separately installable manpage
- Runtime requirement
- curl 7.46.0 or newer
- Tested platforms
- Debian, Fedora, and macOS in continuous integration
- Test framework
- shunit2
Read from README.md, wcurl, AUTHORS, LICENSE, wcurl.1, wcurl.md, REUSE.toml, CHANGELOG.md, tests/tests.sh, LICENSES/curl.txt, .github/dependabot.yml, .github/workflows/test.yml, .github/workflows/requirements.txt.
What it can do
Download files from URLs
URL of file to download → Downloaded file saved to local filesystem
Download files with progress indication
URL of file to download → Downloaded file with visual progress feedback
Resume interrupted downloads
Partially downloaded file and original URL → Completed file download from interruption point
Download multiple files concurrently
Multiple URLs → Multiple downloaded files
Download files with automatic retry on failure
URL of file to download → Downloaded file after handling connection failures
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.
