Skip to Content

BotBrowser Performance Benchmark

Performance data comparing BotBrowser fingerprint protection overhead against stock Chromium, and evaluating Per-Context Fingerprint scalability.

Key Findings

QuestionAnswer
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.
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.

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)

ModeBenchmarkStock ChromeBotBrowser + AndroidDifference
HeadlessSpeedometer 3.042.8 (±0.31)42.7 (±0.25)-0.2%
HeadedSpeedometer 3.041.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).

APIStock ChromeBB + AndroidBB + WindowsBB + macOS
Canvas2D toDataURL()0.50.50.50.5
Canvas2D getImageData()0.00.00.00.0
WebGL getParameter(RENDERER)0.00.00.00.0
WebGL getSupportedExtensions()0.00.00.00.0
WebGL getShaderPrecisionFormat()0.00.00.00.0
WebGL readPixels()0.20.20.20.2
AudioContext Offline Render + Hash3.92.93.23.7
Navigator userAgent0.00.00.00.0
Navigator platform0.00.00.00.0
Screen width + height0.00.00.00.0
performance.now()0.00.00.00.0
Font measureText() (50 fonts)0.00.00.00.0
Intl DateTimeFormat.resolvedOptions0.00.00.00.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).

ConfigurationLoad Timevs Stock
Stock Chrome (no profile)29.7ms-
BotBrowser + Android101.6ms+72ms
BotBrowser + Windows102.9ms+73ms
BotBrowser + macOS105.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.


Scale Performance: Per-Context vs Multi-Instance

The core value proposition for enterprise users: running N different fingerprint profiles simultaneously.

Architecture Comparison

ArchitectureHow It Works
Multi-InstanceLaunch 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

ScaleMI MemoryPC MemorySavingsMI ProcessesPC ProcessesMI Create TimePC Create TimeSpeedup
116,055 MB14,022 MB13%1401361,667ms627ms2.7x
1023,345 MB19,586 MB16%21215011,434ms4,854ms2.4x
2530,133 MB23,781 MB21%32017428,205ms14,415ms2.0x
5040,218 MB28,553 MB29%49221057,891ms28,946ms2.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:

ArchitectureScaleUnique HashesStatus
Multi-Instance1010/10PASS
Multi-Instance2510/10PASS
Multi-Instance5010/10PASS
Per-Context1010/10PASS
Per-Context2510/10PASS
Per-Context5010/10PASS

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):

MetricValue
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. This section is the performance evidence.

Test Inputs

BuildConfigurationChromium versionProfile
StandardBotBrowser 148 x64 standard build148.0.7778.168Windows x64 demo profile, standard-compatible
Trimmed (ENT Tier3)BotBrowser 148 x64 trimmed build (May 2026)148.0.7778.168Windows 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.

MetricStandard mean / median / p95Trimmed mean / median / p95Trimmed delta mean / median / p95
Wall time ms7,262.91 / 7,191.04 / 11,666.962,771.09 / 2,818.88 / 3,758.50-61.85% / -60.80% / -67.79%
Avg create ms/context443.44 / 418.73 / 604.9065.10 / 64.75 / 75.54-85.32% / -84.54% / -87.51%
Avg first nav ms/context2,456.19 / 2,417.16 / 3,072.681,505.45 / 1,515.68 / 1,849.09-38.71% / -37.30% / -39.82%
CPU avg %4.12 / 4.22 / 4.781.83 / 2.02 / 2.89-55.42% / -52.06% / -39.51%
CPU peak %25.77 / 27.82 / 40.388.29 / 9.11 / 12.10-67.81% / -67.25% / -70.03%
RSS peak KB2,591,811 / 2,585,150 / 3,762,5052,249,774 / 2,236,104 / 3,303,095-13.20% / -13.50% / -12.21%
PSS peak KB960,327 / 959,095 / 1,309,422660,188 / 656,149 / 895,552-31.25% / -31.59% / -31.61%
USS peak KB800,760 / 793,448 / 1,128,869497,876 / 497,038 / 718,904-37.82% / -37.36% / -36.32%
RSS stable KB1,499,234 / 1,491,875 / 1,819,9371,377,981 / 1,360,862 / 1,758,705-8.09% / -8.78% / -3.36%
PSS stable KB637,313 / 635,427 / 747,051492,405 / 490,987 / 591,358-22.74% / -22.73% / -20.84%
USS stable KB489,925 / 489,912 / 592,544346,048 / 343,908 / 441,309-29.37% / -29.80% / -25.52%
Process peak26.27 / 27.00 / 40.1019.50 / 19.50 / 28.05-25.76% / -27.78% / -30.05%
Success rate100%100%unchanged
Residual processes00unchanged

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.

