The main differences as I (Daniel Stenberg) see them. Please consider my bias towards curl since after all, curl is my baby.
What both commands do
- Performs HTTP(S) operations specified as URLs
- Need an option to follow redirects
-vto show sent request headers
- Support HTTP and SOCKS proxies
- Can do HTTP Range requests
- netrc support
Transfer performance comparsion
Tranfering 80GB from a localhost Apache HTTP server to /dev/null on Linux.
httpie 0.9.8 needed 153 seconds. 535 MB/sec
curl 7.51.0 needed 25 seconds. 3276 MB/sec
- Written in C and uses libcurl
- supports many other protocols as well apart from HTTP(S)
- supports any amount of URLs on the command line
- can send binary POSTs
- Supports multiple HTTP methods in a single command line for different URLs
- Documented in a man page for offline documentation
- supports HTTP/1.0 requests
- features URL "globbing" for ranges and sequences
- Allows more invasive header modifications, like passing in invalid letters
in custom headers (
Content-Length:in a POST and removing the
Host:header from a request. Or just adding a header without a space after the colon.
- Supports happy eyeballs or explicit ipv4/ipv6 use
- Supports custom connection tricks like with --resolve and --connect-to
- HTTP/2 support (for both HTTP:// and HTTPS:// URLs)
HTTPie "cURL-like tool for humans"
- Written in Python and uses Requests
- Only supports a single URL on the command line
- Has JSON support
- Colored output
- Assumes "name=value" for POSTS (name:value or just "data" is hard/impossible
to send, not to mention POSTing
Connection:- which instead will be intepreted as remove that header please)
- Can you do a multipart POST with two text-only fields?
- Forbids UTF-8 symbols in HTTP request headers
- Doesn't allow a user to change the Content-Length: header
- Has an "Auth plugin" system that supports many more auth types than curl
- Has no official man page
- HTTP/2 ?
- Happy eyeballs?
Updated: September 29, 2017 11:05 (Central European, Stockholm Sweden)