# BotBrowser Performance Benchmark
Performance data comparing BotBrowser fingerprint protection overhead against stock Chromium, and evaluating Per-Context Fingerprint scalability.
## Key Findings
| Question | Answer |
|----------|--------|
| **How much overhead does BotBrowser add?** | Near-zero. Speedometer 3.0 shows **<1% difference** in both headed and headless modes, within run-to-run variance. |
| **Are fingerprint APIs slower?** | No. Canvas, WebGL, Navigator, Screen, and Font APIs show **identical latency** with or without fingerprint profiles on macOS, Linux, and Windows. |
| **Can video-heavy sessions lower CPU?** | Yes. In the tested Linux x64 video workload, `--bot-video-fps=1:30` reduced average CPU by **71-82%** where lower visual video cadence was acceptable. See [Video FPS Control](#video-fps-control). |
| **How does Per-Context Fingerprint scale?** | At 50 concurrent profiles: **29% less memory**, **57% fewer processes**, **2x faster creation** vs launching 50 separate browser instances. Full fingerprint isolation verified. |
| **How does Trimmed Build compare to Standard?** | On Linux x64 (400 official samples): **62% lower wall time**, **85% faster per-context creation**, **68% lower CPU peak**, **31% lower PSS peak** versus Standard, with **100% success rate** and **0 residual processes**. See [Trimmed Build](#trimmed-build). |
## Single Instance Performance
### Standard Benchmark Suites
All benchmarks run locally (no network dependency). Each test runs 3 times; median reported.
**Test Environment**: macOS (Apple M4 Max, 16 cores, 64GB RAM)
| Mode | Benchmark | Stock Chrome | BotBrowser + Android | Difference |
|------|-----------|-------------|---------------------|------------|
| Headless | **Speedometer 3.0** | 42.8 (±0.31) | 42.7 (±0.25) | **-0.2%** |
| Headed | **Speedometer 3.0** | 41.8 (±0.21) | 42.1 (±0.17) | **+0.7%** |
> **Methodology**: Warm-up run (discarded) + 3 measurement runs with interleaved test order (Stock → BB → Stock → BB → Stock → BB) to eliminate thermal/cache bias. Scores shown as median ± stddev.
>
> **Result**: BotBrowser's fingerprint protection adds **no measurable overhead** to JavaScript and DOM performance. Differences of 0.1-0.3 points are well within run-to-run variance. Consistent across both headed and headless modes.
### Fingerprint API Overhead
Individual API latency measured over 1,000 iterations each, median reported (milliseconds).
| API | Stock Chrome | BB + Android | BB + Windows | BB + macOS |
|-----|-------------|-------------|-------------|-----------|
| Canvas2D `toDataURL()` | 0.5 | 0.5 | 0.5 | 0.5 |
| Canvas2D `getImageData()` | 0.0 | 0.0 | 0.0 | 0.0 |
| WebGL `getParameter(RENDERER)` | 0.0 | 0.0 | 0.0 | 0.0 |
| WebGL `getSupportedExtensions()` | 0.0 | 0.0 | 0.0 | 0.0 |
| WebGL `getShaderPrecisionFormat()` | 0.0 | 0.0 | 0.0 | 0.0 |
| WebGL `readPixels()` | 0.2 | 0.2 | 0.2 | 0.2 |
| AudioContext Offline Render + Hash | 3.9 | 2.9 | 3.2 | 3.7 |
| Navigator `userAgent` | 0.0 | 0.0 | 0.0 | 0.0 |
| Navigator `platform` | 0.0 | 0.0 | 0.0 | 0.0 |
| Screen `width` + `height` | 0.0 | 0.0 | 0.0 | 0.0 |
| `performance.now()` | 0.0 | 0.0 | 0.0 | 0.0 |
| Font `measureText()` (50 fonts) | 0.0 | 0.0 | 0.0 | 0.0 |
| Intl `DateTimeFormat.resolvedOptions` | 0.0 | 0.0 | 0.0 | 0.0 |
> **Result**: Fingerprint protection adds **zero overhead** on all tested APIs. Canvas, WebGL, Navigator, Screen, and Font APIs show identical latency with or without a fingerprint profile. AudioContext variance (2.9-3.9ms) is within normal fluctuation.
### Page Load Time
Median load time for a locally-intercepted page (milliseconds).
| Configuration | Load Time | vs Stock |
|---------------|-----------|----------|
| Stock Chrome (no profile) | 29.7ms | - |
| BotBrowser + Android | 101.6ms | +72ms |
| BotBrowser + Windows | 102.9ms | +73ms |
| BotBrowser + macOS | 105.9ms | +76ms |
> **Note**: The additional ~72-76ms comes from one-time profile initialization (reading and applying fingerprint configuration on first page load). All three profile types show similar overhead, indicating no significant difference between cross-platform profiles.
---
## Video FPS Control: Media Workload CPU
`--bot-video-fps` (ENT Tier2) lowers the actual video decode/render cadence while optionally keeping media FPS reporting aligned with the selected policy. It requires a profile with Video FPS Control enabled. This benchmark measures a video-heavy workload where full visual frame cadence is not required.
### Test Environment
| Dimension | Value |
|---|---|
| Platform | Linux x64 official build |
| Chromium line | BotBrowser 149.0.7827.102 |
| Workload | Local AVC 640x360, 30 FPS video elements |
| Mode | Headless |
| Video FPS policy | Baseline `30:30`; throttled `1:30` |
| Warmup | 10 seconds |
| Sample window | 30 seconds |
| Repeats | 3 per configuration |
### Result
Baseline uses normal 30 FPS video playback and reporting. Throttled uses `--bot-video-fps=1:30`, which updates video frames near 1 FPS while media reporting uses 30 FPS.
| Concurrent videos | Baseline avg CPU | `--bot-video-fps=1:30` avg CPU | Reduction |
|---:|---:|---:|---:|
| 8 | 33.96% | 9.70% | **71.43%** |
| 16 | 61.20% | 12.10% | **80.24%** |
| 24 | 76.49% | 13.81% | **81.95%** |
### Interpretation
Use Video FPS Control when video decode/render work is the CPU bottleneck and the workflow only needs occasional visual frame updates. Pixel output follows the actual FPS, so choose a higher actual cadence when the workload samples video pixels frame by frame. CPU percentages vary by host, driver, codec, and workload; use the reduction range as a benchmark reference, not a pass/fail threshold.
Configuration and examples: [FPS Control](docs/guides/fingerprint/FPS_CONTROL.md#video-fps-control).
---
## Scale Performance: Per-Context vs Multi-Instance
The core value proposition for enterprise users: running N different fingerprint profiles simultaneously.
### Architecture Comparison
| Architecture | How It Works |
|-------------|-------------|
| **Multi-Instance** | Launch N separate browser processes, each with a different `--bot-profile` |
| **Per-Context** (ENT Tier 3) | Launch 1 browser, create N BrowserContexts, each assigned a different profile via CDP `BotBrowser.setBrowserContextFlags` |
### Resource Usage at Scale
**Test Environment**: macOS (Apple M4 Max, 16 cores, 64GB RAM), Headless mode
| Scale | MI Memory | PC Memory | Savings | MI Processes | PC Processes | MI Create Time | PC Create Time | Speedup |
|-------|-----------|-----------|---------|-------------|-------------|---------------|---------------|---------|
| **1** | 16,055 MB | 14,022 MB | 13% | 140 | 136 | 1,667ms | 627ms | 2.7x |
| **10** | 23,345 MB | 19,586 MB | 16% | 212 | 150 | 11,434ms | 4,854ms | 2.4x |
| **25** | 30,133 MB | 23,781 MB | 21% | 320 | 174 | 28,205ms | 14,415ms | 2.0x |
| **50** | 40,218 MB | 28,553 MB | **29%** | 492 | 210 | 57,891ms | 28,946ms | **2.0x** |
> Per-Context memory savings increase with scale as the shared browser/GPU/network processes are amortized across more contexts.
### Canvas Fingerprint Isolation
Each context/instance receives a unique noise seed, producing distinct canvas fingerprints. Verified across all scale levels:
| Architecture | Scale | Unique Hashes | Status |
|-------------|-------|---------------|--------|
| Multi-Instance | 10 | 10/10 | PASS |
| Multi-Instance | 25 | 10/10 | PASS |
| Multi-Instance | 50 | 10/10 | PASS |
| Per-Context | 10 | 10/10 | PASS |
| Per-Context | 25 | 10/10 | PASS |
| Per-Context | 50 | 10/10 | PASS |
> Per-Context Fingerprint provides the same fingerprint isolation as running separate browser instances, while sharing infrastructure resources.
### Scaling Characteristics
**Multi-Instance** (N browsers):
- Memory grows linearly: each browser adds ~400-800MB
- Process count grows linearly: ~7-10 processes per browser
- Creation time grows linearly: ~1s per browser
**Per-Context** (1 browser, N contexts):
- Memory grows sub-linearly: contexts share browser/GPU/network processes
- Process count grows more slowly: shared processes are reused
- Creation time grows sub-linearly: no browser startup overhead per context
### At 50 Concurrent Profiles
```
Multi-Instance: 40,218 MB memory | 492 processes | 57.9s to create
Per-Context: 28,553 MB memory | 210 processes | 28.9s to create
──────────────────────────────────────────────────
Savings: 29% memory | 57% processes | 2.0x faster
```
### Context Lifecycle Performance
Continuous create/destroy cycle test (200 iterations):
| Metric | Value |
|--------|-------|
| Context creation (median) | 278ms |
| Context creation (p95) | 369ms |
| Context destruction (median) | 7.9ms |
| Context destruction (p95) | 16ms |
| Memory trend (200 cycles) | Stable (no persistent growth) |
> Context creation is lightweight (~280ms) and destruction is near-instant (~8ms). Memory remains stable over 200 create/destroy cycles with no persistent memory leaks observed.
---
## Trimmed Build: Linux x64 Short-Session Performance
Controlled comparison of **BotBrowser 148 Standard Build** vs **BotBrowser 148 Trimmed Build** on the same Linux x64 host using the same benchmark matrix. For positioning, engineering design, when-to-choose guidance, and FAQ, see the [Trimmed Build product page](TRIMMED_BUILD.md). This section is the performance evidence.
### Test Inputs
| Build | Configuration | Chromium version | Profile |
|---|---|---|---|
| Standard | BotBrowser 148 x64 standard build | 148.0.7778.168 | Windows x64 demo profile, standard-compatible |
| Trimmed (ENT Tier3) | BotBrowser 148 x64 trimmed build (May 2026) | 148.0.7778.168 | Windows x64 demo profile, trimmed-compatible |
Matrix: `1..20 contexts × 10 repeats × 2 builds = 400 official samples`. Both profiles were verified to support per-context flags, per-context proxy settings, proxy auth, and custom headers before the matrix started.
### Method
- Each repeat created `N` independent BrowserContexts, applied `BotBrowser.setBrowserContextFlags`, assigned per-context external proxy settings, loaded a lightweight external page, and ran a minimal fingerprint and proxy probe.
- Process metrics were sampled every `250ms`. CPU came from Linux process accounting; RSS/PSS/USS came from process memory rollups.
- Each repeat closed the browser and checked for residual Chromium processes.
- Both builds used identical launch flags, identical context counts, identical repeat counts, identical warmup shape, identical external target, and identical sampling interval.
### Overall Result
Negative delta means **Trimmed is faster/lighter than Standard**.
| Metric | Standard mean / median / p95 | Trimmed mean / median / p95 | Trimmed delta mean / median / p95 |
|---|---:|---:|---:|
| Wall time ms | 7,262.91 / 7,191.04 / 11,666.96 | 2,771.09 / 2,818.88 / 3,758.50 | **-61.85% / -60.80% / -67.79%** |
| Avg create ms/context | 443.44 / 418.73 / 604.90 | 65.10 / 64.75 / 75.54 | **-85.32% / -84.54% / -87.51%** |
| Avg first nav ms/context | 2,456.19 / 2,417.16 / 3,072.68 | 1,505.45 / 1,515.68 / 1,849.09 | **-38.71% / -37.30% / -39.82%** |
| CPU avg % | 4.12 / 4.22 / 4.78 | 1.83 / 2.02 / 2.89 | **-55.42% / -52.06% / -39.51%** |
| CPU peak % | 25.77 / 27.82 / 40.38 | 8.29 / 9.11 / 12.10 | **-67.81% / -67.25% / -70.03%** |
| RSS peak KB | 2,591,811 / 2,585,150 / 3,762,505 | 2,249,774 / 2,236,104 / 3,303,095 | -13.20% / -13.50% / -12.21% |
| PSS peak KB | 960,327 / 959,095 / 1,309,422 | 660,188 / 656,149 / 895,552 | **-31.25% / -31.59% / -31.61%** |
| USS peak KB | 800,760 / 793,448 / 1,128,869 | 497,876 / 497,038 / 718,904 | **-37.82% / -37.36% / -36.32%** |
| RSS stable KB | 1,499,234 / 1,491,875 / 1,819,937 | 1,377,981 / 1,360,862 / 1,758,705 | -8.09% / -8.78% / -3.36% |
| PSS stable KB | 637,313 / 635,427 / 747,051 | 492,405 / 490,987 / 591,358 | -22.74% / -22.73% / -20.84% |
| USS stable KB | 489,925 / 489,912 / 592,544 | 346,048 / 343,908 / 441,309 | -29.37% / -29.80% / -25.52% |
| Process peak | 26.27 / 27.00 / 40.10 | 19.50 / 19.50 / 28.05 | -25.76% / -27.78% / -30.05% |
| Success rate | 100% | 100% | unchanged |
| Residual processes | 0 | 0 | unchanged |
### Per-Context Matrix
Wall time, context creation, and first navigation at every context count from `1` to `20`. Negative percentage means Trimmed is faster than Standard at that context count.
| N | Wall Standard ms | Wall Trimmed ms | Wall delta | Create delta | First nav delta | CPU avg delta | CPU peak delta | PSS peak delta |
|---:|---:|---:|---:|---:|---:|---:|---:|---:|
| 1 | 1,564.92 | 748.41 | -52.18% | -85.49% | -52.51% | -95.52% | -97.09% | -27.89% |
| 2 | 3,507.80 | 1,948.97 | -44.44% | -88.33% | -43.61% | -92.05% | -89.86% | -28.94% |
| 3 | 3,988.82 | 1,992.15 | -50.06% | -87.99% | -43.78% | -80.93% | -63.42% | -29.17% |
| 4 | 3,955.15 | 2,136.14 | -45.99% | -84.01% | -37.29% | -74.09% | -52.54% | -30.15% |
| 5 | 4,432.40 | 2,204.01 | -50.28% | -85.08% | -37.87% | -68.19% | -51.68% | -30.41% |
| 6 | 5,592.26 | 2,316.21 | -58.58% | -87.36% | -40.32% | -63.93% | -66.42% | -29.53% |
| 7 | 5,141.93 | 2,342.06 | -54.45% | -83.81% | -35.61% | -59.40% | -61.96% | -31.03% |
| 8 | 6,149.22 | 2,556.26 | -58.43% | -84.29% | -37.96% | -54.73% | -59.51% | -30.61% |
| 9 | 6,147.59 | 2,701.18 | -56.06% | -83.77% | -31.58% | -53.26% | -66.09% | -31.56% |
| 10 | 6,985.46 | 2,735.62 | -60.84% | -85.10% | -36.79% | -54.62% | -68.59% | -32.06% |
| 11 | 7,258.48 | 2,891.23 | -60.17% | -84.34% | -36.46% | -52.11% | -61.73% | -31.18% |
| 12 | 7,628.21 | 2,971.22 | -61.05% | -83.98% | -33.97% | -48.32% | -68.29% | -31.84% |
| 13 | 9,976.22 | 3,009.45 | -69.83% | -87.65% | -45.89% | -49.07% | -71.87% | -31.06% |
| 14 | 9,262.40 | 3,222.77 | -65.21% | -85.47% | -37.76% | -47.50% | -67.77% | -32.02% |
| 15 | 9,518.44 | 3,271.86 | -65.63% | -85.19% | -38.25% | -44.81% | -65.17% | -32.83% |
| 16 | 9,709.20 | 3,935.21 | -59.47% | -79.76% | -29.05% | -34.23% | -65.82% | -32.73% |
| 17 | 10,223.93 | 3,619.99 | -64.59% | -84.21% | -37.29% | -41.66% | -68.99% | -31.83% |
| 18 | 11,073.62 | 3,520.06 | -68.21% | -85.94% | -39.39% | -43.13% | -70.31% | -32.56% |
| 19 | 11,321.90 | 3,572.46 | -68.45% | -86.59% | -40.62% | -43.81% | -72.06% | -30.90% |
| 20 | 11,820.21 | 3,726.52 | -68.47% | -84.57% | -41.15% | -39.52% | -71.87% | -31.44% |
> Trimmed is faster than Standard at **every** context count for wall time, average context creation, average first navigation, CPU avg, CPU peak, and PSS peak. The gap is largest in CPU peak (`-51% to -97%`) and per-context creation (`-79% to -88%`), which directly drive throughput for short-session privacy workloads that rotate identities quickly.
### Stability
- Browser main process, network service, GPU, and utility process counts are unchanged across builds.
- Renderer count scales with context count in both builds.
- Trimmed reduces peak process count overall: mean `26.27 → 19.50`, median `27.00 → 19.50`, p95 `40.10 → 28.05`.
- All official runs exited cleanly: `400/400` successful samples, `0` errors, `0` residual Chromium processes.
### Scope Notes
- Linux x64 is the deployment shape Trimmed Build is built for: short-session, high-concurrency Ubuntu fleets are where the gap is largest.
- The benchmark includes external navigation and uses a fixed matrix for both builds.
- Profile bundles, host class, launch flags, and target endpoint were held identical between builds; runtime credentials and absolute paths are intentionally omitted from this customer-facing report.
### Next Steps
- Product overview, engineering design, and FAQ: [TRIMMED_BUILD.md](TRIMMED_BUILD.md)
- Access: [Enterprise](https://botbrowser.io/enterprise/) or [Pricing](https://botbrowser.io/pricing/)
- Public mirror with extended commentary: [Trimmed Build on botbrowser.io](https://botbrowser.io/docs/deployment/trimmed-build/)
---
## Cross-Platform Verification
BotBrowser supports applying any platform's fingerprint on any host OS. Tested on macOS, Linux, and Windows.
### Fingerprint API Latency: macOS Host
All values in milliseconds (median of 1,000 iterations). Headless mode.
| API | Stock Chrome | BB + Android | BB + Windows | BB + macOS |
|-----|-------------|-------------|-------------|-----------|
| Canvas2D `toDataURL()` | 0.5 | 0.5 | 0.5 | 0.5 |
| WebGL `readPixels()` | 0.2 | 0.2 | 0.2 | 0.2 |
| AudioContext Render | 3.9 | 2.9 | 3.2 | 3.7 |
| All other APIs | 0.0 | 0.0 | 0.0 | 0.0 |
### Fingerprint API Latency: Linux Host
Tested in both headless and headed modes.
| API | Headless Stock | Headless BB | Headed Stock | Headed BB |
|-----|---------------|------------|-------------|----------|
| Canvas2D `toDataURL()` | 0.3 | 0.3 | 0.3 | 0.3 |
| WebGL `readPixels()` | 0.1 | 0.1 | 0.1 | 0.1 |
| AudioContext Render | 8.5 | 7.1 | 9.0 | 7.7 |
| Font `measureText()` | 0.1 | 0.1 | 0.1 | 0.1 |
| All other APIs | 0.0 | 0.0 | 0.0 | 0.0 |
### Fingerprint API Latency: Windows Host
Tested in both headless and headed modes.
| API | Headless Stock | Headless BB | Headed Stock | Headed BB |
|-----|---------------|------------|-------------|----------|
| Canvas2D `toDataURL()` | 1.8 | 1.8 | 1.6 | 1.5 |
| Canvas2D `getImageData()` | 0.7 | 0.6 | 0.6 | 0.6 |
| WebGL `readPixels()` | 0.5 | 0.7 | 0.6 | 0.6 |
| AudioContext Render | 10.5 | 9.1 | 8.9 | 10.8 |
| Font `measureText()` | 0.3 | 0.3 | 0.3 | 0.3 |
| All other APIs | 0.0 | 0.0 | 0.0 | 0.0 |
> **Note**: The Windows test environment uses software rendering (no discrete GPU), resulting in higher Canvas/WebGL baseline latency compared to macOS. The relative overhead between Stock and BotBrowser remains **zero**.
### Page Load: Windows Host
| Mode | Stock Chrome | BotBrowser + Android |
|------|-------------|---------------------|
| Headless | 28.7ms | 27.9ms (-0.8ms) |
| Headed | 27.9ms | 27.1ms (-0.8ms) |
### Page Load: Linux Host
| Mode | Stock Chrome | BotBrowser + Android |
|------|-------------|---------------------|
| Headless | 7.4ms | 8.4ms (+1.0ms) |
| Headed | 8.6ms | 6.9ms (-1.7ms) |
> **Result**: Fingerprint protection overhead is **zero** for all core APIs across all three platforms and both rendering modes.
---
## Methodology
### Test Configuration
| Setting | Value |
|---------|-------|
| Chrome version | 145 |
| Automation | Playwright (playwright-core) |
| Benchmark deployment | Local HTTP server (no network dependency) |
| Test categories | Speedometer 3.0, Fingerprint API micro-benchmarks (13 APIs), Page load timing, Per-Context vs Multi-Instance scale |
### How to Reproduce
All benchmark scripts are available in [`docs/benchmarks/`](docs/benchmarks/):
| Script | Purpose |
|--------|---------|
| [`bench-baseline.js`](docs/benchmarks/scripts/bench-baseline.js) | Single-instance benchmark (Speedometer + Fingerprint API + Page load) |
| [`bench-scale.js`](docs/benchmarks/scripts/bench-scale.js) | Per-Context vs Multi-Instance scale test |
| [`run-all.js`](docs/benchmarks/scripts/run-all.js) | Full automated orchestration |
| [`fingerprint-bench.html`](docs/benchmarks/pages/fingerprint-bench.html) | Fingerprint API overhead test page |
| [`config.js`](docs/benchmarks/config.js) | Platform detection and path configuration |
| [`utils.js`](docs/benchmarks/utils.js) | Shared utilities (stats, memory sampling) |
To run them:
```bash
# 1. Clone benchmark suites locally
cd docs/benchmarks
./setup-benchmarks.sh
# 2. Install dependencies
npm install
# 3. Set environment variables
export BROWSER_PATH=/path/to/botbrowser/chrome
export PROFILES_BASE=/path/to/your/profiles
# 4. Run baseline benchmark (single instance)
node scripts/bench-baseline.js --mode headless
# 5. Run scale benchmark (per-context vs multi-instance)
node scripts/bench-scale.js --mode headless --max-scale 50
```
### Statistical Method
- **Benchmark suites**: Warm-up run (discarded) + 3 interleaved measurement runs per configuration, median ± stddev reported
- **Fingerprint APIs**: 1,000 iterations per API, median reported
- **Page loads**: 10 measurements per configuration, median reported
- **Scale tests**: Single run per scale level (deterministic setup)
### Environment Details
**macOS (primary test platform)**:
- Apple M4 Max (16 cores), 64GB RAM
- macOS 15.3, arm64
**Linux (cross-platform verification)**:
- Ubuntu 22.04, x64
**Windows (cross-platform verification)**:
- Intel Xeon (20 cores / 40 threads), 64GB RAM
- Windows 11, x64
---
## Summary
BotBrowser's fingerprint protection engine is designed for production workloads:
1. **Zero measurable overhead** on Speedometer 3.0: headless 42.7 vs 42.8 (-0.2%), headed 42.1 vs 41.8 (+0.7%)
2. **Zero fingerprint API overhead**. Canvas, WebGL, Navigator, Screen, Font APIs show identical latency on macOS, Linux, and Windows, in both headed and headless modes
3. **Per-Context Fingerprint** provides resource savings at scale with full fingerprint isolation:
- 29% less memory at 50 concurrent profiles
- 2x faster profile creation
- 57% fewer OS processes
- 100% canvas fingerprint isolation verified (each context produces a unique hash)
4. **Consistent across platforms**, tested on macOS arm64, Linux x64, and Windows x64 with identical results
For enterprise users running concurrent fingerprint profiles, Per-Context Fingerprint (ENT Tier 3) delivers the same privacy protection with lower infrastructure cost and verified fingerprint isolation between contexts.
## Related Documentation
- [Guides](https://botbrowser.io/docs/) - Comprehensive guides for all BotBrowser features
- [Main README](README.md) - Project overview and quick start
- [Per-Context Fingerprint](PER_CONTEXT_FINGERPRINT.md) - Architecture and API details
- [Validation Results](VALIDATION.md) - Research data across 31+ tracking scenarios
- [Advanced Features](ADVANCED_FEATURES.md) - Comprehensive technical capabilities
- [CLI Flags Reference](CLI_FLAGS.md) - Complete command-line options
Related guides: [Performance Optimization](https://botbrowser.io/docs/deployment/performance-optimization/)
---
**[Legal Disclaimer & Terms of Use](https://github.com/botswin/BotBrowser/blob/main/DISCLAIMER.md) • [Responsible Use Guidelines](https://github.com/botswin/BotBrowser/blob/main/RESPONSIBLE_USE.md)**. BotBrowser is for authorized fingerprint protection and privacy research only.