curlview 0.3.0

A Rust-powered HTTP performance analyzer that visualizes timing metrics in a human-readable format.
curlview-0.3.0 is not a library.

curlview

A modern Rust-based HTTP performance analyzer. It visualizes timing metrics such as DNS lookup, TCP connection, TLS handshake, server processing, and content transfer in a human-readable format — similar to httpstat, but written in pure Rust with no external dependencies on curl.

screenshot

Features

  • Timing waterfall chart — visualize DNS, TCP, TLS, server processing, and content transfer with color-coded slow-phase highlighting (green/yellow/red)
  • TLS certificate details — protocol version, cipher suite, certificate subject/issuer, expiry date with warnings for certificates expiring soon
  • Redirect chain tracking — automatically follows redirects and displays the full chain with per-hop timing
  • DNS resolution details — shows all resolved IPs with record types (A/AAAA) when multiple addresses are returned
  • Response size breakdown — headers, body, and total size with compression analysis (gzip/br/zstd)
  • Connection info — local and remote IP:port
  • Colored CLI output — clean, sectioned layout with visual separators
  • Fully configurable via environment variables and CLI options
  • Zero external dependencies — pure Rust networking stack (hyper + rustls + hickory-resolver)

Installation

cargo install curlview

Usage

curlview URL [OPTIONS]

Options

Request Options:
  -X, --request METHOD    HTTP method (GET, POST, PUT, DELETE, ...)
  -H, --header "K: V"    Add request header
  -d, --data DATA         Request body (auto-sets POST if GET)
  -t, --timeout SECONDS   Request timeout (default: 10)

Redirect Options:
  -L, --location          Follow redirects (default: on)
  --no-follow             Disable redirect following

Display Options:
  -b, --show-body         Show response body
  -s, --show-speed        Show download speed
  --no-ip                 Hide connection IP info
  --debug                 Print debug info

  -h, --help              Show this help

URL schemes (http://, https://) are auto-detected. Bare hostnames like example.com default to http://.

Example

$ curlview https://apple.com

── Redirect Chain ──────────────────────────────────────────────────
  [1] https://apple.com → 301 (326.80ms)
  [2] https://www.apple.com/ → 200
      Total:  326.80ms

── Connection ──────────────────────────────────────────────────
     Remote:  23.34.32.199:443
      Local:  192.168.130.48:56810
        TLS:  TLSv1_3 / TLS13_AES_256_GCM_SHA384
    Subject:  ..., O=Apple Inc., CN=www.apple.com
     Issuer:  C=US, O=Apple Inc., CN=Apple Public EV Server RSA CA 1 - G1
    Expires:  2026-08-18 17:30:10 (138 days remaining)

── Response ──────────────────────────────────────────────────
  HTTP/1.1 200 OK
  server: Apple
  content-length: 253891
  content-type: text/html; charset=utf-8
  ...

  Headers: 1.1 KiB  Body: 247.9 KiB  Total: 249.0 KiB

── Timing ──────────────────────────────────────────────────

  DNS Lookup   TCP Connection   TLS Handshake   Server Processing   Content Transfer
[    12ms    |     338ms      |     258ms     |       589ms       |      1210ms      ]
             |                |               |                   |                  |
   namelookup:12.85ms         |               |                   |                  |
                       connect:350.86ms       |                   |                  |
                                   pretransfer:608.92ms           |                  |
                                                     starttransfer:1197.23ms          |
                                                                                total:2407.05ms

More examples

# POST with JSON body
curlview https://httpbin.org/post -X POST -d '{"key":"value"}' -H "Content-Type: application/json"

# Show response body
curlview https://httpbin.org/get -b

# With speed info
curlview https://example.com -s

# Disable redirect following
curlview http://example.com --no-follow

# Hide IP info
curlview https://example.com --no-ip

# Custom timeout
curlview https://example.com -t 30

License

MIT License