Guide

Output Formats

Export benchmark results in various formats

burl supports multiple output formats for different use cases.

Text Output (Default)

The default human-readable format with colors:

burl https://api.example.com
════════════════════════════════════════════════════════════
  burl - HTTP Benchmark Results
════════════════════════════════════════════════════════════

  Target
    URL:         https://api.example.com
    Method:      GET
    Connections: 10
    Duration:    10.02s

  Summary
    Total Requests:  1,234
    Successful:      1,234
    Requests/sec:    123.15
    Throughput:      45.23 KB/s

  Latency
    P50:    12.4ms
    P90:    32.1ms
    P95:    45.2ms
    P99:    89.3ms

Disable Colors

burl https://api.example.com --no-color

Disable Rich TUI

burl https://api.example.com --no-tui

Quiet Mode

burl https://api.example.com --quiet

JSON Format

Use -f json or --format json for machine-readable JSON:

burl https://api.example.com -f json
{
  "config": {
    "url": "https://api.example.com",
    "method": "GET",
    "connections": 10,
    "duration_ms": 10000
  },
  "summary": {
    "total_requests": 1234,
    "successful_requests": 1234,
    "failed_requests": 0,
    "requests_per_second": 123.15,
    "bytes_per_second": 46315
  },
  "latency_ms": {
    "min": 5.2,
    "max": 156.8,
    "mean": 25.4,
    "p50": 12.4,
    "p90": 32.1,
    "p95": 45.2,
    "p99": 89.3
  },
  "status_codes": {
    "200": 1234
  }
}

CSV Format

Use -f csv for spreadsheet-compatible output:

burl https://api.example.com -f csv
metric,value
total_requests,1234
successful_requests,1234
failed_requests,0
requests_per_second,123.15
bytes_per_second,46315
latency_min_ms,5.2
latency_max_ms,156.8
latency_mean_ms,25.4
latency_p50_ms,12.4
latency_p90_ms,32.1
latency_p95_ms,45.2
latency_p99_ms,89.3

Markdown Format

Use -f markdown for documentation-ready output:

burl https://api.example.com -f markdown
# Benchmark Results

## Configuration
| Setting | Value |
|---------|-------|
| URL | https://api.example.com |
| Method | GET |
| Connections | 10 |
| Duration | 10.02s |

## Summary
| Metric | Value |
|--------|-------|
| Total Requests | 1,234 |
| Successful | 1,234 |
| Requests/sec | 123.15 |
| Throughput | 45.23 KB/s |

## Latency
| Percentile | Value |
|------------|-------|
| P50 | 12.4ms |
| P90 | 32.1ms |
| P95 | 45.2ms |
| P99 | 89.3ms |

Writing to File

Use -o or --output to write results to a file:

# JSON to file
burl https://api.example.com -f json -o results.json

# CSV to file
burl https://api.example.com -f csv -o results.csv

# Markdown to file
burl https://api.example.com -f markdown -o results.md

Combining Formats

You can still see terminal output while writing to a file:

# Show TUI and save JSON
burl https://api.example.com -o results.json

The terminal shows the interactive TUI while results are saved as JSON.

Format Comparison

FormatUse Case
TextHuman viewing, quick checks
JSONProgrammatic processing, APIs
CSVSpreadsheets, data analysis
MarkdownDocumentation, reports
LLMAI analysis (see LLM Integration)

Piping Output

Formats can be piped to other tools:

# Pretty-print JSON
burl https://api.example.com -f json | jq .

# Extract specific value
burl https://api.example.com -f json | jq '.latency_ms.p99'

# Compare with threshold
p99=$(burl https://api.example.com -f json | jq '.latency_ms.p99')
if (( $(echo "$p99 > 100" | bc -l) )); then
  echo "P99 latency exceeded 100ms!"
  exit 1
fi