https://github.com/phip1611/ttfb
Library + CLI-Tool to measure the TTFB (time to first byte) of HTTP requests. Additionally, this crate measures the times of DNS lookup, TCP connect and TLS handshake.
https://github.com/phip1611/ttfb
Last synced: 8 months ago
JSON representation
Library + CLI-Tool to measure the TTFB (time to first byte) of HTTP requests. Additionally, this crate measures the times of DNS lookup, TCP connect and TLS handshake.
- Host: GitHub
- URL: https://github.com/phip1611/ttfb
- Owner: phip1611
- License: mit
- Created: 2021-07-09T14:26:35.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2025-03-02T12:13:53.000Z (9 months ago)
- Last Synced: 2025-03-29T06:07:10.223Z (8 months ago)
- Language: Rust
- Homepage:
- Size: 186 KB
- Stars: 44
- Watchers: 4
- Forks: 11
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-cli-apps-in-a-csv - ttfb - ttfb is a CLI-Tool to measure the TTFB (time to first byte) of HTTP requests. (<a name="networking"></a>Networking)
- awesome-cli-apps - ttfb - ttfb is a CLI-Tool to measure the TTFB (time to first byte) of HTTP requests. (<a name="networking"></a>Networking)
README
# TTFB: CLI + Lib to Measure the TTFB of HTTP/1.1 Requests
Similar to the network tab in Google Chrome or Mozilla Firefox, this
crate helps you find the timings for:
- DNS lookup (if domain is specified, i.e., no IP is given)
- TCP connection start
- TLS handshake (if https/TLS is used)
- Initial GET-Request
- TTFB (Time To First Byte)
It builds upon the crates [trust-dns-resolver](crates.io/crate/trust-dns-resolver) for modern and secure
DNS resolving of domains and [native-tls](crates.io/crate/native-tls) for handling TLS v1.2/1.3.
## Cross Platform
CLI + lib work on Linux, MacOS, and Windows.
## Usage Binary/CLI tool
Install with `cargo install ttfb --features bin`. It takes one argument and passes it to the library.
The string you pass here as first argument is the same as for the library function.
Additionally, the CLI takes a `-k/--insecure` option. \
Example: `$ ttfb -k https://expired.badssl.com`
## Usage Library
The library exposes the function `ttfb(url: String)`. The string can be for example:
- `phip1611.de` (defaults to `http://`)
- `http://phip1611.de`
- `https://phip1611.de`
- `https://phip1611.de?foo=bar`
- `https://sub.domain.phip1611.de?foo=bar`
- `http://12.34.56.78/foobar`
- `https://1.1.1.1`
- `12.34.56.78/foobar` (defaults to `http://`)
- `12.34.56.78` (defaults to `http://`)
## Example Output
If you installed the CLI and invoke it like `$ ttfb https://phip1611.de`, the output will look like:
```text
TTFB for https://phip1611.de (by ttfb@v1.1.1)
PROPERTY REL TIME (ms) ABS TIME (ms)
DNS Lookup : 0.755 0.755 (probably cached)
TCP connect : 35.484 36.239
TLS Handshake : 36.363 72.603
HTTP GET Req : 0.011 72.614
HTTP Resp TTFB: 76.432 149.046
```
## MSRV
The MSRV of the library is `1.85.0` stable.
The MSRV of the binary is `1.85.0` stable.