PAGES
← all tools
◆ General Utilities & Libraries

curl

8.22.0 open-source

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

Summary

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

How curl helps

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

all 116 features, with the evidence for each →

Languages

Not documented

Features

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.

Compare with peers →

What curl offers you

  • Command-line interface48
  • JSON data export1
All capabilities 116 capabilities
Authentication mechanisms shipped Supports 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 support shipped Handles 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 submission shipped Sends 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 specification shipped Permits 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

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 support shipped Links 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 support shipped Enables 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 binding shipped Enables 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 support shipped Links 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 validation shipped Validates 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 output verified Enables 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

Programmatic Header Access shipped Provides 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 IPv6 shipped Enables 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 enforcement verified Enables 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 tunneling shipped Supports 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 support shipped Enables 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 delay shipped Honours 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 formatting shipped Allows 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 multiplexing shipped Allows 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 failover shipped Allows 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
  • Enable unique trace IDs for debugging distributed curl requests. curl --trace-ids https://example.com 8.2.1 · Jul 2023 · source
ALPN and NPN negotiation control shipped Allows 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 support shipped Allows 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 configuration shipped Allows 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 output shipped Allows 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 control shipped Forces 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 support shipped Enables 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 support shipped Enables 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
  • DoH trace configuration options added 8.7.0 · Mar 2024 · 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 resolution shipped Permits 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 resumption shipped Persists 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 support shipped Enables 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

Also counts toward: Command-line interface

release

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 redirects shipped Controls 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 Protection shipped Prevents 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 upkeep shipped Provides 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 selection shipped Forces 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 signing shipped Signs 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 support shipped Enables 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
  • --head now works on file:// URLs too 7.10.8 · Nov 2003 · 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 support shipped Enables 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 support shipped Enables 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 support shipped Enables 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 CLI shipped Allows 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 control shipped Allows 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 configuration shipped Allows 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 support shipped Enables 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 support shipped Enables 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 allocation shipped Allows 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 retrieval shipped Provides 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 execution shipped Enables 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 callback shipped Provides 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 control shipped Provides 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 macros shipped Provides 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 support shipped Enables 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 support shipped Enables the execution of additional, custom POP3 commands beyond standard email retrieval. 2 releases · first seen May 2012

release

Skip existing file logic shipped Provides 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 Capability shipped Allows 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 support shipped Enables 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 management shipped Enables 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

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 identifiers shipped Provides 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 support shipped Enables 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 Control shipped Allows 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 Limiting shipped Limits 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 Sockets shipped Enables 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 support shipped Enables 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 configuration shipped Allows 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 support shipped Enables 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 filename shipped Provides 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 configuration shipped Allows 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 control shipped Controls 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 reset shipped Reinitializes 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 support shipped Enables 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 callback shipped Permits 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 support shipped Allows 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 support shipped Enables connection and data transfer operations using the Trivial File Transfer Protocol (TFTP). 2 releases · first seen Oct 2005

release

Conditional request support shipped Allows 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 Requests shipped Supports 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 support shipped Enables connection and data transfer operations using the QUIC v2 protocol. 1 release · first seen Nov 2025

release

HTTP/3 DNS-over-HTTPS support shipped Allows 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 control shipped Provides options to disable automatic pong replies and configure ping intervals for WebSocket and MQTT connections. 1 other source · first seen Jun 2025

example

  • Disable automatic websocket pong responses. curl --no-pong-reply ws://example.com/socket 8.14.1 · Jun 2025 · source
QUIC qlog tracing shipped Captures 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 support shipped Enables connection and data transfer operations using IPFS protocols via an HTTP gateway. 1 release · first seen Oct 2023

release

MIME message composition API shipped Provides 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 Handling shipped Allows 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 verification shipped Supports 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 callback shipped Provides 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 URLs shipped Enables 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 configuration shipped Allows 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 support shipped Allows 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 mechanisms shipped Supports 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 decoding shipped Supports 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 specification shipped Allows 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 configuration shipped Allows 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 support shipped Implements 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 shuffling shipped Shuffles 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 resolver shipped Permits 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 resolution shipped Supports 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 proxies shipped Allows 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 selection shipped Permits 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 support shipped Provides 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 output shipped Allows 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 support shipped Allows 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 limits shipped Controls 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 verification shipped Allows 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 mitigation shipped Provides 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 control shipped Provides 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 mode shipped Forces 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 support shipped Allows 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 inspection shipped Allows 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 control shipped Forces 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 support shipped Enables 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 management shipped Manages HTTP cookies, including support for HttpOnly flags and automatic saving to files. 1 release · first seen Mar 2008

release

FTP ASCII Transfer Line End Conversion shipped Automatically converts line endings for FTP transfers using ASCII transfer mode. 1 release · first seen Jun 2006

