The section your link pointed to isn't on curl's page any more, so we've brought you to the top.
A command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPSFTPSFTP with TLS/SSL encryption layered on top, standardized in RFC 4217, used by tools that need to transfer files over authenticated, encrypted channels while staying compatible with legacy FTP infrastructure., GOPHER, GOPHERS, HTTP, HTTPSHTTPSHTTP carried over an encrypted TLS connection. It protects traffic in transit and lets a browser verify the server's certificate., IMAP, IMAPS, LDAPLDAPA protocol for querying and modifying directory services, standardized under RFC 4511, commonly used to look up users, groups, and attributes in corporate identity stores like Active Directory., LDAPSLDAPSLDAP over TLS — the encrypted variant of the Lightweight Directory Access Protocol, standardized in RFC 2830, used to query directory services like Active Directory without exposing credentials in plaintext., MQTT, MQTTS, POP3, POP3S, RTSP, SCPSCPSecure Copy Protocol, a file-transfer method built on SSH that encrypts data in transit; cyber tools use it to move files to or from remote hosts without exposing credentials or content., SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. libcurl offers a myriad of powerful features
curl is an open-source command-line tool for transferring data to or from a server using URLs, released under an MIT-like license that costs nothing to use. It supports HTTP, FTP, SMTPSMTPThe application-layer protocol used to send email between servers and from clients to servers; cyber tools use it to relay alerts, phishing simulations, or exfiltrated data over standard mail infrastructure., IMAP, SCP, MQTT and dozens of other protocols, and the same underlying engine ships as the libcurl library for developers who need URL transfers built into their own software rather than invoked from a shell. That split makes it useful both to anyone scripting a data transfer at the command line and to application developers embeddingembeddingLists of numbers a model produces to represent the meaning of text, images or code, so similar items sit close together. They power semantic search and RAG. network requests in a program. It doesn't name a peer in its own documentation, since it functions as the default building block other HTTP clients and tools are written against. Its history shows the project is very much alive: first committed in 1999, with over 1500 contributors and a release cut just 58 days ago.
A command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, MQTTS, POP3, POP3S, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. libcurl offers a myriad of powerful features
Is a server actually reachable and responding the way it should?
opens the given protocol and URL directly and shows the response, headers, and any TLS or connection failure as it happens, without a browser or extra client code in between
Why did a request to this API fail before it even got an answer back?
reports the connection, TLS, or protocol error at the exact stage it occurred, so a DNS failure, certificate rejection, or timeout are distinguishable from a bad response
What is a remote server sending back, byte for byte, including the parts a browser hides?
prints headers, status line, and body separately on request, so redirects, cookies, and caching directives are visible instead of silently handled
Is a slow or dropped connection a network problem or an application problem?
separates timing and retries at the transport level from what the server returns, and can trace QUIC or TCP-level connection behavior when HTTP-level symptoms alone don't explain a failure
116 capabilities
· 2 backed by code, an API document or a real run
Built from curl's releases, docs, README and our own runs.
“Seen” marks the month we first spotted a release the vendor didn't date.
Group names and tags are our labels.
+Authentication mechanismsshippedSupports various authentication protocols including GSS-Negotiate, NTLM, and Digest, with a pick-best option.34 releases · 2 other sources · first seen Jul 2003▸
Also counts toward: Command-line interface
release
34 total
Adds --tls-srp and --tls-srp-username flags to configure TLS-SRP authentication parameters.
curl-8_11_0 · Nov 2024
· source
· release history
New digest hashing support for SHA-512/256
8.7.0 · Mar 2024
· source
· release history
SHA-512/256 support for digest authentication
8.7.0 · Mar 2024
· source
· release history
Adds % character handling in URL-encoding to allow percent-encoded strings in header values and authentication data.
curl-7_81_0 · Jan 2022
· source
· release history
Adds --tlsuser and --tlspassword flags to specify credentials for GSS-API authentication in TLS channels.
curl-7_52_0 · Dec 2016
· source
· release history
Implements the EXTERNAL SASL authentication mechanism, enabling external identity-based authentication across supported protocols.
7.41.0 · Feb 2015
· source
· release history
example
Test server TLS-SRP authentication support by providing username and password directly via CLI.$ curl --tls-srp 1234567890abcdef --tls-srp-username testuser https://example.com/
curl-8_11_0 · Nov 2024
· source
Connect to an SMTP server using TLS and authenticate via GSS-API (Kerberos) for the STARTTLS command.$ curl --tlsuser 'admin' --tlspassword 'secret' smtps://mail.example.com
curl-7_52_0 · Dec 2016
· source
+Multi-protocol supportshippedHandles connection lifecycle operations — including post-transfer actions and disconnect handling — across protocols such as FTP, SFTP, SCP, SMTP, IMAP, and POP3.25 releases · 1 other source · first seen Aug 1997▸
release
25 total
Adds mqtt experimental protocol support
7.70.0 · Apr 2020
· source
· release history
Enables the use of WolfSSH as a new SSH backend for curl, allowing SSH connections through this specific library instead of libssh2 or libssh.
7.69.0 · Mar 2020
· source
· release history
Adds a new libssh-powered backend for SSH, enabling native SCP and SFTP transfers without requiring an external sftp binary.
7.58.0 · Jan 2018
· source
· release history
Added support for HTTP over unix domain sockets via --unix-socket flag and CURLOPT_UNIX_SOCKET_PATH option
7.40.0 · Jan 2015
· source
· release history
Adds initial support for the SMB/CIFS protocol
7.40.0 · Jan 2015
· source
· release history
Adds imap: Added support for the list command to query mailbox contents via IMAP
7.30.0 · Apr 2013
· source
· release history
docs
The DONE operation (post transfer protocol-specific actions) for the protocols SFTP, SCP, SMTP, IMAP, FTP. Fixing The protocol disconnect handlers for FTP, IMAP, POP3, SMTP, SCP and SFTP, when a connection is closed instead of kept for reuse.
seen Oct 2026
· source
+HTTP POST / form data submissionshippedSends data to a server using HTTP POST with application/x-www-form-urlencoded encoding, mimicking browser form submission.21 releases · 4 other sources · first seen Mar 1998▸
Also counts toward: Command-line interface
release
21 total
IMAP protocol gains CURLOPT_UPLOAD_FLAGS and corresponding --upload-flags CLI flag for fine-grained upload control.
8.13.0 · Apr 2025
· source
· release history
Adds --mail-from, --mail-rcpt, and --mail-rcpt-async options to send emails via SMTP
curl-8_3_0 · Sep 2023
· source
· release history
Adds --url-query CLI option to append query parameters to the URL.
7.87.0 · Dec 2022
· source
· release history
Add --url-query command line option to pass query parameters without escaping them
7.87.0 · Dec 2022
· source
· release history
Adds --json CLI option for sending JSON data in requests
7.82.0 · Mar 2022
· source
· release history
Introduces CURLOPT_REQUEST_TARGET option in libcurl to set the request target programmatically.
7.55.0 · Aug 2017
· source
· release history
docs
(HTTP MQTT) Send the specified data to a server. For HTTP(S), this is done with the POST method in the same way that a browser does when a user has filled in an HTML form and presses the submit button. This option makes curl pass the data to the server using the content-type application/x-www-form-urlencoded.
docs update · Aug 2026
· source
Command-line tool for transferring data to or from servers using URLs, supporting protocols including HTTP, FTP, SMTP, SFTP, and many more.
example
Create a remote IMAP mailbox for archiving.$ curl imap://imap.example.com/mkdir?"Archive/2023" --user username:password
curl-8_3_0 · Sep 2023
· source
Send a POST request with JSON content type and body using the new flag.$ curl --json '{"key": "value"}' https://example.com/api
7.82.0 · Mar 2022
· source
+Configuration file URL specificationshippedPermits defining default or context-specific URLs within configuration files to simplify command-line usage.17 releases · 8 other sources · first seen Dec 2000▸
release
17 total
-w '%{num_retries}' write-out variable to display connection retry count
8.9.1 · Jul 2024
· source
· release history
--ip-tos flag for setting IP Type of Service / Traffic Class
8.9.1 · Jul 2024
· source
· release history
--vlan-priority flag for setting VLAN priority in network frames
8.9.1 · Jul 2024
· source
· release history
Adds --mptcp CLI flag to enable Multipath TCP support
8.9.0 · Jul 2024
· source
· release history
Adds --vlan-priority CLI flag to set VLAN priority
8.9.0 · Jul 2024
· source
· release history
example
8 total
Force curl to use Multipath TCP for better throughput or resilience.$ curl --mptcp https://example.com
8.9.1 · Jul 2024
· source
Set DSCP values for QoS prioritization on a request.$ curl --ip-tos cs6 https://example.com
8.9.1 · Jul 2024
· source
Set DSCP values and enable Multipath TCP for a specific host$ curl --ip-tos 0x2c --mptcp http://example.com
8.9.0 · Jul 2024
· source
Retrieve the connection ID after a transfer using libcurl API.$ curl_easy_getinfo(handle, CURLINFO_CONN_ID, &conn_id)
8.2.0 · Jul 2023
· source
Extract the final resolved URL and port from a transfer using the new write-out variables.$ curl --write-out 'Final URL: %{url_effective}\nPort: %{port_num}\n' -o /dev/null https://example.com
8.1.0 · May 2023
· source
Check the number of certificates in a chain to verify intermediate CA presence.$ curl -w '%{num_certs}\n' --silent https://example.com > /dev/null
7.88.1 · Feb 2023
· source
+SSL/TLS backend supportshippedLinks against SSL/TLS libraries (AWS-LC, BoringSSL, OpenSSL) to provide encrypted transport, with version compatibility requirements for static linking.19 releases · 3 other sources · first seen Dec 1997▸
Also counts toward: Command-line interface
release
19 total
Adds the --sigalgs CLI flag and CURLOPT_SSL_SIGNATURE_ALGORITHMS option to configure TLS signature algorithms explicitly.
8.14.1 · Jun 2025
· source
· release history
Supports ECH (Encrypted Client Hello)GreaseEnabled config for improved TLS privacy.
curl-8_14_0 · May 2025
· source
· release history
Supports using keys and certificates from PKCS#11 provider via OpenSSL (from v8.12.0)
8.12.1 · Feb 2025
· source
· release history
Adds TLS curve selection via CLI --curves flag or CURLSHOPT_SSL_CTX/CURLOPT_SSL_EC_CURVES option
7.73.0 · Oct 2020
· source
· release history
The polarssl backend has been removed; builds relying on it must migrate to another SSL/TLS library.
7.69.0 · Mar 2020
· source
· release history
Adds BearSSL vtls backend implementation as a TLS alternative
7.68.0 · Jan 2020
· source
· release history
docs
# For AWS-LC/BoringSSL/OpenSSL. In general, you need to the SSL/TLS layer's # transitive dependencies if you are linking statically.
seen Oct 2026
· source
from 1.0.0 on are expected to work, using the latest versions often brings functional and performance improvements. OpenSSL 3.5.0+ requires 1.12.0+. Earlier versions do not work.
seen Oct 2026
· source
example
Explicitly configure TLS signature algorithms for a handshake.$ curl --sigalgs 'RSA-PSS+SHA256:ECDSA+P-384' https://example.com
8.14.1 · Jun 2025
· source
+HTTP/3 protocol supportshippedEnables connection and data transfer operations using the HTTP/3 protocol.11 releases · 6 other sources · first seen Sep 2019▸
Also counts toward: Command-line interface
release
11 total
Adds CURLSSLOPT_EARLYDATA to enable QUIC 0RTT with GnuTLS (from v8.12.0)
8.12.1 · Feb 2025
· source
· release history
enable 0RTT (Early Data) for QUIC connections when using GnuTLS via the new CURLSSLOPT_EARLYDATA flag.
8.12.0 · Feb 2025
· source
· release history
--h3 (and -0) now respect the H3PRIORIZE environment variable to control whether HTTP/2 or HTTP/3 is prioritized when both are available.
curl-8_2_0 · Jul 2023
· source
· release history
--http3-only: force curl to use HTTP/3 only, disabling fallback to HTTP/2 or lower versions.
7.88.1 · Feb 2023
· source
· release history
Adds --http3-only CLI flag to force HTTP/3
7.88.0 · Feb 2023
· source
· release history
Adds support for HTTP/3 even when not using OpenSSL or Quictls
curl-7_88_0 · Feb 2023
· source
· release history
example
Test a server that supports the newer QUIC v2 specification.$ curl --quic2 https://example.com
curl-8_17_0 · Nov 2025
· source
Send Early Data for QUIC connections with GnuTLS to reduce latency.$ curl --quic --sslopt 'early_data' https://example.com
8.12.0 · Feb 2025
· source
Prioritize HTTP/3 over HTTP/2 for all curl commands without changing the CLI flag every time.$ H3PRIORIZE=1 curl --h3 https://example.com
curl-8_2_0 · Jul 2023
· source
Ensure your tool exclusively uses HTTP/3 for a specific endpoint, failing if unavailable.$ curl --http3-only https://example.com
7.88.1 · Feb 2023
· source
Use the libcurl C API to programmatically restrict requests to HTTP/3 only.$ curl_easy_setopt(easyhandle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_3ONLY);
7.88.0 · Feb 2023
· source
Force curl to only connect via HTTP/3, failing if the server does not support it.$ curl --http3-only https://example.com
7.88.0 · Feb 2023
· source
+Interface bindingshippedEnables binding outgoing network connections to a specific local network interface or source address.11 releases · first seen Sep 2000▸
Also counts toward: Command-line interface
release
11 total
The gskit library support is removed, so builds using it will fail unless disabled or switched to a different TLS backend.
8.3.0 · Sep 2023
· source
· release history
Adds --abstract-unix-socket CLI flag and CURLOPT_ABSTRACT_UNIX_SOCKET library option to connect via abstract namespace Unix domain sockets
7.53.0 · Feb 2017
· source
· release history
Adds support for resolving DNS via IPv6 DNS64/NAT64 networks on OS X and iOS through the resolve feature.
7.50.0 · Jul 2016
· source
· release history
Adds --http2-prior-knowledge CLI flag to use HTTP/2 without HTTPS upgrade negotiation
7.49.0 · May 2016
· source
· release history
Adds --http2_tls option (CURL_HTTP_VERSION_2TLS) to enable HTTP/2 strictly for HTTPS connections
7.47.0 · Jan 2016
· source
· release history
Adds --metalink command-line flag to support Metalink protocol downloads
7.27.0 · Jul 2012
· source
· release history
+GSKit SSL backend supportshippedLinks against the GSKit library to provide encrypted transport for OS400 systems.7 releases · 4 other sources · first seen Aug 2013▸
release
7 total
Adds --header{name} experimental format to -w for single-header retrieval in shell scripts
7.83.1 · May 2022
· source
· release history
Adds --header_json experimental format to -w for structured header access in shell scripts
7.83.1 · May 2022
· source
· release history
Adds %{header{name}} and %{header_json} to the -w write-out format for extracting response headers via the CLI
7.83.0 · Apr 2022
· source
· release history
Adds %{header_json} format support in -w to output HTTP headers as JSON.
7.83.0 · Apr 2022
· source
· release history
Adds %{header{name>} experimental support in -w to retrieve specific header values.
7.83.0 · Apr 2022
· source
· release history
CURLOPT_DNS_USE_GLOBAL_CACHE option removed.
7.65.0 · May 2019
· source
· release history
example
Access headers from within a C application using the new library API.$ const struct curl_header *h = curl_easy_header(easy, "Content-Type", NULL, CURLHEADER_UNIFIED); if (h) printf("%s\n", h->value);
7.83.1 · May 2022
· source
Dump all headers as JSON for easy parsing by jq or other tools.$ curl -s -w '%header_json' -o /dev/null https://example.com | jq .
7.83.1 · May 2022
· source
Extract the Content-Type header into a variable without parsing messy text output.$ content_type=$(curl -s -w '%header{Content-Type}' -o /dev/null https://example.com)
7.83.1 · May 2022
· source
Parse the full set of HTTP headers as JSON for log analysis or further processing.$ curl -w '%{header_json}' -o /dev/null https://example.com
7.83.0 · Apr 2022
· source
+SSL/TLS certificate validationshippedValidates SSL/TLS certificates by supporting Certificate Revocation Lists (CRL) and issuer certificate checks.11 releases · first seen Sep 2008▸
Also counts toward: Command-line interface
release
11 total
Allows optional use of Windows' CA store on Windows with OpenSSL backend via CURLOPT_SSL_OPTIONS.
7.71.0 · Jun 2020
· source
· release history
Adds --ssl-revoke-best-effort CLI flag for SSL certificate revocation checks
7.70.0 · Apr 2020
· source
· release history
Adds CURLOPT_CERTINFO support for the Schannel SSL backend on Windows to allow certificate chain inspection.
7.50.0 · Jul 2016
· source
· release history
Adds --ssl-no-revoke to curl CLI to disable certificate revocation checks
7.44.0 · Aug 2015
· source
· release history
Adds CURLOPT_SSL_VERIFYSTATUS libcurl API for enabling OCSP stapling verification in code.
7.41.0 · Feb 2015
· source
· release history
Adds the --cert-status command-line option to request OCSP certificate status checks.
7.41.0 · Feb 2015
· source
· release history
+Verbose outputverifiedEnables detailed output of request and response activity via a verbose option.9 releases · 1 other source · first seen Aug 1997▸
release
9 total
Adds --negotiate flag and CURLOPT_HTTPAUTH CURLAUTH_GSSNEGOTIATE for GSS-Negotiate authentication support
7.10.6 · Jul 2003
· source
· release history
Adds --ntlm flag and CURLOPT_HTTPAUTH CURLAUTH_NTLM for NTLM authentication support
7.10.6 · Jul 2003
· source
· release history
Adds --digest flag and CURLAUTH_DIGEST support, including --anyauth pick-best option
7.10.6 · Jul 2003
· source
· release history
Adds --max-redirs option and CURLOPT_MAXREDIRS libcurl option to limit redirect counts
7.5 · Dec 2000
· source
· release history
Adds automatic Referer header setting when following Location: redirects (auto referer feature)
7.1 · Aug 2000
· source
· release history
Adds a current speed field to the progress meter showing the average speed over the last 5 seconds
4.6 · Jul 1998
· source
· release history
command line
--verbose — option is named `verbose.d`.
curl-8_7_0 · Mar 2024
· command-line history
+Programmatic Header AccessshippedProvides API functions and CLI format strings to programmatically access or extract specific HTTP headers from request/response data.6 releases · 4 other sources · first seen Mar 2022▸
Also counts toward: Command-line interface, JSON data export
release
Adds --header{name} experimental format to -w for single-header retrieval in shell scripts
7.83.1 · May 2022
· source
· release history
Adds --header_json experimental format to -w for structured header access in shell scripts
7.83.1 · May 2022
· source
· release history
Adds %{header{name}} and %{header_json} to the -w write-out format for extracting response headers via the CLI
7.83.0 · Apr 2022
· source
· release history
Adds %{header_json} format support in -w to output HTTP headers as JSON.
7.83.0 · Apr 2022
· source
· release history
Adds %{header{name>} experimental support in -w to retrieve specific header values.
7.83.0 · Apr 2022
· source
· release history
Removes support for the mesalink library
7.82.0 · Mar 2022
· source
· release history
example
Access headers from within a C application using the new library API.$ const struct curl_header *h = curl_easy_header(easy, "Content-Type", NULL, CURLHEADER_UNIFIED); if (h) printf("%s\n", h->value);
7.83.1 · May 2022
· source
Dump all headers as JSON for easy parsing by jq or other tools.$ curl -s -w '%header_json' -o /dev/null https://example.com | jq .
7.83.1 · May 2022
· source
Extract the Content-Type header into a variable without parsing messy text output.$ content_type=$(curl -s -w '%header{Content-Type}' -o /dev/null https://example.com)
7.83.1 · May 2022
· source
Parse the full set of HTTP headers as JSON for log analysis or further processing.$ curl -w '%{header_json}' -o /dev/null https://example.com
7.83.0 · Apr 2022
· source
+SOCKS proxy support with IPv6shippedEnables using SOCKS proxies even when the library is compiled with IPv6 support.9 releases · first seen Aug 2004▸
Also counts toward: Command-line interface
release
9 total
Introduces CURLOPT_SOCKS5_AUTH option in libcurl for programmatic SOCKS5 authentication control.
7.55.0 · Aug 2017
· source
· release history
Adds --socks5-basic and --socks5-gssapi flags to curl CLI to control SOCKS5 authentication methods.
7.55.0 · Aug 2017
· source
· release history
Adds support for IPv6 connections through SOCKSv5 proxies
7.28.0 · Oct 2012
· source
· release history
Recognizes [protocol]:// prefix in proxy hosts for socks4, socks4a, socks5, or socks5h protocols to simplify proxy configuration without manual --proxy-type flags.
7.21.7 · Jun 2011
· source
· release history
Adds --socks5-gssapi-service and --socks5-gssapi-nec CLI options (and corresponding CURLOPT_* settings) for SOCKS5 GSSAPI configuration
7.19.4 · Mar 2009
· source
· release history
--socks4a proxy support (CURLPROXY_SOCKS4A in libcurl)
7.18.0 · Jan 2008
· source
· release history
+HSTS enforcementverifiedEnables HTTP Strict Transport Security (HSTS) with a file-backed cache for tracking HSTS hosts.6 releases · 2 other sources · first seen Jan 2016▸
release
Adds HSTS_CTRL and NO_HSTS options to the .curlrc file for HSTS cache management
curl-8_8_0 · May 2024
· source
· release history
Adds HSTS sharing via CURLSHOPT_HSTS_SHARE for coordinated cache management
8.0.0 · Mar 2023
· source
· release history
Updates the built-in HSTS (HTTP Strict Transport Security) preload list
curl-7_88_0 · Feb 2023
· source
· release history
Adds --enable-hsts default to enable HTTP Strict Transport Security by default
7.77.0 · May 2021
· source
· release history
Adds --hsts option to enable HSTS behavior on the command line.
curl-7_52_0 · Dec 2016
· source
· release history
Adds --expect100-timeout CLI argument to control the wait time for a 100-continue response
7.47.0 · Jan 2016
· source
· release history
command line
--hsts — - enable HSTS, use the file as HSTS cache. If filename
curl-8_11_1 · Dec 2024
· command-line history
example
Share HSTS cache between multiple libcurl handles in C code$ CURLSHcode res = curl_share_init(); curl_share_setopt(res, CURLSHOPT_HSTS_SHARE, h);
8.0.0 · Mar 2023
· source
+Proxy tunnelingshippedSupports establishing non-HTTP protocols (such as FTP or SMTP) via an HTTP proxy using the CONNECT method.8 releases · first seen Sep 2000▸
Also counts toward: Command-line interface
release
8 total
Adds CURLOPT_SUPPRESS_CONNECT_HEADERS option to suppress proxy CONNECT response headers programmatically.
7.54.0 · Apr 2017
· source
· release history
Adds --suppress-connect-headers flag to omit proxy CONNECT response headers from output.
7.54.0 · Apr 2017
· source
· release history
Supports HTTPS proxies and SOCKS+HTTP(S) proxy configurations via existing proxy flags.
7.52.0 · Dec 2016
· source
· release history
Adds --connect-to <host:port:target-host:target-port> option to redirect requests to a different address
7.49.0 · May 2016
· source
· release history
CURLOPT_PROXY_TRANSFER_MODE option added
7.18.0 · Jan 2008
· source
· release history
Adds CURLOPT_PROXYAUTH option to allow different authentication methods on proxies
7.10.7 · Aug 2003
· source
· release history
+TLS 1.3 supportshippedEnables explicit negotiation of TLS version 1.3 for secure connections.7 releases · first seen Dec 2016▸
Also counts toward: Command-line interface
release
7 total
Adds --tls-use-sha256 to enforce SHA-256 in TLS 1.3 key derivation.
curl-8_11_0 · Nov 2024
· source
· release history
TLS: add support for ECH (Encrypted Client Hello)
8.8.0 · May 2024
· source
· release history
Add TLS 1.3 support to the Windows Schannel backend
7.85.0 · Aug 2022
· source
· release history
Adds --tls13-ciphers and --proxy-tls13-ciphers CLI arguments to specify allowed TLS 1.3 ciphersuites for the connection and proxy respectively
7.61.0 · Jul 2018
· source
· release history
Adds CURLOPT_TLS13_CIPHERS and CURLOPT_PROXY_TLS13_CIPHERS library options to configure TLS 1.3 ciphers programmatically
7.61.0 · Jul 2018
· source
· release history
Adds --tlsv1.3 option to explicitly force TLS version 1.3 for a connection.
7.52.0 · Dec 2016
· source
· release history
+Retry with server-controlled delayshippedHonours the Retry-After response header to determine when to issue the next retry, allowing the server to override the configured retry delay, with an option to cap the total retry time.5 releases · 2 other sources · first seen Dec 2001▸
release
Add --enable-windows-unicode autotools option for Windows builds in curl 8.10.0.
8.10.1 · Sep 2024
· source
· release history
Adds -w '%{num_retries}' write-out variable to report retry counts
8.9.0 · Jul 2024
· source
· release history
Adds --retry-all-errors option to retry on any error, not just transient network issues.
7.71.0 · Jun 2020
· source
· release history
Adds --retry-connrefused to automatically retry connections that are refused by the target server.
7.52.0 · Dec 2016
· source
· release history
Adds CURLINFO_STARTTRANSFER_TIME info option to retrieve transfer start time details.
7.9.2 · Dec 2001
· source
· release history
docs
curl complies with the Retry-After: response header if one was present to know when to issue the next retry (added in 7.66.0). That means the server can override the retry delay. To handle server retry delays that may be longer than expected, you can use to limit the total retry time.
seen Oct 2026
· source
example
Track how many times curl retried the connection in a script$ curl -w "Retries: %{num_retries}" http://example.com
8.9.0 · Jul 2024
· source
+Custom output formattingshippedAllows users to specify a custom format string for outputting specific metadata or variables after a request completes.7 releases · first seen Mar 2000▸
release
7 total
Adds the CURLINFO_SIZE_DOWNLOAD_T info option for retrieving download sizes as 64-bit values across all protocols
curl-8_10_0 · Sep 2024
· source
· release history
Adds CURLINFO_EFFECTIVE_METHOD as a new info option to retrieve the HTTP method used in the last request
7.72.0 · Aug 2020
· source
· release history
Adds %{method} to the -w write-out variables to expose the HTTP method of the request in curl's output formatting
7.72.0 · Aug 2020
· source
· release history
Adds support for generating JSON output using the %{json} writeout format
7.70.0 · Apr 2020
· source
· release history
Adds %{http_version} curl-format placeholder to display the HTTP version in output formatting.
7.50.0 · Jul 2016
· source
· release history
-w format variable http_connect outputs the proxy's response code to a CONNECT request.
7.13.0 · Feb 2005
· source
· release history
+HTTP/2 multiplexingshippedAllows multiple concurrent HTTP requests to be sent over a single TCP connection, improving performance and reducing latency.6 releases · 1 other source · first seen Oct 2018▸
Also counts toward: Command-line interface
release
Adds --proxy-http2 flag (and CURLPROXY_HTTPS2) to allow curl to use an HTTPS proxy that speaks HTTP/2 for the connection to the remote server.
8.1.2 · May 2023
· source
· release history
Adds support for --http2 over HTTPS proxies (https-proxy), enabling HTTP/2 multiplexing through an intermediate proxy server.
curl-8_1_0 · May 2023
· source
· release history
Implements the underlying protocol logic to tunnel HTTP/2 traffic correctly when using https-proxy, resolving previous limitations where H2 was ignored or failed.
curl-8_1_0 · May 2023
· source
· release history
Adds --proxy-http2 option (and CURLPROXY_HTTPS2 enum) to connect to an HTTPS proxy using HTTP/2
8.1.0 · May 2023
· source
· release history
Changes default HTTP version selection to CURL_HTTP_VERSION_2TLS when built with h2 support, preferring HTTP/2 if the server supports it over TLS.
7.62.0 · Oct 2018
· source
· release history
Enables HTTP/2 multiplexing by default when using the H2 backend.
7.62.0 · Oct 2018
· source
· release history
example
Use HTTP/2 multiplexing through an HTTPS proxy to accelerate multiple concurrent requests to a backend server.$ curl --http2 -x https://proxy.example.com:443 https://target.com/
curl-8_1_0 · May 2023
· source
+Multi-transfer failovershippedAllows continuing to the next URL in a sequence when one transfer fails, rather than aborting.4 releases · 2 other sources · first seen Aug 2004▸
release
Adds CURLINFO_CONN_ID and CURLINFO_XFER_ID libcurl info options for connection and transfer tracking
8.2.1 · Jul 2023
· source
· release history
libcurl adds CURLINFO_CONN_ID and CURLINFO_XFER_ID info IDs to retrieve connection and transfer identifiers.
8.2.0 · Jul 2023
· source
· release history
Adds --fail-early to abort immediately on first error instead of continuing to drain the stream.
7.52.0 · Dec 2016
· source
· release history
Adds curl tool ability to continue with the next URL if one transfer fails
7.12.1 · Aug 2004
· source
· release history
example
Retrieve connection and transfer IDs in a libcurl application for monitoring.$ CURLcode res = curl_easy_getinfo(handle, CURLINFO_CONN_ID, &conn_id); res = curl_easy_getinfo(handle, CURLINFO_XFER_ID, &xfer_id);
8.2.1 · Jul 2023
· source
+ALPN and NPN negotiation controlshippedAllows disabling Application-Layer Protocol Negotiation (ALPN) and Next Protocol Negotiation (NPN) during the TLS handshake to force server fallback to older protocol selection methods or debug TLS negotiation issues.3 releases · 2 other sources · first seen Dec 2016▸
Also counts toward: Command-line interface
release
Adds --no-alpn flag to disable ALPN negotiation for HTTPS connections
curl-8_17_0 · Nov 2025
· source
· release history
Adds --no-alpn flag to disable Application-Layer Protocol Negotiation (ALPN) during TLS handshake.
curl-7_52_0 · Dec 2016
· source
· release history
Adds --no-npn flag to disable Next Protocol Negotiation (NPN) during TLS handshake.
curl-7_52_0 · Dec 2016
· source
· release history
example
Force HTTP/1.1 or HTTP/2 by disabling ALPN to avoid automatic protocol selection.$ curl --no-alpn https://example.com
curl-8_17_0 · Nov 2025
· source
Disable ALPN to force the server to fall back to NPN or older protocol selection methods, useful for debugging specific TLS negotiation issues.$ curl --no-alpn https://example.com
curl-7_52_0 · Dec 2016
· source
+Native OS certificate store supportshippedAllows using the operating system's native CA certificate store instead of bundled certificates.3 releases · 2 other sources · first seen Jul 2023▸
Also counts toward: Command-line interface
release
Adds --ca-native (and CURLOPT_CA_NATIVE) support on more platforms for using the OS native CA store.
curl-8_14_0 · May 2025
· source
· release history
Adds --ca-native and --proxy-ca-native options to curl for using the native OS certificate store
8.2.1 · Jul 2023
· source
· release history
curl gains --ca-native and --proxy-ca-native CLI options to use the system's native CA store instead of bundled certificates.
8.2.0 · Jul 2023
· source
· release history
example
Use the native OS certificate store for curl commands without manual CA bundle configuration.$ curl --ca-native --proxy-ca-native https://example.com
8.2.1 · Jul 2023
· source
Use the OS default certificates for a request to avoid bundle issues.$ curl --ca-native https://example.com
8.2.0 · Jul 2023
· source
+DSCP and VLAN priority configurationshippedAllows setting Differentiated Services Code Point (DSCP) values and VLAN priorities on outgoing network frames to influence network QoS.4 releases · 1 other source · first seen Jul 2024▸
Also counts toward: Command-line interface
release
--ip-tos flag for setting IP Type of Service / Traffic Class
8.9.1 · Jul 2024
· source
· release history
--vlan-priority flag for setting VLAN priority in network frames
8.9.1 · Jul 2024
· source
· release history
Adds --vlan-priority CLI flag to set VLAN priority
8.9.0 · Jul 2024
· source
· release history
Adds --ip-tos CLI flag to set IP Type of Service / Traffic Class
8.9.0 · Jul 2024
· source
· release history
example
Set DSCP values for QoS prioritization on a request.$ curl --ip-tos cs6 https://example.com
8.9.1 · Jul 2024
· source
+File outputshippedAllows writing the response body to a local file instead of standard output.5 releases · first seen Aug 1997▸
Also counts toward: Command-line interface
release
Adds the RELOAD subcommand to CURLOPT_COOKIELIST for reloading cookies from disk
7.39.0 · Nov 2014
· source
· release history
Adds --proxy-header flag to set custom headers for proxy-only connections via new CURLOPT_PROXYHEADER API
7.37.0 · May 2014
· source
· release history
-X long option renamed to --request to support full command strings for FTP
6.4 · Jan 2000
· source
· release history
-D/--dump-header now stores HTTP headers separately in the specified file.
5.7 · Apr 1999
· source
· release history
Adds -o <file> option to write response body directly to a local file instead of stdout
2.3 · Aug 1997
· source
· release history
+IPv4/IPv6 resolution controlshippedForces DNS resolution to use specific IP versions via configuration or command-line flags.5 releases · first seen Nov 2003▸
Also counts toward: Command-line interface
release
c-ares: Add support for various DNS binding options
7.33.0 · Oct 2013
· source
· release history
Adds support for SASL initial response in imap/pop3/smtp via both URL syntax and CURLOPT_USERPWD
7.31.0 · Jun 2013
· source
· release history
Adds CURLOPT_ADDRESS_SCOPE option and URL scope parsing according to RFC4007 for IPv6 link-local addresses
7.19.0 · Sep 2008
· source
· release history
Adds --raw, --ftp-ssl-ccc-mode, --pubkey, and --key command-line flags for raw transfer and SSH public key authentication.
7.16.2 · Apr 2007
· source
· release history
Adds CURLOPT_IPRESOLVE with -4/--ipv4 and -6/--ipv6 CLI options
7.10.8 · Nov 2003
· source
· release history
+FTP over SSL/TLS supportshippedEnables encrypted control connections for FTP by supporting explicit SSL/TLS negotiation via CLI or API.5 releases · first seen Jan 2004▸
Also counts toward: Command-line interface
release
Extends --ftp-ssl-control functionality to now be honored on ftps:// URLs.
7.16.2 · Apr 2007
· source
· release history
Adds --ftp-ssl-control command-line option for explicit FTP SSL control channel management.
7.16.0 · Oct 2006
· source
· release history
Adds --ftp-ssl-reqd to require FTP over TLS/SSL for transfers
7.15.5 · Aug 2006
· source
· release history
Negotiates FTPS data connection SSL earlier when using PASV mode
7.14.1 · Sep 2005
· source
· release history
Adds --ftp-ssl CLI option to enable SSL over FTP using CURLOPT_FTPSSL or the ftps:// protocol
7.11.0 · Jan 2004
· source
· release history
+DNS-over-HTTPS supportshippedEnables DNS resolution via HTTPS instead of traditional UDP, allowing for encrypted and potentially more reliable name lookups.4 releases · first seen Oct 2018▸
Also counts toward: Command-line interface
release
Adds support for DNS-over-HTTPS (DoH) over HTTP/3 transports via the --doh-over-http3 flag
curl-8_15_0 · Jul 2025
· source
· release history
Adds CURLOPT_DOH_URL library function to configure DNS-over-HTTPS programmatically.
7.62.0 · Oct 2018
· source
· release history
Adds --doh-url command-line option to enable DNS-over-HTTPS queries for name resolution.
7.62.0 · Oct 2018
· source
· release history
+Custom DNS resolutionshippedPermits overriding the system DNS resolver to map hostnames to specific IP addresses for testing or debugging.3 releases · 1 other source · first seen Dec 2010▸
Also counts toward: Command-line interface
release
Adds --resolve option to override DNS resolution with a specific IP address.
curl-8_11_0 · Nov 2024
· source
· release history
curl now supports setting name servers via CURLOPT_DNS_SERVERS if the platform allows it
7.24.0 · Jan 2012
· source
· release history
Adds --resolve CLI flag and CURLOPT_RESOLVE libcurl option for custom DNS resolution.
7.21.3 · Dec 2010
· source
· release history
example
Force a request to a specific IP for a hostname, bypassing system DNS for testing or attack simulation.$ curl --resolve example.com:443:1.2.3.4 https://example.com/
curl-8_11_0 · Nov 2024
· source
+TLS session resumptionshippedPersists TLS session data to a file, keyed by origin and TLS configuration parameters, so that subsequent connections can resume sessions without a full handshake.3 releases · 1 other source · first seen Aug 1997▸
Also counts toward: Command-line interface
release
Adds --no-sessionid to disable TLS session ID resumption, forcing a full handshake.
curl-8_11_0 · Nov 2024
· source
· release history
Adds darwinssl backend support for TLS session resumption to improve connection performance on macOS
7.31.0 · Jun 2013
· source
· release history
Adds -l looping mode option for fetching multiple split files in sequence
2.3 · Aug 1997
· source
· release history
docs
The sessions in the file identify origin and used TLS configurations. Configuration parameters identified by a file path are only matched to the path, not the file's content. Updates to CA, CRL or key file contents do not invalidate previously saved sessions.
seen Oct 2026
· source
+Multipath TCP supportshippedEnables the use of Multipath TCP to establish connections over multiple network paths for improved throughput or resilience.2 releases · 2 other sources · first seen Jul 2024▸
Adds --mptcp CLI flag to enable Multipath TCP support
8.9.0 · Jul 2024
· source
· release history
example
Force curl to use Multipath TCP for better throughput or resilience.$ curl --mptcp https://example.com
8.9.1 · Jul 2024
· source
Set DSCP values and enable Multipath TCP for a specific host$ curl --ip-tos 0x2c --mptcp http://example.com
8.9.0 · Jul 2024
· source
+Protocol control on redirectsshippedControls which protocols are allowed during HTTP redirects or explicitly set by the application to prevent protocol switching attacks.4 releases · first seen Mar 2009▸
Also counts toward: Command-line interface
release
Add CURLOPT_PROTOCOLS_STR option to specify allowed protocols as a string
7.85.0 · Aug 2022
· source
· release history
Add CURLOPT_REDIR_PROTOCOLS_STR option to specify allowed redirect protocols as a string
7.85.0 · Aug 2022
· source
· release history
Adds --proto and -proto-redir options to control allowed protocols
7.21.0 · Jun 2010
· source
· release history
Adds CURLOPT_REDIR_PROTOCOLS and CURLOPT_PROTOCOLS to control which protocols are followed during redirects or explicitly set by the application
7.19.4 · Mar 2009
· source
· release history
+Local File ProtectionshippedPrevents the tool from overwriting existing local files during downloads if a file with the same name already exists.2 releases · 2 other sources · first seen Apr 2022▸
release
Adds --no-clobber flag to prevent overwriting local files during transfers
7.83.1 · May 2022
· source
· release history
Adds --no-clobber flag to prevent overwriting local files on duplicate names.
7.83.0 · Apr 2022
· source
· release history
example
Transfer a file but fail if the local destination already exists, preventing accidental data loss.$ curl --no-clobber -o report.pdf https://example.com/report.pdf
7.83.1 · May 2022
· source
Download content without overwriting existing files with the same name.$ curl --no-clobber -o index.html https://example.com
7.83.0 · Apr 2022
· source
+Connection upkeepshippedProvides a mechanism to perform regular maintenance on idle connections to keep them alive or clean up state.4 releases · first seen Oct 2018▸
release
Adds CURLOPT_MAXLIFETIME_CONN option to set the maximum allowed lifetime for connection reuse
7.80.0 · Nov 2021
· source
· release history
Adds CURLOPT_MAXLIFETIME_CONN to limit connection reuse lifetime
7.80.0 · Nov 2021
· source
· release history
CURLOPT_MAXAGE_CONN option added to control connection reuse age.
7.65.0 · May 2019
· source
· release history
Adds connection upkeep API curl_easy_upkeep() via the upkeep interface.
7.62.0 · Oct 2018
· source
· release history
+TLS version selectionshippedForces the use of specific TLS protocol versions for connection negotiation.3 releases · 1 other source · first seen Dec 2001▸
Also counts toward: Command-line interface
release
Adds --tls-max flag to restrict the maximum TLS version allowed for connections.
curl-7_52_0 · Dec 2016
· source
· release history
Adds TLS 1.2 support in the darwinssl backend
7.28.0 · Oct 2012
· source
· release history
Adds -1/--tls-v1 command-line option to force TLSv1 protocol negotiation.
7.9.2 · Dec 2001
· source
· release history
example
Force curl to reject any connection attempting to use a TLS version newer than 1.2 for compatibility with legacy servers.$ curl --tls-max 1.2 https://example.com
curl-7_52_0 · Dec 2016
· source
+AWS Signature Version 4 request signingshippedSigns outgoing requests using AWS SigV4, computing the payload hash over in-memory POST fields and treating bodies sourced from elsewhere as an empty payload.3 releases · 1 other source · first seen Nov 2003▸
release
Adds statvfs as a new CURLOPT_QUOTE subcommand for SSH transfers
7.49.0 · May 2016
· source
· release history
Adds CURLOPT_MAXFILESIZE / --max-filesize to limit download size
7.10.8 · Nov 2003
· source
· release history
Easy handles in a multi handle now share DNS cache automatically
7.10.8 · Nov 2003
· source
· release history
docs
--aws-sigv4 signs an empty payload hash for bodies not held in memory signs an empty payload hash for bodies not held in memory hashes only the in-memory POST fields when it computes the payload hash, so a request whose body comes from anywhere else is signed as if it had no body at all: the signature is computed over…
seen Oct 2026
· source
+HEAD method supportshippedEnables sending HTTP HEAD requests or FTP STAT commands to retrieve metadata, such as modification time, without fetching the body.4 releases · first seen Dec 2000▸
Also counts toward: Command-line interface
release
Adds CURLOPT_COOKIELIST with SESS value to clear all session cookies
7.15.4 · Jun 2006
· source
· release history
Adds CURLOPT_PRIVATE option and CURLINFO_PRIVATE info to associate user data with individual easy handles.
7.10.3 · Jan 2003
· source
· release history
Enables --head on FTP files to display modification time when available
7.5 · Dec 2000
· source
· release history
+EHTTP/3 protocol supportshippedEnables connection and data transfer operations using the HTTP/3 protocol with QUIC support, including draft-25 compatibility.3 releases · first seen Mar 2020▸
release
Adds MASQUE CONNECT-UDP support via ngtcp2 QUIC backend for HTTP/3.
8.21.0 · Jun 2026
· source
· release history
Enables QUIC support in happy eyeballs DNS resolution via the connect improvements.
7.71.0 · Jun 2020
· source
· release history
Adds support for QUIC draft-25 via the ngtcp2 and quiche libraries, enabling HTTP/3 connections using the updated protocol version.
7.69.0 · Mar 2020
· source
· release history
+File URL upload supportshippedEnables writing data to local files using standard PUT or copy methods with file:// URLs.3 releases · first seen Jun 2004▸
release
Enables sending ping frames at a configurable upkeep interval for MQTT connections.
8.14.1 · Jun 2025
· source
· release history
Adds content_encoding: zstd to support decoding responses compressed with the Zstandard algorithm
7.72.0 · Aug 2020
· source
· release history
Added ability to upload to file:// URLs using standard PUT/copy methods.
7.12.0 · Jun 2004
· source
· release history
+QUIC 0-RTT supportshippedEnables sending early data for QUIC connections to reduce latency.2 releases · 1 other source · first seen Feb 2025▸
release
Adds CURLSSLOPT_EARLYDATA to enable QUIC 0RTT with GnuTLS (from v8.12.0)
8.12.1 · Feb 2025
· source
· release history
enable 0RTT (Early Data) for QUIC connections when using GnuTLS via the new CURLSSLOPT_EARLYDATA flag.
8.12.0 · Feb 2025
· source
· release history
example
Send Early Data for QUIC connections with GnuTLS to reduce latency.$ curl --quic --sslopt 'early_data' https://example.com
8.12.0 · Feb 2025
· source
+SMTP mail sending via CLIshippedAllows sending emails directly from the command line by specifying sender and recipient addresses.3 releases · first seen Feb 2010▸
Also counts toward: Command-line interface
release
Adds the --max-smtp-pixel command-line option to limit the number of bytes sent in an SMTP mail transfer
curl-8_10_0 · Sep 2024
· source
· release history
Adds --mail-rcpt-allowfails CLI flag to allow SMTP transactions to succeed even if some recipient validations fail during delivery.
7.69.0 · Mar 2020
· source
· release history
Adds --mail-from and --mail-rcpt options for SMTP mail sending
7.20.0 · Feb 2010
· source
· release history
+TCP_NODELAY controlshippedAllows disabling Nagle's algorithm to reduce latency by sending small packets immediately.3 releases · first seen Apr 2004▸
release
Add --skip-existing flag to prevent overwriting local files that already exist during downloads
8.10.0 · Sep 2024
· source
· release history
Adds --tcp-nodelay CLI flag to control TCP_NODELAY socket option
7.11.2 · Apr 2004
· source
· release history
Adds CURLOPT_TCP_NODELAY API setting for programmatic TCP_NODELAY control
7.11.2 · Apr 2004
· source
· release history
+HTTP/2 window size configurationshippedAllows configuring the HTTP/2 stream window size to control flow.2 releases · 1 other source · first seen Dec 2016▸
Also counts toward: Command-line interface
release
Adds --http2-server-priority flag to control HTTP/2 stream priority settings.
curl-8_9_0 · Jul 2024
· source
· release history
Adds CURLINFO_SCHEME, CURLINFO_PROTOCOL, %{scheme} format escape, and HTTP/2 window size configuration options.
7.52.0 · Dec 2016
· source
· release history
example
Set custom HTTP/2 stream priority to manage bandwidth for critical requests.$ curl --http2-server-priority=1:32768 https://example.com/api/data
curl-8_9_0 · Jul 2024
· source
+Large file supportshippedEnables handling of large files by supporting large integer values for file size and offset parameters.3 releases · first seen Jan 2004▸
release
ngtcp2 builds are no longer experimental for HTTP/3.
8.5.0 · Dec 2023
· source
· release history
Adds support for HTTP Connect tunneling over QUIC with --quic
curl-8_3_0 · Sep 2023
· source
· release history
Adds INFILESIZE_LARGE, RESUME_FROM_LARGE and MAXFILESIZE_LARGE options for large file support in libcurl
7.11.0 · Jan 2004
· source
· release history
+WebSocket protocol supportshippedEnables WebSocket client connections by automatically handling the handshake upgrade sequence and providing command-line options to initiate connections without manual HTTP upgrade handling.2 releases · 1 other source · first seen Oct 2022▸
Also counts toward: Command-line interface
release
Supports the WebSocket handshake upgrade sequence automatically when using the new flags
curl-7_86_0 · Oct 2022
· source
· release history
Adds --websocket, -ws-upgrade, and -w options to enable WebSocket client functionality
curl-7_86_0 · Oct 2022
· source
· release history
example
Initiate a WebSocket connection to an endpoint without manual HTTP upgrade handling.$ curl --websocket ws://example.com/socket
curl-7_86_0 · Oct 2022
· source
+Custom memory allocationshippedAllows overriding the default memory allocation functions for libcurl to use custom allocators.3 releases · first seen Jun 2004▸
release
Removes support for the mesalink library
7.82.0 · Mar 2022
· source
· release history
Introduces new API curl_easy_option_next() and curl_easy_option_by_name() for enumerating and inspecting easy options at runtime
7.73.0 · Oct 2020
· source
· release history
Added curl_global_init_mem() for custom memory allocation management in libcurl.
7.12.0 · Jun 2004
· source
· release history
+Error string retrievalshippedProvides functions to convert libcurl error codes into human-readable strings for debugging and logging.3 releases · first seen Jun 2004▸
release
Adds --fail-with-body CLI flag to exit with error code on HTTP errors while preserving the response body in output
7.76.0 · Mar 2021
· source
· release history
Adds CURLOPT_TIMEOUT_MS and CURLOPT_CONNECTTIMEOUT_MS API options for millisecond precision timeouts.
7.16.2 · Apr 2007
· source
· release history
Added curl_easy_strerror(), curl_multi_strerror(), and curl_share_strerror() to libcurl for error message retrieval.
7.12.0 · Jun 2004
· source
· release history
+Parallel multi-transfer executionshippedEnables executing multiple transfers concurrently via the multi interface API to improve overall performance.3 releases · first seen Sep 2019▸
Also counts toward: Command-line interface
release
Adds curl_multi_wakeup() API for async multi handle notification
7.68.0 · Jan 2020
· source
· release history
Adds --parallel-immediate to start all parallel transfers immediately
7.68.0 · Jan 2020
· source
· release history
Adds -Z flag to curl to enable parallel (multi) transfers for improved performance.
7.66.0 · Sep 2019
· source
· release history
+Progress meter callbackshippedProvides a programmatic interface for monitoring download/upload progress via a callback function in the library.3 releases · first seen Aug 2000▸
release
Adds CURL_PROGRESSFUNC_CONTINUE return value for transfer progress callbacks
7.68.0 · Jan 2020
· source
· release history
Introduces CURLOPT_XFERINFOFUNCTION as a new progress callback mechanism
7.32.0 · Aug 2013
· source
· release history
Enables progress meter callback via new API in libcurl
7.1 · Aug 2000
· source
· release history
+HTTP pipelining controlshippedProvides options to control HTTP/1.1 pipelining behavior, including pipeline length, penalty sizes for content/chunk lengths, and blacklists for sites and servers.3 releases · first seen Apr 2013▸
release
CURLOPT_STREAM_WEIGHT to set priority weight for HTTP/2 streams
7.46.0 · Dec 2015
· source
· release history
CURLOPT_STREAM_DEPENDS to specify an HTTP/2 stream dependency
7.46.0 · Dec 2015
· source
· release history
Adds CURLMOPT_MAX_PIPELINE_LENGTH, CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, CURLMOPT_PIPELINING_SITE_BL, and CURLMOPT_PIPELINING_SERVER_BL for pipelining control
7.30.0 · Apr 2013
· source
· release history
+Version detection macrosshippedProvides preprocessor defines and headers to programmatically check the libcurl library version at compile time.3 releases · first seen Jan 2004▸
release
configure: add symbols versioning option --enable-versioned-symbols
7.24.0 · Jan 2012
· source
· release history
Introduces curl/curlver.h header containing libcurl version information
7.11.2 · Apr 2004
· source
· release history
Adds new LIBCURL_VERSION_* defines for easier version checking in code
7.11.0 · Jan 2004
· source
· release history
+HTTP PUT method supportshippedEnables sending HTTP requests with the PUT method, typically used for file uploads.3 releases · first seen Jan 1999▸
Also counts toward: Command-line interface
release
curl supports multiple -T flags for uploading several files in one command
7.10.8 · Nov 2003
· source
· release history
Adds --create-dirs flag to automatically create remote directory hierarchies during uploads.
7.10.3 · Jan 2003
· source
· release history
-t and -T flags now use the PUT method for file uploads on HTTP or HTTPS servers
5.4 · Jan 1999
· source
· release history
+POP3 command extension supportshippedEnables the execution of additional, custom POP3 commands beyond standard email retrieval.2 releases · first seen May 2012▸
pop3: support for additional pop3 commands.
7.26.0 · May 2012
· source
· release history
+Skip existing file logicshippedProvides a mechanism to prevent overwriting local files that already exist during downloads.2 releases · first seen Sep 2024▸
release
Add --skip-existing flag to prevent curl from overwriting local files that already exist.
8.10.1 · Sep 2024
· source
· release history
Add --skip-existing flag to prevent overwriting local files that already exist during downloads
8.10.0 · Sep 2024
· source
· release history
+Quick Exit CapabilityshippedAllows the tool to exit immediately without waiting for background threads (like DNS resolution) to complete.2 releases · first seen Dec 2022▸
release
Use default as the filename when using -O and the URL lacks a trailing path component
8.10.0 · Sep 2024
· source
· release history
Add CURLOPT_QUICK_EXIT option to stop curl without waiting for the DNS resolve thread
7.87.0 · Dec 2022
· source
· release history
+Internationalized Domain Name supportshippedEnables resolving hostnames containing non-ASCII characters by linking against the libidn library.2 releases · first seen Jun 2004▸
release
idn: add native AppleIDN (icucore) support for macOS/iOS
8.8.0 · May 2024
· source
· release history
configure --with-libidn allows curl to use IDNA names with libidn 0.4.5+.
7.12.0 · Jun 2004
· source
· release history
+IMAP mailbox managementshippedEnables creating remote mailboxes and listing directory structures via the IMAP protocol.1 release · 1 other source · first seen Sep 2023▸
Also counts toward: Command-line interface
release
Adds new --list-only option for IMAP LIST command
curl-8_3_0 · Sep 2023
· source
· release history
example
Create a remote IMAP mailbox for archiving.$ curl imap://imap.example.com/mkdir?"Archive/2023" --user username:password
curl-8_3_0 · Sep 2023
· source
+Connection and transfer tracing identifiersshippedProvides unique identifiers for connections and transfers to enable distributed request tracing and monitoring.2 releases · first seen Jul 2023▸
release
Adds --trace-ids option to curl for enabling unique tracing identifiers across requests
8.2.1 · Jul 2023
· source
· release history
libcurl adds CURLINFO_CONN_ID and CURLINFO_XFER_ID info IDs to retrieve connection and transfer identifiers.
8.2.0 · Jul 2023
· source
· release history
+HAProxy PROXY protocol supportshippedEnables the use of the HAProxy PROXY protocol to preserve client connection information when tunneling through proxies.2 releases · first seen May 2018▸
Also counts toward: Command-line interface
release
curl supports haproxy-clientip flag via the --haproxy-clientip option to set client IPs in HAProxy protocol mode.
8.2.0 · Jul 2023
· source
· release history
Adds --haproxy-protocol CLI flag and CURLOPT_HAPROXYPROTOCOL libcurl option to enable the HAProxy PROXY protocol for connections
7.60.0 · May 2018
· source
· release history
+Protocol Redirection ControlshippedAllows specifying allowed protocols for the tool to use during HTTP redirects, enhancing security against protocol switching.2 releases · first seen Aug 2022▸
release
Add CURLOPT_PROTOCOLS_STR option to specify allowed protocols as a string
7.85.0 · Aug 2022
· source
· release history
Add CURLOPT_REDIR_PROTOCOLS_STR option to specify allowed redirect protocols as a string
7.85.0 · Aug 2022
· source
· release history
+Request Rate LimitingshippedLimits the maximum number of requests per time unit to control bandwidth or adhere to server constraints.2 releases · first seen Jun 2022▸
Also counts toward: Command-line interface
release
Adds --rate flag to limit the maximum request rate per time unit.
7.84.0 · Jun 2022
· source
· release history
Adds --rate flag to limit request rate per time unit
7.84.0 · Jun 2022
· source
· release history
+SOCKS Proxy over Unix SocketsshippedEnables SOCKS proxy connections by using local Unix socket paths instead of TCP hostnames.2 releases · first seen Jun 2022▸
release
Supports unix sockets for SOCKS proxy via socks5://[path] syntax
7.84.0 · Jun 2022
· source
· release history
Supports unix sockets for SOCKS proxy via new transport layer capability.
7.84.0 · Jun 2022
· source
· release history
+MQTT protocol supportshippedEnables connection and data transfer operations using the MQTT protocol.2 releases · first seen Oct 2020▸
release
mqtt: add support for username and password
7.78.0 · Jul 2021
· source
· release history
Enables MQTT protocol support by default for use with the -Q option or multi-interface
7.73.0 · Oct 2020
· source
· release history
+TLS 1.3 cipher suite configurationshippedAllows specifying which TLS 1.3 ciphersuites are allowed for the connection and proxy.2 releases · first seen Jul 2018▸
release
Adds --tls13-ciphers and --proxy-tls13-ciphers CLI arguments to specify allowed TLS 1.3 ciphersuites for the connection and proxy respectively
7.61.0 · Jul 2018
· source
· release history
Adds CURLOPT_TLS13_CIPHERS and CURLOPT_PROXY_TLS13_CIPHERS library options to configure TLS 1.3 ciphers programmatically
7.61.0 · Jul 2018
· source
· release history
+SSH compression supportshippedEnables compression for SFTP and SCP file transfers to reduce bandwidth usage.2 releases · first seen Oct 2017▸
Also counts toward: Command-line interface
release
Adds CURLOPT_SSH_COMPRESSION option to libcurl for configuring SSH compression.
7.56.0 · Oct 2017
· source
· release history
Adds --compressed-ssh flag to enable compression for SCP and SFTP transfers.
7.56.0 · Oct 2017
· source
· release history
+Output effective filenameshippedProvides a format string variable to output the actual filename used or created after a transfer completes.2 releases · first seen May 2012▸
Also counts toward: Command-line interface
release
Adds CURLINFO_HTTP_VERSION info option to retrieve the negotiated HTTP protocol version.
7.50.0 · Jul 2016
· source
· release history
New -w format string filename_effective to output the effective filename after a transfer.
7.26.0 · May 2012
· source
· release history
+TCP keepalive configurationshippedAllows configuring TCP keepalive parameters (idle time and interval) via library options to maintain connection state.2 releases · first seen Mar 2012▸
release
Adds --tcp-fastopen flag to enable TCP Fast Open (TFO) for connections
7.49.0 · May 2016
· source
· release history
Adds CURLOPT_TCP_KEEPIDLE and CURLOPT_TCP_KEEPINTVL libcurl options for library-side TCP keepalive configuration
7.25.0 · Mar 2012
· source
· release history
+POST redirection controlshippedControls whether POST data is retained when following HTTP redirects, specifically supporting 303 status codes.2 releases · first seen May 2012▸
Also counts toward: Command-line interface
release
Adds --path-as-is option to send the request path without normalizing it
7.42.0 · Apr 2015
· source
· release history
--post303 CLI flag and CURL_REDIR_POST_303 option for CURLOPT_POSTREDIR to keep POST data on 303 redirects.
7.26.0 · May 2012
· source
· release history
+Easy handle resetshippedReinitializes an easy handle to its default state without closing the underlying connection handle.2 releases · first seen Aug 2004▸
release
The strlcat function is removed from the source code
7.30.0 · Apr 2013
· source
· release history
Adds curl_easy_reset() function to reinitialize a curl easy handle without closing it
7.12.1 · Aug 2004
· source
· release history
+Metalink protocol supportshippedEnables downloading files using the Metalink protocol, including MD5 hash verification via platform-native APIs.2 releases · first seen Jul 2012▸
Also counts toward: Command-line interface
release
Adds CryptoAPI support for metalink and md5 operations on Windows
7.28.0 · Oct 2012
· source
· release history
Adds --metalink command-line flag to support Metalink protocol downloads
7.27.0 · Jul 2012
· source
· release history
+Multi interface URL callbackshippedPermits setting the target URL dynamically via a callback function within the multi interface API.2 releases · first seen Jan 2004▸
release
Adds curl_multi_wait() to the multi interface for efficient event loop integration
7.28.0 · Oct 2012
· source
· release history
Allows setting the URL via a callback when using the multi interface in libcurl
7.11.0 · Jan 2004
· source
· release history
+External netrc file supportshippedAllows specifying a custom path for the netrc file to store authentication credentials instead of the default location.2 releases · first seen Jan 2004▸
Also counts toward: Command-line interface
release
Adds --netrc-file option to specify a custom netrc file path instead of the default ~/.netrc
7.21.5 · Apr 2011
· source
· release history
Adds CURLOPT_NETRC_FILE option in libcurl
7.11.0 · Jan 2004
· source
· release history
+TFTP protocol supportshippedEnables connection and data transfer operations using the Trivial File Transfer Protocol (TFTP).2 releases · first seen Oct 2005▸
release
Adds CURLOPT_TFTP_BLKSIZE to configure the TFTP transfer block size
7.19.4 · Mar 2009
· source
· release history
+Conditional request supportshippedAllows sending conditional headers like If-Modified-Since to perform efficient updates or cache validation.2 releases · first seen May 1999▸
Also counts toward: Command-line interface
release
Adds CURLOPT_HTTP200ALIASES config to specify alternative HTTP status codes treated as 200 OK.
7.10.3 · Jan 2003
· source
· release history
Adds -z <expression> CLI flag to enable sending If-Modified-Since headers for conditional requests
5.8 · May 1999
· source
· release history
+HTTP Range RequestsshippedSupports retrieving partial content from HTTP servers using the Range header.2 releases · first seen Sep 1997▸
Also counts toward: Command-line interface
release
Adds -z <expression> CLI flag to enable sending If-Modified-Since headers for conditional requests
5.8 · May 1999
· source
· release history
Adds -r, ranges to specify which part of a document you want, with only that part returned (HTTP/1.1-servers only)
2.7 · Sep 1997
· source
· release history
+QUIC v2 protocol supportshippedEnables connection and data transfer operations using the QUIC v2 protocol.1 release · first seen Nov 2025▸
release
Adds initial support for the QUIC v2 protocol
curl-8_17_0 · Nov 2025
· source
· release history
+HTTP/3 DNS-over-HTTPS supportshippedAllows DNS resolution via HTTPS over HTTP/3 transports for encrypted lookups.1 release · first seen Jul 2025▸
Also counts toward: Command-line interface
release
Adds support for DNS-over-HTTPS (DoH) over HTTP/3 transports via the --doh-over-http3 flag
curl-8_15_0 · Jul 2025
· source
· release history
+WebSocket ping/pong controlshippedProvides options to disable automatic pong replies and configure ping intervals for WebSocket and MQTT connections.1 other source · first seen Jun 2025▸
+QUIC qlog tracingshippedCaptures QUIC qlog traces for HTTP/3 connection debugging.1 release · first seen May 2025▸
release
Adds --vquic-qlog to enable qlog tracing output for QUIC connections, aiding HTTP/3 debugging.
curl-8_14_0 · May 2025
· source
· release history
+IPFS protocol supportshippedEnables connection and data transfer operations using IPFS protocols via an HTTP gateway.1 release · first seen Oct 2023▸
release
Adds IPFS protocol support over HTTP gateway
8.4.0 · Oct 2023
· source
· release history
+MIME message composition APIshippedProvides API functions for constructing and manipulating parts within complex MIME content structures.1 release · first seen Sep 2023▸
release
Adds curl_getdate() function and curl_mime_addpart() API functions
curl-8_3_0 · Sep 2023
· source
· release history
+Write Callback Error HandlingshippedAllows write callbacks to signal an error condition to stop the transfer without dumping data.1 release · first seen Dec 2022▸
release
Adds CURL_WRITEFUNC_ERROR constant for write callbacks to signal errors without dumping data.
7.87.0 · Dec 2022
· source
· release history
+libssh2 SHA256 fingerprint verificationshippedSupports verifying libssh2 server fingerprints using the SHA256 algorithm to enhance SFTP/SCP connection security.1 release · first seen Nov 2021▸
release
Adds SHA256 fingerprint verification support for libssh2
7.80.0 · Nov 2021
· source
· release history
+Pre-request callbackshippedProvides a callback function option (CURLOPT_PREREQFUNCTION) to execute custom logic immediately before a network request is sent.1 release · first seen Nov 2021▸
release
Adds CURLOPT_PREREQFUNCTION callback to run code before a request is sent
7.80.0 · Nov 2021
· source
· release history
+UNC path support in file URLsshippedEnables parsing and handling of UNC (Universal Naming Convention) paths within file:// URLs on Windows systems.1 release · first seen Nov 2021▸
release
Supports UNC paths in file: URLs on Windows via the URL parser
7.80.0 · Nov 2021
· source
· release history
+WolfSSL curve configurationshippedAllows configuring supported elliptic curves or groups for WolfSSL backends via new callback options.1 release · first seen Nov 2021▸
release
Allows configuring groups/curves for wolfSSL via new callback options
7.80.0 · Nov 2021
· source
· release history
+In-memory CA certificate supportshippedAllows providing Certificate Authority (CA) certificates via API functions for supported backends rather than relying solely on file-based paths.1 release · first seen May 2021▸
release
Adds support for in-memory CA certificates via new API functions for supported backends
7.77.0 · May 2021
· source
· release history
+SASL authentication mechanismsshippedSupports SCRAM-SHA-1 and SCRAM-SHA-256 SASL authentication protocols via libgsasl for services requiring these specific mechanisms.1 release · first seen Mar 2021▸
release
Adds support for SCRAM-SHA-1 and SCRAM-SHA-256 SASL mechanisms via libgsasl
7.76.0 · Mar 2021
· source
· release history
+Zstandard response decodingshippedSupports automatically decoding HTTP responses compressed with the Zstandard algorithm.1 release · first seen Aug 2020▸
release
Adds content_encoding: zstd to support decoding responses compressed with the Zstandard algorithm
7.72.0 · Aug 2020
· source
· release history
+SASL authorization identity specificationshippedAllows specifying the SASL authorization identity to determine the authenticated user's permissions during connection setup.1 release · first seen Sep 2019▸
release
Adds --sasl-authzid CLI option and CURLOPT_SASL_AUTHZID API to specify the SASL authorization identity.
7.66.0 · Sep 2019
· source
· release history
+Upload buffer size configurationshippedAllows configuring the size of the buffer used for uploading data to control memory usage and transfer performance.1 release · first seen Oct 2018▸
release
Adds CURLOPT_UPLOAD_BUFFERSIZE option to control the upload buffer size for transfers.
7.62.0 · Oct 2018
· source
· release history
+Happy Eyeballs algorithm supportshippedImplements the Happy Eyeballs algorithm to improve connection establishment time for IPv6-enabled hosts by quickly falling back to IPv4.1 release · first seen Jul 2018▸
release
Adds --no-styled-output flag to disable bold formatting of headers in curl's terminal output
7.61.0 · Jul 2018
· source
· release history
+DNS address shufflingshippedShuffles the order of returned IP addresses for a hostname to distribute load and avoid single-points-of-failure.1 release · first seen May 2018▸
release
Adds CURLOPT_DNS_SHUFFLE_ADDRESSES libcurl option to shuffle returned IP addresses
7.60.0 · May 2018
· source
· release history
+Custom asynchronous DNS resolvershippedPermits integrating a custom asynchronous DNS resolver to control how hostnames are resolved.1 release · first seen Mar 2018▸
release
Adds CURLOPT_RESOLVER_START_FUNCTION and CURLOPT_RESOLVER_START_DATA for custom asynchronous DNS resolver integration
7.59.0 · Mar 2018
· source
· release history
+Multi-homed host resolutionshippedSupports mapping a single hostname to multiple IP addresses for multi-homed hosts.1 release · first seen Mar 2018▸
release
Extends CURLOPT_RESOLVE to support multiple IP addresses per hostname entry for multi-homed host resolution
7.59.0 · Mar 2018
· source
· release history
+TLS public key pinning for proxiesshippedAllows verifying the public key of a proxy server during TLS negotiation to prevent man-in-the-middle attacks.1 release · first seen Mar 2018▸
Also counts toward: Command-line interface
release
Adds --proxy-pinnedpubkey option to enable TLS public key pinning for HTTP/HTTPS proxy connections
7.59.0 · Mar 2018
· source
· release history
+Dynamic SSL backend selectionshippedPermits switching the underlying SSL/TLS library at runtime via the global API.1 release · first seen Oct 2017▸
release
Adds curl_global_sslset() function to dynamically switch SSL backend at runtime.
7.56.0 · Oct 2017
· source
· release history
+MIME API supportshippedProvides a dedicated API for constructing and handling complex MIME content structures.1 release · first seen Oct 2017▸
release
Introduces new MIME API with curl_mime_init() and associated functions.
7.56.0 · Oct 2017
· source
· release history
+SSL key log file outputshippedAllows logging SSL/TLS session keys to a file for external decryption and debugging.1 release · first seen Oct 2017▸
release
Adds initial SSLKEYLOGFILE implementation in OpenSSL support.
7.56.0 · Oct 2017
· source
· release history
+OAuth 2.0 Bearer token supportshippedAllows supplying an OAuth2 access token directly for authentication.1 release · first seen Oct 2013▸
Also counts toward: Command-line interface
release
curl: added --oauth2-bearer option to supply an OAuth2 token directly
7.33.0 · Oct 2013
· source
· release history
+Multi-interface connection limitsshippedControls the maximum number of concurrent connections allowed per host or in total via the multi interface API.1 release · first seen Apr 2013▸
release
Adds CURLMOPT_MAX_HOST_CONNECTIONS and CURLMOPT_MAX_TOTAL_CONNECTIONS for multi interface connection limits
7.30.0 · Apr 2013
· source
· release history
+SMTP AUTH identity verificationshippedAllows specifying and verifying the authenticated identity during SMTP sessions for sender validation.1 release · first seen Mar 2012▸
release
Adds --mail-auth CLI option for SMTP AUTH identity verification
7.25.0 · Mar 2012
· source
· release history
+SSL BEAST attack mitigationshippedProvides an option to allow or disable the workaround for the BEAST vulnerability in SSL/TLS connections.1 release · first seen Mar 2012▸
release
Adds CURLOPT_SSL_OPTIONS with CURLOPT_SSL_ALLOW_BEAST support in libcurl
7.25.0 · Mar 2012
· source
· release history
+Socket acceptance timeout controlshippedProvides an option to set a timeout duration for accepting new socket connections.1 release · first seen Jan 2012▸
release
Added CURLOPT_ACCEPTTIMEOUT_MS option to control socket acceptance timeout
7.24.0 · Jan 2012
· source
· release history
+Authentication-only modeshippedForces the tool to use only authentication headers without transmitting any actual data payload.1 release · first seen Dec 2010▸
release
Adds CURLAUTH_ONLY constant to force authentication-only behavior without sending credentials.
7.21.3 · Dec 2010
· source
· release history
+File extended attributes supportshippedAllows storing operating system extended attributes on files downloaded by the tool.1 release · first seen Dec 2010▸
Also counts toward: Command-line interface
release
Adds --xattr command-line option to store extended attributes on downloaded files.
7.21.3 · Dec 2010
· source
· release history
+Conditional request status inspectionshippedAllows checking if a conditional request header (like If-Modified-Since) resulted in the server rejecting the transfer due to unmet conditions.1 release · first seen Mar 2009▸
release
Adds CURLINFO_CONDITION_UNMET to check if conditional request headers caused the server to reject the transfer
7.19.4 · Mar 2009
· source
· release history
+Proxy version negotiation controlshippedForces the use of HTTP proxy version 1.0 instead of the default 1.1 for compatibility with older proxy servers.1 release · first seen Mar 2009▸
Also counts toward: Command-line interface
release
Adds --proxy1.0 command-line option (and CURLPROXY_HTTP_1_0) to force HTTP proxy version 1.0 instead of 1.1
7.19.4 · Mar 2009
· source
· release history
+SFTP append supportshippedEnables appending data to existing remote files during SFTP uploads.1 release · first seen Sep 2008▸
Also counts toward: Command-line interface
release
Adds --append support for SFTP uploads to continue existing files on the server
7.19.0 · Sep 2008
· source
· release history
+Cookie managementshippedManages HTTP cookies, including support for HttpOnly flags and automatic saving to files.1 release · first seen Mar 2008▸
+FTP ASCII Transfer Line End ConversionshippedAutomatically converts line endings for FTP transfers using ASCII transfer mode.1 release · first seen Jun 2006▸
release
Enables line end conversions for FTP ASCII transfers
7.15.4 · Jun 2006
· source
· release history
+FTP Entry Path RetrievalshippedProvides information about the path used for FTP login or change directory operations.1 release · first seen Jun 2006▸
release
Adds CURLINFO_FTP_ENTRY_PATH info variable
7.15.4 · Jun 2006
· source
· release history
+Trailer support for chunked encodingshippedEnables handling of HTTP trailers in chunked encoded data streams, allowing metadata to be sent after the body.1 release · first seen Sep 2005▸
release
Adds trailer support for chunked encoded data streams
7.14.1 · Sep 2005
· source
· release history
+FTP account string supportshippedAllows sending an FTP account string during transfers to authenticate or identify the user on the server.1 release · first seen Feb 2005▸
Also counts toward: Command-line interface
release
--ftp-account and CURLOPT_FTP_ACCOUNT add FTP account string support for transfers.
7.13.0 · Feb 2005
· source
· release history
+LDAP over TLS supportshippedEnables secure LDAP operations by linking against system-specific TLS libraries on Windows.1 release · first seen Jun 2004▸
release
Windows libcurl can now use wldap32.dll for LDAP operations.
7.12.0 · Jun 2004
· source
· release history
+Proxy Digest authenticationshippedSupports HTTP Digest authentication specifically for proxy connections via CLI flags.1 release · first seen Jun 2004▸
Also counts toward: Command-line interface
release
curl --proxy-digest enables HTTP Digest authentication for proxies.
7.12.0 · Jun 2004
· source
· release history
+Proxy NTLM verificationshippedValidates that libcurl has NTLM support before attempting proxy authentication to prevent runtime errors.1 release · first seen Apr 2004▸
release
--proxy-ntlm now checks libcurl NTLM support before execution to prevent errors
7.11.2 · Apr 2004
· source
· release history
+FTP passive mode supportshippedAllows forcing the use of passive FTP data connections via command-line flags or API options.1 release · first seen Jan 2004▸
Also counts toward: Command-line interface
release
Adds --ftp-pasv flag to override previous --ftpport behavior
7.11.0 · Jan 2004
· source
· release history
Lines in monospace are the tool's own words: help text
parsed from its source, or an endpoint from its API document. Under
release, a line is our summary of a dated release. Under
docs, it is quoted from the tool's own documentation or
website. Each links back to the source it came from.
Command line
View
Source
No command matches.
load a captured run
composed command
No matchesTry a different search, or clear a filter to see more.
option surface across analysed releases
options at that releaseadded, per releaseremoved, per release
option
found in
since
description
No matchesTry a different search, or clear a filter to see more.
option changes per release — drag across the rail to set a range
→
Values are placeholders taken from each option’s declared default.
Nothing is executed here — the output shown is a recording of a run
that already happened.
Score card
Shipping velocityreleases a month, last 12 months
Documentation qualityrelease-notes rubric, 0–100
Breaking-change disciplinehow rarely a release breaks users, and notice given
Maintenance riskquiet time against its own cadence, maintainers
Innovation & surfacenew capabilities, API and MCP surface
Community health
Contributor trenddistinct committers, this year against last
Maintainer concentrationbus factor now against a year ago
Issue backlog trendissues closed per issue opened, 12 months
Responsivenessmedian time to a maintainer’s first reply
Nine scores for curl, each built from the releases, notes and API history this site tracks — and, on Researcher and Business, where it stands among every measured tool in its category and how that has moved.
Each score is 0–100 on a published rubric, derived from data this site already shows.
A dimension we cannot measure says so — it is never scored 0 and never enters a rank.
How this is scored
Shipping velocity — releases a month over the last 12 months, on a log scale where 16 a month scores 100. Needs 3 releases in the window.
Documentation quality — the release-notes rubric published on the analytics page, unchanged.
Breaking-change discipline — the share of releases carrying a breaking change (none scores 100, half or more scores 0). Only projects that label breaking changes are measured: a clean record cannot be told from an unlabelled one.
Maintenance risk — quiet time measured against the tool's own release cadence (quiet longer than 90 days and three typical gaps scores 0), plus the number of active maintainers and whether contributors are growing, where known. Higher is lower risk.
Innovation & surface — new capabilities in the feature ledger this year, API and MCP operations added, and the share of commits that are features: the mean of whichever we hold.
Community health (open-source tools only) — each is a direction, not a size: contributors this year against last, the bus factor now against a year ago, and issues closed per issue opened, where steady scores 50, doubled 100 and halved 0; plus the median time to a maintainer's first reply (an hour scores about 100, a month or more 0). A commercial card has no repository and carries none of the four.
Documented delivery (commercial tools) — when a vendor's documented new capabilities have slowed against its own baseline, that counts against the overall standing as heavily as two low dimensions. Steady delivery, or too little history to judge, leaves the standing alone; it is never a sixth score.
Open-source tools are scored on repository signals; commercial tools on their published changelog. Ranks compare tools within one category and one profile and need at least five measured peers; the overall standing needs three ranked dimensions. Best-in-breed or consolidator is a shape, not a quality, and is never scored.
Release-note detail over time
See how much detail curl puts in its release notes, quarter by quarter, and compare it with tracked tools in the same category. This history uses up to ten retained, reviewed notes per tool; sparse or blank older quarters may reflect that limit.
Issue, contributor and maintainer activity in curl/curl, 2023-10 – 2026-09,
as of 2026-09-25. Twelve-month figures first; the trend lines run
the whole window.
Contributors168+10 vs prior 12 months
Maintainers3+1 joined · −1 left, last 12 months
Bus factor2committers behind half the commits
Community-filed90%of issues opened, last 12 months
Median time to close1.3 daysfirst maintainer reply 4.4 hours
Open backlog7of 5,573 issues ever filed
Issues opened / month10 · 1communitymaintainers
Open backlog7
Contributors / month30
Commits / month240
Stars42,857
Issue themes, last 12 months
bugs 14%
features 2%
docs 9%
other 75%
Counts from the project's public repository and git history; no individuals
are identified. Maintainers are the committers covering 80% of the last year's
commits. how we measure this
Libraries its release ships
What its latest release locks, checked against known advisories.
None of its release's images build from a lockfile we can read.
Add the badge to your README
Maintain this project? The badge links readers straight to this page, so they can
follow every release here.