Owl Light mascot

A drop-in stealth Chromium
for Playwright & Puppeteer

No proxies. No JavaScript injection. Real fingerprint virtualization, baked at the source.

release platforms MIT zero lies on creepjs

How it's different

Most "stealth" plugins inject JavaScript on top of plain Chromium and override navigator.webdriver, screen.width, etc. Detection systems read those right back through the prototype chain — and the JavaScript itself is detectable. Owl Light removes that whole layer:

🔧 Compiled-in spoofing

Patched Blink/V8 hooks for screen, navigator, canvas, WebGL, audio, fonts, timing, and Sec-CH-UA. Pages see authentic values from the real Blink code paths — there's no JavaScript layer to detect.

🦉 5 real-world VM profiles

Each binary ships with macOS, Windows, and Linux profile sets covering recent hardware: M3-class Macs, AMD/Nvidia/Intel GPUs, and Linux distros — selected at launch via --owl-os.

🛡️ Zero lies on creepJS

The workerScope.totalLies counter is 0 across all three OS profiles. navigator.webdriver, headless flags, and CDP artefacts are all neutralised at the source.

⚡ Drop-in replacement

Pass the binary as executablePath in Playwright or Puppeteer launch options. No SDK, no dependency, no proxy — just point and run.

🍎 Notarized for macOS

Signed with our Apple Developer ID and notarized with Apple's notary service. Gatekeeper accepts the binary without a manual override.

📦 Self-contained

One tarball, ~230 MB. No installer, no dependencies, no system fonts required — bundles its own. Works in Docker out of the box.

Install

Single command on macOS or Linux. The script auto-detects your platform and drops the binary in ./bin/owl_light.

# macOS (Apple Silicon) or Linux (amd64/arm64):
curl -fsSL https://raw.githubusercontent.com/Olib-AI/owl-light/main/scripts/install.sh | bash

# Or download manually:
curl -L -o owl_light.tar.gz \
  https://github.com/Olib-AI/owl-light/releases/latest/download/owl_light-macos-arm64.tar.gz
tar -xzf owl_light.tar.gz

Use it from Playwright

import { chromium } from 'playwright';

const browser = await chromium.launchPersistentContext('', {
  executablePath: './bin/owl_light',
  headless: false,
  args: ['--owl-os=macos', '--owl-chrome-version=147'],
});

const page = browser.pages()[0];
await page.goto('https://abrahamjuliot.github.io/creepjs/');
// Open the page console — workerScope.totalLies = 0 ✓

Or from Python with Playwright:

from playwright.async_api import async_playwright

async with async_playwright() as p:
    browser = await p.chromium.launch_persistent_context(
        user_data_dir="",
        executable_path="./bin/owl_light",
        headless=False,
        args=["--owl-os=windows", "--owl-chrome-version=147"],
    )

More recipes in examples/ — basic navigation, form login, multi-window, network interception, screenshot capture.

Verified across all three OS profiles

creepJS audit, fresh from the latest release:

creepJS run with --owl-os=macos showing zero lies
--owl-os=macos · workerScope.totalLies = 0
creepJS run with --owl-os=windows showing zero lies
--owl-os=windows · workerScope.totalLies = 0
creepJS run with --owl-os=linux showing zero lies
--owl-os=linux · workerScope.totalLies = 0

Owl Light vs. Owl Browser (Enterprise)

Owl Light · MIT Owl Browser · Enterprise
Source-level fingerprint spoofing
Drop-in for Playwright / Puppeteer
Zero-lies on creepJS
5 VM profiles per OS500+
REST API + WebSocket + MCP170+ tools
Built-in vision LLM (Qwen3-VL-2B)
Natural-language automation (NLA)
CAPTCHA solving (text / image / puzzle)
Video recording + live MJPEG stream
TOR integration
256 isolated parallel sessions / instance
Docker image + React control panelbasicfull
SOC2-ready deployment

Need more than a binary?

Owl Browser is the full enterprise platform — REST API, WebSocket, MCP server, vision LLM, NLA, CAPTCHA solving, video recording, TOR integration, and 256 isolated sessions per instance.

Self-hosted, SOC2-ready, with SLAs.

Visit owlbrowser.net →