curl is a command-line tool for transferring data to and from servers using URLs. It supports a wide range of protocols, allowing users to download files, upload content, interact with web services and exchange data with remote systems.
The project also develops libcurl, a client-side transfer library used by other applications. Together, curl and libcurl provide a comprehensive set of network capabilities covering HTTP requests, secure connections, authentication, proxies and automated data transfers.
curl is particularly useful for API development, system administration, scripting and troubleshooting network services. It can construct detailed requests, control how connections are established and report information about the resulting transfers.
The command-line utility and library share the same underlying transfer functionality, but serve different purposes. curl provides an interactive and scriptable interface, while libcurl allows applications to integrate network transfers directly.
This is free and open source software.
Key Features
- Supports HTTP, HTTPS, FTP, FTPS, SFTP, SCP, SMTP, IMAP, POP3 and numerous other protocols.
- Supports WebSocket connections and MQTT messaging.
- Provides HTTP/1.1, HTTP/2 and HTTP/3 support where available.
- Supports GET, POST, PUT, PATCH, DELETE and custom HTTP methods.
- Handles multipart forms, file uploads and JSON request bodies.
- Supports HTTP Basic, Digest, NTLM and Negotiate authentication.
- Provides TLS certificate verification and client certificate authentication.
- Supports HTTP, HTTPS and SOCKS proxies.
- Offers parallel transfers and persistent connection reuse.
- Supports cookies, redirects and resumable downloads.
- Provides configurable connection timeouts and transfer speed limits.
- Supports DNS-over-HTTPS and IPv6.
- Offers detailed transfer statistics, tracing and debugging output.
- Provides URL globbing and configuration file support.
- Includes libcurl for integrating network transfers into other applications.
- Supports asynchronous and non-blocking transfer operations through libcurl.
- Cross-platform support – runs on Linux, macOS, and Windows.
Website: github.com/curl/curl
Support:
Developer: Daniel Stenberg and contributors
License: curl License

curl is written in C. Learn C with our recommended free books and free tutorials.
Related Software
| Alternatives to curl | |
|---|---|
| Wget2 | Successor of Wget |
| Wget | Makes retrieving large files or mirroring entire web or FTP sites easy |
| aria2 | Multi-protocol and multi-source command-line download utility |
| HTTPie | HTTP client with an intuitive user interface |
| curlie | The power of curl, the ease of use of httpie |
| xh | Fast and friendly tool for sending HTTP requests |
| hurl | Run and test HTTP requests with plain text |
| TerminusDM | User-friendly terminal interface for managing your downloads efficiently |
| getparty | HTTP download manager with multi-parts |
| Restish | CLI for interacting with REST-ish HTTP APIs |
| Posting | Terminal-based HTTP client for developing and testing APIs |
| Slumber | Terminal-based HTTP client |
| Alternatives to Wget | |
|---|---|
| Wget2 | Successor of Wget |
| curl | Tool and library for transferring data with URLs |
| aria2 | Multi-protocol and multi-source command-line download utility |
| HTTPie | HTTP client with an intuitive user interface |
| curlie | The power of curl, the ease of use of httpie |
| xh | Fast and friendly tool for sending HTTP requests |
| hurl | Run and test HTTP requests with plain text |
| TerminusDM | User-friendly terminal interface for managing your downloads efficiently |
| getparty | HTTP download manager with multi-parts |
| Surge | Download manager built in Go |
| aria2tui | TUI client for the aria2c download utility |
| gosh-dl-cli | Modern command-line download manager built on top of the gosh-dl engine |
| Axel | Lightweight CLI download accelerator |
| Command line HTTP clients | |
|---|---|
| HTTPie | Command line interface, cURL-like tool for humans |
| aria2 | Multi-protocol and multi-source command-line download utility |
| Wget2 | Successor of Wget |
| Posting | Terminal-based HTTP client for developing and testing APIs |
| hurl | Run and test HTTP requests with plain text |
| curl | Command line tool for transferring data with URL syntax. Transfer library too |
| axel | Command-line download accelerator |
| xh | Fast and friendly tool for sending HTTP requests |
| Wget | Retrieves content from web servers |
| Restish | CLI for interacting with REST-ish HTTP APIs |
| curlie | The power of curl, the ease of use of httpie |
| Slumber | Terminal-based HTTP client |
| TerminusDM | User-friendly terminal interface for managing your downloads efficiently. |
| getparty | HTTP download manager with multi-parts |
Read our verdict in the software roundup.
LinuxLinks helps you discover the best free and open source software for Linux. Explore our extensive collection of recommended applications, including alternatives to popular proprietary software.We also publish software reviews, Linux tutorials, hardware reviews, free programming books and articles covering the wider open source community. Browse our Linux resources to discover more. Know a useful free and open source Linux application we haven't covered? Suggest a program for inclusion. Has your software been featured on LinuxLinks? Display one of our Featured on LinuxLinks badges on your website or GitHub README. |


Please read our Comment Policy before commenting.