release

FTP Entry Path Retrieval shipped Provides information about the path used for FTP login or change directory operations. 1 release · first seen Jun 2006

release

Trailer support for chunked encoding shipped Enables handling of HTTP trailers in chunked encoded data streams, allowing metadata to be sent after the body. 1 release · first seen Sep 2005

release

FTP account string support shipped Allows 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 support shipped Enables 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 authentication shipped Supports 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 verification shipped Validates 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 support shipped Allows 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.

Score card

  1. Shipping velocity releases a month, last 12 months
  2. Documentation quality release-notes rubric, 0–100
  3. Breaking-change discipline how rarely a release breaks users, and notice given
  4. Maintenance risk quiet time against its own cadence, maintainers
  5. Innovation & surface new capabilities, API and MCP surface
  6. Community health
  7. Contributor trend distinct committers, this year against last
  8. Maintainer concentration bus factor now against a year ago
  9. Issue backlog trend issues closed per issue opened, 12 months
  10. Responsiveness median 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.

Score cards are part of every paid plan.

See plans →

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.

Checking release-note history…

Explore the full chart →

Releases

Show

162 entries

  1. September 20261
  2. August 20261
  3. July 20262
  4. June 20261
  5. April 20261
  6. March 20261
  7. November 20252
  8. September 20251
  9. July 20251
  10. May 20251
  11. April 20251
  12. February 20251
  13. November 20241
  14. September 20242
  15. July 20242
  16. May 20242
  17. March 20241
  18. December 20231
  19. October 20231
  20. September 20232
  21. July 20231
  22. May 20232
  23. February 20232
  24. December 20221
  25. October 20222
  26. August 20221
  27. June 20221
  28. April 20222
  29. March 20221
  30. January 20221
  31. November 20211
  32. July 20211
  33. May 20211
  34. March 20211
  35. October 20201
  36. August 20201
  37. June 20201
  38. April 20201
  39. March 20201
  40. January 20201
  41. September 20191
  42. May 20191
  43. December 20181
  44. October 20181
  45. September 20181
  46. July 20181
  47. May 20181
  48. March 20181
  49. January 20181
  50. October 20171
  51. August 20171
  52. April 20171
  53. February 20171
  54. December 20162
  55. July 20161
  56. May 20161
  57. January 20161
  58. December 20151
  59. August 20151
  60. June 20151
  61. April 20151
  62. February 20151
  63. January 20151
  64. November 20141
  65. September 20141
  66. July 20141
  67. May 20141
  68. March 20141
  69. January 20141
  70. October 20131
  71. August 20131
  72. June 20131
  73. April 20131
  74. October 20121
  75. July 20121
  76. May 20121
  77. March 20121
  78. January 20121
  79. September 20111
  80. June 20111
  81. April 20111
  82. December 20101
  83. October 20101
  84. June 20101
  85. February 20101
  86. November 20091
  87. March 20091
  88. November 20081
  89. September 20081
  90. June 20081
  91. March 20081
  92. January 20081
  93. October 20071
  94. July 20071
  95. June 20071
  96. April 20071
  97. October 20061
  98. August 20061
  99. June 20061
  100. February 20061
  101. December 20051
  102. October 20051
  103. September 20051
  104. May 20051
  105. February 20051
  106. August 20041
  107. June 20041
  108. April 20041
  109. January 20041
  110. November 20031
  111. August 20031
  112. July 20031
  113. January 20031
  114. October 20021
  115. June 20021
  116. May 20021
  117. April 20021
  118. March 20021
  119. January 20021
  120. December 20011
  121. September 20011
  122. December 20001
  123. September 20001
  124. August 20002
  125. March 20001
  126. January 20001
  127. November 19991
  128. October 19991
  129. August 19992
  130. July 19991
  131. May 19992
  132. April 19991
  133. January 19991
  134. December 19982
  135. October 19981
  136. July 19981
  137. April 19981
  138. March 19981
  139. December 19971
  140. November 19971
  141. September 19971
  142. August 19975
  143. May 19971
    Show

    162 entries

    Project health

    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.

    1. Contributors 168 +10 vs prior 12 months
    2. Maintainers 3 +1 joined · −1 left, last 12 months
    3. Bus factor 2 committers behind half the commits
    4. Community-filed 90% of issues opened, last 12 months
    5. Median time to close 1.3 days first maintainer reply 4.4 hours
    6. Open backlog 7 of 5,573 issues ever filed
    1. Issues opened / month 10 · 1 communitymaintainers
    2. Open backlog 7
    3. Contributors / month 30
    4. Commits / month 240
    5. Stars 42,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.

    Tracked by Cyber Toolchain Choose a badge style and copy the code →
    browse all tools → score card for your toolchain →