Command line tool and library for transferring data with URLs!

cURL

cURL 7.69.0

  -  5.8 MB  -  Freeware

Sometimes latest versions of the software can cause issues when installed on older devices or devices running an older version of the operating system.

Software makers usually fix these issues but it can take them some time. What you can do in the meantime is to download and install an older version of cURL 7.69.0.


For those interested in downloading the most recent release of cURL or reading our review, simply click here.


All old versions distributed on our website are completely virus-free and available for download at no cost.


We would love to hear from you

If you have any questions or ideas that you want to share with us - head over to our Contact page and let us know. We value your feedback!

What's new in this version:

Changes:
- Polarssl: removed
- Smtp: add CURLOPT_MAIL_RCPT_ALLLOWFAILS and --mail-rcpt-allowfails
- WolfSSH: new SSH backend

Bugfixes:
- Altsvc: improved header parser
- Altsvc: keep a copy of the file name to survive handle reset
- Altsvc: make saving the cache an atomic operation
- Altsvc: use h3-27
- Azure: disable brotli on the macos debug-builds
- Build: remove all HAVE_OPENSSL_ENGINE_H defines
- Checksrc.bat: Fix not being able to run script from the main curl dir
- Cleanup: fix several comment typos
- Cleanup: fix typos and wording in docs and comments
- Cmake: add support for CMAKE_LTO option
- Cmake: clean up and improve build procedures
- Cmake: enable SMB for Windows builds
- Cmake: improve libssh2 check on Windows
- Cmake: Show HTTPS-proxy in the features output
- Cmake: support specifying the target Windows version
- Cmake: use check_symbol_exists also for inet_pton
- Configure.ac: fix comments about --with-quiche
- Configure: disable metalink if mbedTLS is specified
- Configure: disable metalink support for incompatible SSL/TLS
- Conn: do not reuse connection if SOCKS proxy credentials differ
- Conncache: removed unused Curl_conncache_bundle_size()
- Connect: remove some spurious infof() calls
- Connection reuse: respect the max_concurrent_streams limits
- Contributors: also include people who contributed to curl-www
- Contrithanks: use the most recent tag by default
- Cookie: check __Secure- and __Host- case sensitively
- Cookies: make saving atomic with a rename
- Create-dirs.d: mention the mode
- Curl: avoid using strlen for testing if a string is empty
- Curl: error on --alt-svc use w/o support
- Curl: let -D merge headers in one file again
- Curl: make #0 not output the full URL
- Curl: make the -# spaceship bar not wrap the line
- Curl: remove 'config' field from OutStruct
- Curl:progressbarinit: ignore column width from terminals < 20
- Curl_escape.3: add a link to curl_free
- Curl_getenv.3: fix the memory handling description
- Curl_global_init: assume the EINTR bit by default
- Curl_global_init: move the IPv6 works status bool to multi handle
- CURLINFO_COOKIELIST.3: Fix example
- CURLOPT_ALTSVC_CTRL.3: fix the DEFAULT wording
- CURLOPT_PROXY_SSL_OPTIONS.3: Sync with CURLOPT_SSL_OPTIONS.3
- CURLOPT_REDIR_PROTOCOLS.3: update the DEFAULT section
- Data.d: remove "Multiple files can also be specified"
- Digest: do not quote algorithm in HTTP authorisation
- Docs/HTTP3: add --enable-alt-svc to curl's configure
- Docs/HTTP3: update the OpenSSL branch to use for ngtcp2
- Docs: fix typo on CURLINFO_RETRY_AFTER
- Easy: remove dead code
- Form.d: fix two minor typos
- Ftp: convert 'sock_accepted' to a plain boolean
- Ftp: remove superfluous checking for crlf in user or pwd
- Ftp: shrink temp buffers used for PORT
- Github action: add CIFuzz
- Github: Instructions to post "uname -a" on Unix systems in issues
- GnuTLS: always send client cert
- Gtls: fixed compilation when using GnuTLS < 3.5.0
- Hostip: move code to resolve IP address literals to `Curl_resolv`
- HTTP-COOKIES: describe the cookie file format
- HTTP-COOKIES: mention that a trailing newline is required
- Http2: make pausing/unpausing set/clear local stream window
- Http2: now requires nghttp2 >= 1.12.0
- Http: added 417 response treatment
- Http: increase EXPECT_100_THRESHOLD to 1Mb
- Http: mark POSTs with no body as "upload done" from the start
- Http: move "oauth_bearer" from connectdata to Curl_easy
- Include: remove non-curl prefixed defines
- KNOWN_BUGS: Multiple methods in a single WWW-Authenticate: header
- Libssh2: add support for forcing a hostkey type
- Libssh2: fix variable type
- Libssh: improve known hosts handling
- Llist: removed unused Curl_llist_move()
- Location.d: the method change is from POST to GET only
- Md4: fixed compilation issues when using GNU TLS gcrypt
- Md4: use init/update/final functions in Secure Transport
- Md5: added implementation for mbedTLS
- Mk-ca-bundle: add support for CKA_NSS_SERVER_DISTRUST_AFTER
- Multi: change curl_multi_wait/poll to error on negative timeout
- Multi: fix outdated comment
- Multi: if Curl_readwrite sets 'comeback' use expire, not loop
- Multi_done: if multiplexed, make conn->data point to another transfer
- Multi_wait: stop loop when sread() returns zero
- Ngtcp2: add error code for QUIC connection errors
- Ngtcp2: fixed to only use AF_INET6 when ENABLE_IPV6
- Ngtcp2: update to git master and its draft-25 support
- Ntlm: move the winbind data into the NTLM data structure
- Ntlm: pass the Curl_easy structure to the private winbind functions
- Ntlm: removed the dependency on the TLS libaries when using MD5
- Ntlm_wb: use Curl_socketpair() for greater portability
- Oauth2-bearer.d: works for HTTP too
- Openssl: make CURLINFO_CERTINFO not truncate x509v3 fields
- Openssl: remove redundant assignment
- Os400: fixed the build
- Pause: force-drain the transfer on unpause
- Quiche: update to draft-25
- README: mention that the docs is in docs/
- RELEASE-PROCEDURE: feature win is closed post-release a few days
- Runtests: make random seed fixed for a month
- Runtests: restore the command log
- Schannel: make CURLOPT_CAINFO work better on Windows 7
- Schannel_verify: Fix alt names manual verify for UNICODE builds
- Sha256: use crypto implementations when available
- Singleuse.pl: support new API functions, fix curl_dbg_ handling
- Smtp: support the SMTPUTF8 extension
- Smtp: support UTF-8 based host names in MAIL FROM
- SOCKS: make the connect phase non-blocking
- Strcase: turn Curl_raw_tolower into static
- Strerror: increase STRERROR_LEN 128 -> 256
- Test1323: added missing 'unit test' feature requirement
- Tests: add a unit test for MD4 digest generation
- Tests: add a unit test for SHA256 digest generation
- Tests: add a unit test for the HMAC hash generation
- Tests: deduce the tool name from the test case for unit tests
- Tests: fix Python 3 compatibility of smbserver.py
- Tool_dirhie: allow directory traversal during creationtool_homedir: change GetEnv() to use libcurl's curl_getenv()
- Tool_util: improve Windows version of tvnow()
- Travis: update non-OpenSSL Linux jobs to Bionic
- Url: include the failure reason when curl_win32_idn_to_ascii() fails
- Urlapi: guess scheme properly with credentials given
- Urldata: do string enums without #ifdefs for build scripts
- Vtls: refactor Curl_multissl_version to make the code clearer
- Win32: USE_WIN32_CRYPTO to enable Win32 based MD4, MD5 and SHA256