Orb vs cURL
Orb is designed as a modern alternative to cURL with a familiar command-line interface. This page compares the two tools.
Feature Comparison
Section titled “Feature Comparison”| Feature | Orb | cURL |
|---|---|---|
| HTTP/1.1 | ✓ | ✓ |
| HTTP/2 | ✓ | ✓ |
| HTTP/3 (QUIC) | ✓ | ✓ (experimental) |
| WebSocket | ✓ | ✗ |
| JSON shorthand | --json | Requires -H + -d |
| Compression | zstd, br, gzip, deflate | gzip, deflate, br |
| Progress bar | ✓ | ✓ |
| Cookie jar | ✓ | ✓ |
| Multipart forms | ✓ | ✓ |
| Proxy support | HTTP, SOCKS5 | HTTP, SOCKS4/5 |
| mTLS | ✓ | ✓ |
| Single binary | ✓ | Depends on build |
Side-by-Side Examples
Section titled “Side-by-Side Examples”Simple GET Request
Section titled “Simple GET Request”# cURLcurl https://api.example.com/users
# Orborb https://api.example.com/usersPOST with JSON
Section titled “POST with JSON”# cURLcurl -X POST \ -H "Content-Type: application/json" \ -d '{"name": "Alice"}' \ https://api.example.com/users
# Orb (simpler with --json)orb -X POST --json '{"name": "Alice"}' https://api.example.com/usersCustom Headers
Section titled “Custom Headers”# cURLcurl -H "Authorization: Bearer token" \ -H "Accept: application/json" \ https://api.example.com
# Orb (identical)orb -H "Authorization: Bearer token" \ -H "Accept: application/json" \ https://api.example.comBasic Authentication
Section titled “Basic Authentication”# cURLcurl -u username:password https://api.example.com
# Orb (identical)orb -u username:password https://api.example.comBearer Token
Section titled “Bearer Token”# cURLcurl -H "Authorization: Bearer token123" https://api.example.com
# Orb (shorthand available)orb --bearer token123 https://api.example.comFile Upload
Section titled “File Upload”# cURLcurl -F "file=@photo.jpg" https://api.example.com/upload
# Orb (identical)orb -F "file=@photo.jpg" https://api.example.com/uploadDownload to File
Section titled “Download to File”# cURLcurl -o file.zip https://example.com/file.zip
# Orb (identical)orb -o file.zip https://example.com/file.zipFollow Redirects
Section titled “Follow Redirects”# cURLcurl -L https://short.url/abc
# Orb (identical)orb -L https://short.url/abcVerbose Output
Section titled “Verbose Output”# cURLcurl -v https://example.com
# Orb (identical)orb -v https://example.comHeaders Only
Section titled “Headers Only”# cURLcurl -I https://example.com
# Orb (identical)orb -I https://example.comInsecure (Skip TLS Verification)
Section titled “Insecure (Skip TLS Verification)”# cURLcurl -k https://self-signed.example.com
# Orb (identical)orb -k https://self-signed.example.comHTTP/2 Specific
Section titled “HTTP/2 Specific”# cURLcurl --http2 https://example.com
# Orb (identical)orb --http2 https://example.comHTTP/3 Specific
Section titled “HTTP/3 Specific”# cURLcurl --http3 https://example.com
# Orb (identical)orb --http3 https://example.comCompressed Response
Section titled “Compressed Response”# cURLcurl --compressed https://example.com
# Orb (identical)orb --compressed https://example.comTimeout
Section titled “Timeout”# cURLcurl --connect-timeout 5 -m 30 https://example.com
# Orb (identical)orb --connect-timeout 5 -m 30 https://example.comCookie Jar
Section titled “Cookie Jar”# cURLcurl -b cookies.txt -c cookies.txt https://example.com
# Orb (identical)orb -b @cookies.txt -c cookies.txt https://example.com# cURLcurl -x http://proxy:8080 https://example.com
# Orb (identical)orb -x http://proxy:8080 https://example.comDNS Override
Section titled “DNS Override”# cURLcurl --connect-to example.com:443:localhost:8443 https://example.com
# Orb (identical)orb --connect-to example.com:443:localhost:8443 https://example.comOrb-Only Features
Section titled “Orb-Only Features”WebSocket Support
Section titled “WebSocket Support”# Connect and send messageorb wss://echo.websocket.org --ws-message "Hello!"
# Interactive modeorb wss://echo.websocket.orgcURL does not support WebSocket connections.
Bearer Token Shorthand
Section titled “Bearer Token Shorthand”# Orborb --bearer "your-token" https://api.example.com
# cURL equivalentcurl -H "Authorization: Bearer your-token" https://api.example.comJSON Shorthand
Section titled “JSON Shorthand”# Orborb --json '{"key": "value"}' https://api.example.com
# cURL equivalentcurl -H "Content-Type: application/json" -d '{"key": "value"}' https://api.example.comcURL-Only Features
Section titled “cURL-Only Features”Some cURL features not yet in orb:
- FTP, SFTP, SCP protocols (Will not be supported)
- TFTP, LDAP, DICT protocols (Will not be supported)
- Globbing/URL patterns (
[1-10],{a,b,c}) - Config files (
.curlrc) --retrywith automatic backoff--limit-ratebandwidth throttlingHTTP_PROXY/HTTPS_PROXYenvironment variables
Migration Tips
Section titled “Migration Tips”- Most options are identical - Start by trying your cURL command with
orbinstead - Use
--jsonfor JSON APIs - Simpler than-H "Content-Type: ..." -d ... - Use
--bearerfor tokens - Cleaner than-H "Authorization: ..." - WebSocket support - Use
ws://orwss://URLs directly
When to Use Each
Section titled “When to Use Each”Use Orb When
Section titled “Use Orb When”- You need WebSocket support
- You’re working with modern HTTP/2 and HTTP/3 APIs
- You’re workin with modern compression formats like zstd
- You prefer the
--jsonand--bearershortcuts
Use cURL When
Section titled “Use cURL When”- You need FTP or other non-HTTP protocols
- You rely on URL globbing patterns
- You need specific cURL-only features
- Compatibility with existing scripts is critical