Skip to content

Obscura

A from-scratch headless browser in Rust with V8 and a Chrome DevTools endpoint, sold on low memory and built-in anti-detection.

Reviewed by Sheela · Updated

View on GitHub Open source

Our rating

3.7/5

Obscura is a promising way to cut the memory bill of scraping at scale, but it is a six-month-old engine with an anonymous owner and a stealth pitch, so it belongs behind your own tests, not in front of them.

What is Obscura?

Obscura is a headless browser engine written in Rust rather than a wrapper around Chrome. It runs page JavaScript in an embedded V8, implements enough of the Chrome DevTools Protocol for Puppeteer and Playwright to connect to it, and since version 0.2 renders pages itself for screenshots, screencasts and PDFs without Chromium. It ships as one binary with a fetch command, a parallel scrape command, a CDP server and an MCP server with 14 browser tools.

The project is real and active, but young and pseudonymous. The repository was created on 13 April 2026 by an account opened two weeks earlier, has passed 1,500 commits, and has shipped a release roughly every two weeks since August; v0.2.5 came out on 17 October 2026. Most commits come from one contributor other than the owner. Cloudflare's engineering post on its Kitesurf agent browser, published on 6 August 2026, says the team 'got initial inspiration from obscura'.

The code is Apache-2.0. A hosted Obscura Cloud with residential proxies is on a waitlist, with no pricing published.

Is Obscura worth it?

Obscura's appeal is arithmetic. The README claims about 30 MB of memory per instance against 200 MB or more for headless Chrome, page loads of 51 to 84 ms against 500 to 800 ms, and instant start-up. Those are the project's own figures, with the benchmark suite kept in a separate repository; no independent measurement appeared in the sources we checked. If they hold even roughly, a scraping box that runs dozens of Chrome instances could run several times as many Obscura workers.

The trade is compatibility. This is an independent engine, not Chromium, and the README says plainly that long-tail CSS, some Web APIs, media playback, compositor effects and font rasterisation may differ. The CDP surface covers the common Target, Page, Runtime, DOM, Network, Fetch, Storage and Input methods, which is enough for most Puppeteer and Playwright scraping scripts but not a promise that a full end-to-end test suite behaves as it would in Chrome. Heavy single-page apps can hit the default 30-second script budget.

The positioning deserves a plain description. The optional stealth build randomises GPU, canvas, audio and screen fingerprints per session, reports navigator.webdriver as undefined, marks dispatched events as trusted and blocks 3,520 tracker domains. Its one listed sponsor is a residential proxy seller advertising 'No KYC required'. Respecting robots.txt is off unless you pass --obey-robots. The tool is aimed at sites that do not want to be scraped, and the legal and terms-of-service exposure falls on whoever runs it.

The security defaults are careful. The CDP and HTTP MCP servers refuse to bind beyond loopback unless a bearer token of at least 32 bytes is set, fetches to private and cloud-metadata addresses are blocked by default to stop server-side request forgery, and the Docker image runs as a non-root user on a distroless base. Against that, the owner is an account with no name or company attached, so a team adopting it should pin release versions and build from source rather than piping the latest binary into production.

Where it earns its place

  • A data engineer at a price-monitoring start-up

    Render 50,000 JavaScript-heavy product pages a night on fewer servers

    Run obscura scrape with --concurrency set per box and an --eval expression that returns price and stock as JSON. Test a sample against headless Chrome first; any page that renders differently goes back to the Chrome pool.

  • An agent developer using Claude Desktop or Cursor

    Give the agent a lightweight browser without installing Chrome

    Add obscura mcp as a stdio server; the agent gets navigate, snapshot, click, fill, evaluate, screenshot and PDF tools. browser_evaluate runs arbitrary JavaScript, so treat pages the agent visits as untrusted input.

  • A platform team running a shared scraping service

    Host a CDP endpoint for several internal clients

    Run obscura serve with --workers and the --worker-max-rss and --worker-max-age recycling options, behind OBSCURA_CDP_TOKEN. A worker crash closes its sessions, so clients must reconnect.

Before you commit

Setup
Download a release archive for Linux, macOS or Windows (plain, -stealth or -no-render builds), use the Docker image, or nix-env -iA nixpkgs.obscura. Building from source needs Rust 1.75 or later and about five minutes for the first V8 compile; the stealth build also needs CMake, Clang and LLVM.
Integrations
Puppeteer and Playwright via connectOverCDP; an MCP server over stdio or HTTP with 14 tools; a Rust library; a community plugin for the Hermes agent. HTTP and SOCKS5 proxies are supported on every command.
Data and privacy
Runs locally; a search of the repository found no telemetry code. CDP and HTTP MCP need a 32-byte bearer token to bind beyond loopback; private-network fetches are blocked unless --allow-private-network is set. No published security advisories.
Cost at scale
Free apart from servers and proxies. The project's 30 MB per instance claim, if it holds for your sites, cuts the RAM needed per concurrent page several times over against Chrome. Obscura Cloud pricing is not published.
Limits
About 213 open issues. Rendering is described as still evolving; video playback, some Web APIs and fonts may not match Chromium. Response bodies over 2 MiB are not retained by default. Pre-1.0 versioning, with breaking changes possible.

What's good

  • Single Rust binary, no Chrome or Node.js needed
  • Puppeteer and Playwright connect over CDP
  • Token required for any non-loopback CDP or MCP bind
  • SSRF protection on by default

What's not

  • Independent engine; rendering and Web APIs differ from Chromium
  • Speed and memory figures are the project's own
  • Pseudonymous owner, project six months old
  • robots.txt ignored unless you opt in

Best for

Scraping and agent teams paying for many Chrome instances who can test their target sites against a non-Chromium engine first.

Obscura alternatives

Obscura: common questions

Is Obscura worth it?
Obscura is a promising way to cut the memory bill of scraping at scale, but it is a six-month-old engine with an anonymous owner and a stealth pitch, so it belongs behind your own tests, not in front of them. We rate it 3.7 out of 5.
How much does Obscura cost?
Free under Apache-2.0. Obscura Cloud (hosted, with proxies) is waitlist-only and unpriced.
What are the downsides of Obscura?
Independent engine; rendering and Web APIs differ from Chromium; speed and memory figures are the project's own; pseudonymous owner, project six months old; robots.txt ignored unless you opt in.
Who is Obscura best for?
Scraping and agent teams paying for many Chrome instances who can test their target sites against a non-Chromium engine first.
How much does Obscura cost for a team or in production?
Free apart from servers and proxies. The project's 30 MB per instance claim, if it holds for your sites, cuts the RAM needed per concurrent page several times over against Chrome. Obscura Cloud pricing is not published.
Is Obscura safe for company data?
Runs locally; a search of the repository found no telemetry code. CDP and HTTP MCP need a 32-byte bearer token to bind beyond loopback; private-network fetches are blocked unless --allow-private-network is set. No published security advisories.
What are the best Obscura alternatives?
The closest alternatives we have reviewed are Crawl4AI, Firecrawl, Stagehand and Browser Use.

Answers checked Oct 26, 2026.