Install • Quick Start • Examples • Configuration • Templating
Sarin is designed for efficient HTTP load testing with minimal resource consumption. It prioritizes simplicity—features like templating add zero overhead when unused.
| ✅ Supported | ❌ Not Supported |
|---|---|
| High-performance with low memory footprint | Detailed response body analysis |
| Long-running duration/count based tests | Extensive response statistics |
| Dynamic requests via 320+ template functions | Web UI or complex TUI |
| Request scripting with Lua and JavaScript | Distributed load testing |
| Multiple proxy protocols (HTTP, HTTPS, SOCKS5, SOCKS5H) |
HTTP/2, HTTP/3, WebSocket, gRPC |
| Flexible config (CLI, ENV, YAML) | Plugins / extensions ecosystem |
docker pull aykhans/sarin:latestWith a local config file:
docker run --rm -it -v /path/to/config.yaml:/config.yaml aykhans/sarin -f /config.yamlWith a remote config file:
docker run --rm -it aykhans/sarin -f https://example.com/config.yamlDownload the latest binaries from the releases page.
Requires Go 1.26+.
git clone https://github.com/aykhans/sarin.git && cd sarin
CGO_ENABLED=0 go build \
-ldflags "-X 'go.aykhans.me/sarin/internal/version.Version=dev' \
-X 'go.aykhans.me/sarin/internal/version.GitCommit=$(git rev-parse HEAD)' \
-X 'go.aykhans.me/sarin/internal/version.BuildDate=$(date -u +%Y-%m-%dT%H:%M:%SZ)' \
-X 'go.aykhans.me/sarin/internal/version.GoVersion=$(go version)' \
-s -w" \
-o sarin ./cmd/cli/main.goSend 10,000 GET requests with 50 concurrent connections and a random User-Agent for each request:
sarin -U http://example.com -r 10_000 -c 50 -H "User-Agent: {{ fakeit_UserAgent }}"Run a 5-minute duration-based test:
sarin -U http://example.com -d 5m -c 100Use a YAML config file:
sarin -f config.yamlFor more usage examples, see the Examples Guide.
Sarin supports environment variables, CLI flags, and YAML files. When the same option is specified in multiple sources, the following priority order applies:
CLI Flags (Highest) > YAML > Environment Variables (Lowest)
For detailed documentation on all configuration options (URL, method, timeout, concurrency, headers, cookies, proxy, etc.), see the Configuration Guide.
Sarin supports Go templates in URL paths, methods, bodies, headers, params, cookies, and values. Use the 320+ built-in functions to generate dynamic data for each request.
Example:
sarin -U "http://example.com/users/{{ fakeit_UUID }}" -r 1000 -c 10 \
-V "REQUEST_ID={{ fakeit_UUID }}" \
-H "X-Request-ID: {{ .Values.REQUEST_ID }}" \
-B '{"request_id": "{{ .Values.REQUEST_ID }}"}'For the complete templating guide and functions reference, see the Templating Guide.
This project is licensed under the MIT License. See the LICENSE file for details.
