# Undetectable. Still Fast.

Detection and performance benchmarks against [CreepJS](https://abrahamjuliot.github.io/creepjs/) — proving Owl Browser passes every fingerprint test while keeping pace with bare-metal automation tools.

## Baseline With Stealth Plugin

### Playwright

- **Headless**: 100%
- **Like Headless**: 94%
- **Platform**: Linux
- **GPU**: ANGLE (Google, Vulkan 1.3.0 (S...
- **Fonts**: 1/51
- **Devices**: 0
- **User Agent**: HeadlessChrome
- **Confidence**: moderate

creepjs — fingerprint

### Puppeteer

- **Headless**: 100%
- **Like Headless**: 50%
- **Platform**: Linux
- **GPU**: ANGLE (Google, Vulkan 1.3.0 (S...
- **Fonts**: 1/51
- **Devices**: 0
- **User Agent**: HeadlessChrome
- **Confidence**: moderate

creepjs — fingerprint

### Owl Browser

- **Spoofed**: Unique fingerprint per context — each session gets its own identity  
- **Platforms**: Windows, macOS, Linux
- **Headless**: 0%
- **Like Headless**: 31%
- **Platform**: Windows
- **GPU**: ANGLE (AMD, AMD Radeon RX 6900...
- **Fonts**: 5/51
- **Devices**: 7
- **User Agent**: Mozilla/5.0 (Windows NT 10.0...
- **Confidence**: moderate

creepjs — fingerprint

## Fingerprint Uniqueness

Playwright and Puppeteer expose identical device fingerprints — they leak the real machine. Owl Browser generates unique fingerprints per profile at the C++ source level.

| Category | Playwright | Puppeteer | Owl (Windows) | Unique? |
| --- | --- | --- | --- | --- |
| Canvas | `f5ae5edb` | `f5ae5edb` | `dbf90531` |  |
| WebGL | `208a9379` | `208a9379` | `59bfb3f6` |  |
| Audio | `9048f6b9` | `9048f6b9` | `2655fd77` |  |
| Fonts | `f936b9a1` | `f936b9a1` | `023b83e2` |  |
| DOMRect | `c4c4b540` | `c4c4b540` | `8e02378c` |  |
| SVGRect | `cbd2ed1a` | `cbd2ed1a` | `cca10e0b` |  |
| Screen | `5ccbceb6` | `b0313e03` | `39974c4d` |  |

Identical hash — real device leaked  
Unique hash — properly spoofed

## Stealth Has a Cost. Here's How Small It Is.

Playwright and Puppeteer run bare — no fingerprint spoofing, no context isolation, no anti-detection. Every Owl request includes all of that, yet full-cycle times stay competitive. 1000 sequential iterations per browser, same machine, same network. Median times shown.

### Cold Start

median (p95)

- **Owl**: 21.6ms  
  p95: 32.2
- **Playwright**: 60.8ms  
  p95: 77.1
- **Puppeteer**: 179.1ms  
  p95: 206.4

### Navigation

median (p95)

- **Owl**: 183.0ms  
  p95: 213.0
- **Playwright**: 158.6ms  
  p95: 190.9
- **Puppeteer**: 162.9ms  
  p95: 195.0

### Screenshot

median (p95)

- **Owl**: 41.5ms  
  p95: 42.4
- **Playwright**: 79.7ms  
  p95: 94.5
- **Puppeteer**: 98.9ms  
  p95: 116.0

### Close

median (p95)

- **Owl**: 11.3ms  
  p95: 12.1
- **Playwright**: 14.9ms  
  p95: 22.6
- **Puppeteer**: 116.0ms  
  p95: 136.0

### Full Cycle

median (p95)

- **Owl**: 258.5ms  
  p95: 296.7
- **Playwright**: 316.0ms  
  p95: 355.4
- **Puppeteer**: 560.0ms  
  p95: 612.1

Methodology: Each browser performs 1000 sequential iterations of: create/launch → navigate to target URL (wait for domcontentloaded) → capture screenshot → close. All times in milliseconds. Playwright and Puppeteer run inside the benchmark container (local process). Owl Browser runs in a separate container and is accessed via REST API over localhost, adding ~5-10ms of network overhead per API call — Owl's real times are faster than shown. Sequential execution, same machine. Owl times include the full cost of stealth — fingerprint generation, per-context isolation, and REST API overhead to an isolated container.

## Concurrency Scaling

All sessions launch simultaneously. Each performs a full cycle — create context, navigate, screenshot, and close.

Owl, Playwright, and Puppeteer all completed successfully across every concurrency level.

## Detection Immunity, Production Speed

Zero headless detection. Unique fingerprints on every session. Competitive full-cycle performance. Deploy Owl Browser and stop getting blocked.
