Wget and cURL Command Builder
Build copy-ready wget and cURL download commands — headers, authentication, output paths and retry options included.
Stop guessing flags. Enter a URL, add request headers, basic auth or Bearer / API-key
credentials, choose where the file lands, and tune retries, timeouts, resume and rate
limits — the builder writes the exact command line for you in either the
wget or cURL dialect, updating live as you type. Already have a
command you don’t fully understand? Paste it into the parser below and it breaks back
into its parts. Need many files? Feed the batch builder a list of URLs (pasted or from a
local .txt file) and get a ready-to-run shell script.
Build your download command
Tip: for real credentials, prefer an environment variable or .netrc over typing the password on the command line — it ends up in your shell history.
Add any extra headers the server expects — e.g. Referer, a custom User-Agent, or a license key.
Your command
Parse an existing command
Paste a wget or cURL command you found in docs, a README or an
old script — the builder recognises its flags and fills in the form above so you can
tweak it instead of editing raw text.
Batch download from a URL list
Paste one or more URLs (one per line, # comments allowed) or choose a local
.txt file. The builder turns them into a shell script that reuses your retry,
resume and rate-limit options above. Each file keeps its remote name.
The file is read in your browser with the FileReader API and never uploaded — it flows into exactly the same pipeline as pasted text.
How it works
The builder keeps a small model of your request — URL, authentication, headers,
output path and transfer options — and re-renders the command line every time you
change anything. It translates each option into the correct flag for the selected
dialect: --tries becomes --retry, -c becomes
-C -, and so on (see the equivalence table below). Values containing spaces
or shell metacharacters are quoted automatically, using single quotes with embedded
quotes escaped, so the result is safe to paste into bash. The parser works in reverse:
it tokenises a pasted command — respecting single and double quotes — and maps
every recognised flag back onto the form. Nothing is sent anywhere; all of this is plain
JavaScript running on your machine.
Wget vs cURL — flag equivalents
| Goal | wget | cURL |
|---|---|---|
| Save to a specific file | -O file | -o file |
| Download into a directory | -P dir | --output-dir dir (7.71+), or put the path in -o |
| Resume an interrupted download | -c | -C - (needs -o) |
| Retry N times | --tries N (total attempts) | --retry N (extra retries after failure) |
| Wait between retries | --waitretry N | --retry-delay N |
| Basic authentication | --user U --password P | -u U:P |
| Custom header | --header='K: V' | -H 'K: V' |
| Follow redirects | on by default | -L |
| Rate limit | --limit-rate=512K | --limit-rate 512K |
| Custom User-Agent | --user-agent='UA' | -A 'UA' |
| Skip SSL verification | --no-check-certificate | -k |
| Timeout (seconds) | --timeout N | --connect-timeout N / --max-time N |
When to use which
Use wget for file transfer work: big downloads, interrupted transfers
you want to resume (-c), mirrors and recursive site grabs. It follows
redirects by default and its retry semantics count total attempts, which makes
--tries 3 do what you think it does. Use cURL when the
request itself matters more than the file: inspecting response headers (-I),
custom verbs and bodies, or piping the payload straight into another command. For a
plain download with auth and retries, either tool is fine — this builder keeps both
in lockstep so you can pick per environment (cURL ships on macOS by default, wget on most
Linux distros).
Common pitfalls
- Quoting. Any value with spaces or shell metacharacters (
$,&, quotes) must be quoted. This builder always single-quotes values that need it; if you edit the command by hand, keep the quotes. - Resume needs the same file on both ends.
wget -candcurl -C -resume against the local file they are writing — change the output name and you restart from zero. cURL additionally refuses to resume without-o. - Retry semantics differ. wget’s
--tries 3means 3 total attempts (1 + 2 retries); cURL’s--retry 3means 1 attempt + 3 retries. And cURL only retries transient failures (408, 429, 500–504) unless you add--retry-all-errors. - Passwords in command lines are visible. Anything on the command line shows up in your shell history and in
psoutput while it runs. For anything real, use an environment variable or a.netrcfile instead. -k/--no-check-certificateis a last resort. It turns off the check that proves you are talking to the real server. Fine for a self-signed internal endpoint; never for public downloads.