curl is a command-line tool for transferring data with URLs. It supports HTTP, HTTPS, FTP, SFTP, and dozens of other protocols. It is available on virtually every Unix-like OS and Windows.
curl [options] [url]
| -o <file> | Write output to file instead of stdout. |
| -O | Save output to a file named after the remote file. |
| -L | Follow HTTP redirects (3xx responses). |
| -v | Verbose: show full request/response headers and TLS handshake. |
| -s | Silent mode: suppress progress meter and error messages. |
| -I | Fetch headers only (HTTP HEAD request). |
| -X <method> | Specify HTTP method: GET, POST, PUT, DELETE, PATCH, etc. |
| -d <data> | Send data in a POST request body. |
| -H <header> | Add a custom request header, e.g. "Authorization: Bearer TOKEN". |
| -u user:pass | HTTP Basic authentication credentials. |
| -k | Allow connections to SSL sites without certificates (insecure). |
| -c <file> | Save cookies to a file (cookie jar). |
| -b <file> | Read and send cookies from a file. |
| --compressed | Request compressed response (gzip/deflate) and decompress it. |
| --limit-rate <rate> | Limit transfer speed, e.g. 500k or 2M. |
| --retry <num> | Retry the request N times on transient failures. |
| --max-time <sec> | Maximum time allowed for the whole operation. |
| --connect-timeout | Maximum time allowed for the connection phase. |
| -A <agent> | Set the User-Agent string sent to the server. |
| --proxy <url> | Use specified proxy server. |
| -F <name=val> | Submit a multipart/form-data POST (file upload). |
| --data-urlencode | URL-encode a POST field value automatically. |
| -w <format> | Output a formatted string after completion (timing, status code, etc.). |
• Pipe output to jq for pretty-printed JSON: curl … | jq .
• Use -v with -s to see headers without the progress bar cluttering output.
• Multiple -H flags can be chained for multiple headers.
• --trace-ascii - gives the most detailed request/response dump possible.
This is an educational tool. The commands it builds are real — they will do exactly what you tell them to. Some flags are destructive (deletion, overwriting, forced operations) and even non-destructive options can cause data loss or system trouble in the wrong circumstances.
• Always review the generated command before running it.
• Test on disposable files and directories first.
• If you do not understand what a flag does, look it up in the official manual page (man command).
The author of these pages is not responsible for any damage, data loss, or other consequences resulting from commands generated, copied, or run from this site. Use at your own risk.
⚠ These tools build real shell commands. Review every command before running it. The author is not responsible for any damage, data loss, or other consequences resulting from commands generated, copied, or run from this site. Use at your own risk.
Send comments and bug reports to chris@chrisspackman.com.
Version 0.3.0 — Last updated: 2026-05-26
This page is Copyright © 2026
Chris Spackman <chris@chrisspackman.com>.
This web site developed entirely on GNU/Linux with Free / Open Source Software.
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.