1# Features -- what curl can do
2
3## curl tool
4
5 - config file support
6 - multiple URLs in a single command line
7 - range "globbing" support: [0-13], {one,two,three}
8 - multiple file upload on a single command line
9 - custom maximum transfer rate
10 - redirectable stderr
11 - metalink support (13)
12 - parallel transfers
13
14## libcurl
15
16 - full URL syntax with no length limit
17 - custom maximum download time
18 - custom least download speed acceptable
19 - custom output result after completion
20 - guesses protocol from host name unless specified
21 - uses .netrc
22 - progress bar with time statistics while downloading
23 - "standard" proxy environment variables support
24 - compiles on win32 (reported builds on 70+ operating systems)
25 - selectable network interface for outgoing traffic
26 - IPv6 support on unix and Windows
27 - happy eyeballs dual-stack connects
28 - persistent connections
29 - SOCKS 4 + 5 support, with or without local name resolving
30 - supports user name and password in proxy environment variables
31 - operations through HTTP proxy "tunnel" (using CONNECT)
32 - replaceable memory functions (malloc, free, realloc, etc)
33 - asynchronous name resolving (6)
34 - both a push and a pull style interface
35 - international domain names (11)
36
37## HTTP
38
39 - HTTP/0.9 responses are optionally accepted
40 - HTTP/1.0
41 - HTTP/1.1
42 - HTTP/2, including multiplexing and server push (5)
43 - GET
44 - PUT
45 - HEAD
46 - POST
47 - multipart formpost (RFC1867-style)
48 - authentication: Basic, Digest, NTLM (9) and Negotiate (SPNEGO) (3)
49   to server and proxy
50 - resume (both GET and PUT)
51 - follow redirects
52 - maximum amount of redirects to follow
53 - custom HTTP request
54 - cookie get/send fully parsed
55 - reads/writes the netscape cookie file format
56 - custom headers (replace/remove internally generated headers)
57 - custom user-agent string
58 - custom referrer string
59 - range
60 - proxy authentication
61 - time conditions
62 - via HTTP proxy, HTTPS proxy or SOCKS proxy
63 - retrieve file modification date
64 - Content-Encoding support for deflate and gzip
65 - "Transfer-Encoding: chunked" support in uploads
66 - automatic data compression (12)
67
68## HTTPS (1)
69
70 - (all the HTTP features)
71 - HTTP/3 experimental support
72 - using client certificates
73 - verify server certificate
74 - via HTTP proxy, HTTPS proxy or SOCKS proxy
75 - select desired encryption
76 - select usage of a specific SSL version
77
78## FTP
79
80 - download
81 - authentication
82 - Kerberos 5 (14)
83 - active/passive using PORT, EPRT, PASV or EPSV
84 - single file size information (compare to HTTP HEAD)
85 - 'type=' URL support
86 - dir listing
87 - dir listing names-only
88 - upload
89 - upload append
90 - upload via http-proxy as HTTP PUT
91 - download resume
92 - upload resume
93 - custom ftp commands (before and/or after the transfer)
94 - simple "range" support
95 - via HTTP proxy, HTTPS proxy or SOCKS proxy
96 - all operations can be tunneled through proxy
97 - customizable to retrieve file modification date
98 - no dir depth limit
99
100## FTPS (1)
101
102 - implicit `ftps://` support that use SSL on both connections
103 - explicit "AUTH TLS" and "AUTH SSL" usage to "upgrade" plain `ftp://`
104   connection to use SSL for both or one of the connections
105
106## SCP (8)
107
108 - both password and public key auth
109
110## SFTP (7)
111
112 - both password and public key auth
113 - with custom commands sent before/after the transfer
114
115## TFTP
116
117 - download
118 - upload
119
120## TELNET
121
122 - connection negotiation
123 - custom telnet options
124 - stdin/stdout I/O
125
126## LDAP (2)
127
128 - full LDAP URL support
129
130## DICT
131
132 - extended DICT URL support
133
134## FILE
135
136 - URL support
137 - upload
138 - resume
139
140## SMB
141
142 - SMBv1 over TCP and SSL
143 - download
144 - upload
145 - authentication with NTLMv1
146
147## SMTP
148
149 - authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (9), Kerberos 5
150   (4) and External.
151 - send e-mails
152 - mail from support
153 - mail size support
154 - mail auth support for trusted server-to-server relaying
155 - multiple recipients
156 - via http-proxy
157
158## SMTPS (1)
159
160 - implicit `smtps://` support
161 - explicit "STARTTLS" usage to "upgrade" plain `smtp://` connections to use SSL
162 - via http-proxy
163
164## POP3
165
166 - authentication: Clear Text, APOP and SASL
167 - SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (9),
168   Kerberos 5 (4) and External.
169 - list e-mails
170 - retrieve e-mails
171 - enhanced command support for: CAPA, DELE, TOP, STAT, UIDL and NOOP via
172   custom requests
173 - via http-proxy
174
175## POP3S (1)
176
177 - implicit `pop3s://` support
178 - explicit "STLS" usage to "upgrade" plain `pop3://` connections to use SSL
179 - via http-proxy
180
181## IMAP
182
183 - authentication: Clear Text and SASL
184 - SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (9),
185   Kerberos 5 (4) and External.
186 - list the folders of a mailbox
187 - select a mailbox with support for verifying the UIDVALIDITY
188 - fetch e-mails with support for specifying the UID and SECTION
189 - upload e-mails via the append command
190 - enhanced command support for: EXAMINE, CREATE, DELETE, RENAME, STATUS,
191   STORE, COPY and UID via custom requests
192 - via http-proxy
193
194## IMAPS (1)
195
196 - implicit `imaps://` support
197 - explicit "STARTTLS" usage to "upgrade" plain `imap://` connections to use SSL
198 - via http-proxy
199
200## MQTT
201
202 - Subscribe to and publish topics using url scheme `mqtt://broker/topic`
203
204## Footnotes
205
206  1. requires a TLS library
207  2. requires OpenLDAP or WinLDAP
208  3. requires a GSS-API implementation (such as Heimdal or MIT Kerberos) or
209     SSPI (native Windows)
210  4. requires a GSS-API implementation, however, only Windows SSPI is
211     currently supported
212  5. requires nghttp2
213  6. requires c-ares
214  7. requires libssh2, libssh or wolfSSH
215  8. requires libssh2 or libssh
216  9. requires OpenSSL, GnuTLS, mbedTLS, NSS, yassl, Secure Transport or SSPI
217     (native Windows)
218  10. -
219  11. requires libidn2 or Windows
220  12. requires libz, brotli and/or zstd
221  13. requires libmetalink, and either an Apple or Microsoft operating
222      system, or OpenSSL, or GnuTLS, or NSS
223  14. requires a GSS-API implementation (such as Heimdal or MIT Kerberos)
224