NWall Standard msWall Trimmed msWall deltaCreate deltaFirst nav deltaCPU avg deltaCPU peak deltaPSS peak delta
11,564.92748.41-52.18%-85.49%-52.51%-95.52%-97.09%-27.89%
23,507.801,948.97-44.44%-88.33%-43.61%-92.05%-89.86%-28.94%
33,988.821,992.15-50.06%-87.99%-43.78%-80.93%-63.42%-29.17%
43,955.152,136.14-45.99%-84.01%-37.29%-74.09%-52.54%-30.15%
54,432.402,204.01-50.28%-85.08%-37.87%-68.19%-51.68%-30.41%
65,592.262,316.21-58.58%-87.36%-40.32%-63.93%-66.42%-29.53%
75,141.932,342.06-54.45%-83.81%-35.61%-59.40%-61.96%-31.03%
86,149.222,556.26-58.43%-84.29%-37.96%-54.73%-59.51%-30.61%
96,147.592,701.18-56.06%-83.77%-31.58%-53.26%-66.09%-31.56%
106,985.462,735.62-60.84%-85.10%-36.79%-54.62%-68.59%-32.06%
117,258.482,891.23-60.17%-84.34%-36.46%-52.11%-61.73%-31.18%
127,628.212,971.22-61.05%-83.98%-33.97%-48.32%-68.29%-31.84%
139,976.223,009.45-69.83%-87.65%-45.89%-49.07%-71.87%-31.06%
149,262.403,222.77-65.21%-85.47%-37.76%-47.50%-67.77%-32.02%
159,518.443,271.86-65.63%-85.19%-38.25%-44.81%-65.17%-32.83%
169,709.203,935.21-59.47%-79.76%-29.05%-34.23%-65.82%-32.73%
1710,223.933,619.99-64.59%-84.21%-37.29%-41.66%-68.99%-31.83%
1811,073.623,520.06-68.21%-85.94%-39.39%-43.13%-70.31%-32.56%
1911,321.903,572.46-68.45%-86.59%-40.62%-43.81%-72.06%-30.90%
2011,820.213,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


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.

APIStock ChromeBB + AndroidBB + WindowsBB + macOS
Canvas2D toDataURL()0.50.50.50.5
WebGL readPixels()0.20.20.20.2
AudioContext Render3.92.93.23.7
All other APIs0.00.00.00.0

Fingerprint API Latency: Linux Host

Tested in both headless and headed modes.

APIHeadless StockHeadless BBHeaded StockHeaded BB
Canvas2D toDataURL()0.30.30.30.3
WebGL readPixels()0.10.10.10.1
AudioContext Render8.57.19.07.7
Font measureText()0.10.10.10.1
All other APIs0.00.00.00.0

Fingerprint API Latency: Windows Host

Tested in both headless and headed modes.

APIHeadless StockHeadless BBHeaded StockHeaded BB
Canvas2D toDataURL()1.81.81.61.5
Canvas2D getImageData()0.70.60.60.6
WebGL readPixels()0.50.70.60.6
AudioContext Render10.59.18.910.8
Font measureText()0.30.30.30.3
All other APIs0.00.00.00.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

ModeStock ChromeBotBrowser + Android
Headless28.7ms27.9ms (-0.8ms)
Headed27.9ms27.1ms (-0.8ms)

Page Load: Linux Host

ModeStock ChromeBotBrowser + Android
Headless7.4ms8.4ms (+1.0ms)
Headed8.6ms6.9ms (-1.7ms)

Result: Fingerprint protection overhead is zero for all core APIs across all three platforms and both rendering modes.


Methodology

Test Configuration

SettingValue
Chrome version145
AutomationPlaywright (playwright-core)
Benchmark deploymentLocal HTTP server (no network dependency)
Test categoriesSpeedometer 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/:

ScriptPurpose
bench-baseline.jsSingle-instance benchmark (Speedometer + Fingerprint API + Page load)
bench-scale.jsPer-Context vs Multi-Instance scale test
run-all.jsFull automated orchestration
fingerprint-bench.htmlFingerprint API overhead test page
config.jsPlatform detection and path configuration
utils.jsShared utilities (stats, memory sampling)

To run them:

# 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 guides: Performance Optimization 


Legal Disclaimer & Terms of UseResponsible Use Guidelines. BotBrowser is for authorized fingerprint protection and privacy research only.

Updated