Patchright vs Playwright: What Patchright Actually Patches (2026)

Last updated: 09 Nov 2026

Patchright vs Playwright: What Patchright Actually Patches (2026)

Short answer: if you are writing tests, use Playwright. If you are scraping a site that blocks you, use Patchright. It is a drop-in replacement for the same API, so the migration is an import change, and it removes specific detection signals that vanilla Playwright leaks by design.

The comparison is not really "which browser automation library is better". Patchright is Playwright, with its automation leaks patched out of the driver. The real question is whether those patches are enough for your target, and what you do when they are not.

Choose Before You Read

Your situation Use
Writing end-to-end tests for your own app Playwright
Scraping a site with no WAF Playwright — Patchright buys you nothing
Getting blocked on browser signals on a Node.js or Python stack Patchright
Already on playwright-extra and still blocked Patchright
Blocked by Akamai or PerimeterX behavioural scoring Neither is reliably enough
You want the data, not a stealth stack to maintain See the last section

What Patchright Changes

Vanilla Playwright is not trying to hide. It is a testing tool, and it announces itself in ways that cost nothing in CI and a lot in production scraping. Patchright patches the Playwright driver to remove the main ones. Per its README (checked Nov 2026):

1. The Runtime.enable CDP leak. Playwright calls Runtime.enable over the Chrome DevTools Protocol to track execution contexts, and that call can be detected from inside the page. Patchright avoids it by running its JavaScript in isolated execution contexts. The README calls this "the biggest patch", and it is the main reason Patchright gets further than playwright-extra, which works in JavaScript and cannot remove a CDP call.

2. Console.enable. Also detectable, so Patchright disables the Console API. The side effect is that console output does not work in Patchright.

3. Launch flags. It adds --disable-blink-features=AutomationControlled, so navigator.webdriver is not set, and drops --enable-automation and several other Playwright defaults such as --disable-extensions.

The distinction that makes this work: these changes happen in the driver and at launch, not in the page. A JavaScript-injection approach has to redefine properties after load, and redefinition is itself detectable, because an Object.defineProperty guard can spot a property whose descriptor was rewritten. A property that was never set leaves nothing to spot.

What Patchright does not touch is the browser binary. The TLS handshake comes from whichever Chromium or Chrome you launch, which is one reason the README recommends real Google Chrome over Chromium.

Patchright vs Playwright: Side by Side

Facts from each project's documentation and the npm registry, checked Nov 2026.

Playwright Patchright
API Reference implementation Playwright's API, drop-in; passes most but not all Playwright tests, per its README
Built for Testing and automation Scraping protected targets
Runtime.enable CDP call Made Avoided
Console.enable Made Disabled, so console output does not work
navigator.webdriver Set Not set (AutomationControlled disabled at launch)
Patch layer None Driver and launch flags
Browser binary Unchanged Unchanged; real Chrome recommended
Behavioural scoring Not addressed Not addressed
Browser engine Chromium, Firefox, WebKit Chromium-based only
Languages Node.js, Python, Java, .NET (docs) Node.js, Python, community .NET
Licence Apache-2.0 Apache-2.0
Maintenance Microsoft Small independent team

Migrating: It Is an Import Change

Patchright mirrors Playwright's API surface, so on a Node.js codebase the move is the import and the install. Your selectors, your page objects, your waits and your context handling all carry over unchanged.

Two things to keep in mind. First, Patchright is Chromium only: if you are running the same suite across Firefox and WebKit, only the Chromium leg moves. Second, npx patchright install chromium (or patchright install chrome for the recommended real Chrome) is its own install step, so your CI image needs it added. The README's fullest setup is also headed, with a persistent context and no fixed viewport, which on a server means a virtual display.

The practical test for whether the migration was worth it is not a fingerprint site. It is your own target, at your own request rate, over a few hours — a fingerprint check passes long before a rate-limiter stops caring.

What Patchright Does Not Fix

Patchright removes technical automation signals. Modern bot-management products also run behavioural scoring, and none of the patches touch it.

Behavioural scoring looks at mouse-movement paths, scroll velocity, dwell time before the first click, keystroke cadence, and the timing distribution of your requests. A patched browser that loads a page, reads the DOM in 400ms and leaves has a pattern no driver patch addresses. Against vendors that weight behaviour heavily, such as Akamai Bot Manager and HUMAN (PerimeterX), that is the layer left to catch you, so do not expect a driver patch alone to settle it.

It also does not give you proxies. A clean fingerprint from a datacentre IP that has already been flagged is refused at the edge before anything in the browser is evaluated.

So the usual failure sequence is: vanilla Playwright blocked instantly → Patchright passes → volume goes up → rate-limited → residential proxies added → behavioural scoring catches the timing → and now you are writing a mouse-movement simulator. That last step is where most teams find out stealth is not a library choice.

Patchright vs the Alternatives

If Patchright is not enough, the next moves are sideways, not up.

  • Camoufox: a Firefox fork with fingerprint changes made at the C++ level. Its own README puts memory at about 200MB per browser and warns that performance has dropped with the current Firefox base (checked Nov 2026). Right for high-value, low-frequency targets; heavy for a daily catalogue crawl.
  • playwright-extra: the JavaScript-injection approach Patchright supersedes. Its last npm release, 4.3.6, was in March 2023 (checked Nov 2026). Do not start new work on it.
  • nodriver: drives real Chrome over CDP without Playwright or WebDriver at all. Python only, AGPL-3.0 licensed, and no behavioural handling.
  • No browser at all: on Akamai, which reads the TLS handshake before anything in the page, TLS impersonation with curl_cffi fixes the first signal checked and runs without a browser, at a fraction of the compute. The Akamai-specific argument is in Playwright vs Akamai Bot Manager.

A wider comparison, including the Python playwright-stealth line, is in Playwright stealth in 2026. For install commands, language and browser coverage and the limits in one place, see What Is Patchright? For the anti-bot systems themselves rather than the tools, see bypassing Cloudflare, Akamai and PerimeterX.

When Patching Stops Being the Answer

There is a volume at which this stops being a library decision and becomes a staffing one.

Stealth tools decay. Each anti-bot vendor ships detection updates, each update needs a corresponding patch, and the gap between the two is downtime on whichever data source you were depending on. Maintaining that cycle is a recurring weekly cost that does not appear in any install command.

If what you actually need is competitor prices, stock levels and product data landing in your systems, rather than a stealth stack to keep alive, the Patchright-vs-Playwright question is the wrong one. ScrapeWise (which publishes this blog) runs the browsers and the proxies and delivers structured rows as a table, CSV or Excel, through the API or over MCP. You pay per page: EUR 0.15, 0.75, 1.50 or 3.75 per 1,000 pages depending on whether the page needs rendering or residential proxies. Schedules run at most once a day, plus manual runs. Some sites block automated visits or need a login, and no tool covers every site.

You can also call ready-made scraping API endpoints directly, or see how this feeds competitor price tracking.

So Which Should You Use?

  • Playwright — tests, unprotected targets, or any stack where you need Firefox and WebKit too.
  • Patchright — a Node.js or Python scraper that is being blocked on browser signals. It is the cheapest upgrade available and costs you one import line.
  • Camoufox: Patchright is passing the fingerprint checks and still getting blocked, and the target is worth a heavier, slower browser per page.
  • None of them — you want delivered rows on a schedule and would rather not run a stealth stack at all.

If it is that last one, the import line you change is ours rather than Patchright's:

pip install scrapewise
from scrapewise import ScrapewiseClient

with ScrapewiseClient() as sw:          # reads SCRAPEWISE_API_KEY from the environment
    html = sw.load_site("https://www.example.com/product/123")

load_site returns the page's HTML through our proxy pool, so the patch-and-detection cycle in this article is ours to keep up with, not yours. Run your own target URLs through it: the first 5 requests are free, no card needed, then the per-page rates. If you would rather stay in the editor, the same key works as an MCP server.

Paste a URL your current tool cannot reach

Run the pages your current tool misses and see what comes back. Pay per page, no per-SKU pricing.

Not ready to sign up? See 40 rows from a real Amazon search →

5 free requests no credit card · from €0.15 per 1,000 pages · or call it from Python or MCP →

FAQ

Frequently asked questions

Patchright vs Playwright in 2026 — what Patchright patches, whether it is a drop-in replacement, what still blocks it, and when to stop patching

Patchright is Playwright with its automation leaks patched out of the driver. Playwright is a testing tool and does not try to hide: it calls Runtime.enable and Console.enable over the Chrome DevTools Protocol and launches Chromium with flags such as --enable-automation that set navigator.webdriver. Per its README (checked Nov 2026), Patchright avoids Runtime.enable by using isolated execution contexts, disables Console.enable, and changes the launch flags. It does not modify the browser binary. The API is the same, so the difference in your code is the import line.

On Chromium, mostly yes. Patchright mirrors Playwright's API, so selectors, page objects, waits and context handling carry over; its README says it passes most, but not all, of Playwright's own tests. Caveats: it supports Chromium-based browsers only, so a suite running across Firefox and WebKit only moves its Chromium leg; console output does not work because Console.enable is disabled; and patchright install is its own step in CI.

Sometimes, depending on the target's configuration. The Patchright README lists Cloudflare among the systems it says it passes with the right setup (headed, persistent context, real Chrome), which is the maintainers' claim. The reason it does better than playwright-extra is the Runtime.enable CDP call, which Patchright avoids and JavaScript-level plugins cannot remove. Stricter configurations also weigh IP reputation and behaviour such as mouse paths and request timing, and no driver patch addresses those.

Because it fixes technical automation signals and not behavioural ones. Modern bot-management products score mouse-movement paths, scroll behaviour, dwell time before the first click and the timing of requests. A patched browser that loads a page, reads the DOM in 400ms and leaves has a pattern no driver patch touches, and vendors that weight behaviour heavily, such as Akamai Bot Manager and HUMAN (PerimeterX), can catch it there. Patchright also does not give you proxies, and a flagged datacentre IP is refused at the edge before the browser is evaluated at all.

Patchright first, because it costs one import line and runs on Chromium or Chrome. Move to Camoufox only when Patchright is passing fingerprint checks and still getting blocked, and the target is worth the cost: Camoufox is a Firefox fork with fingerprint changes made at the C++ level, but its own README puts memory at about 200MB per browser and warns that performance has dropped with its current Firefox base (checked Nov 2026). That suits high-value, low-frequency targets better than a daily catalogue crawl.

When the maintenance cycle costs more than the data. Stealth tools decay: each anti-bot vendor ships detection updates, each update needs a corresponding patch, and the gap between the two is downtime on whichever source you depend on. If what you need is competitor prices, stock levels and product data arriving in your systems rather than a stealth stack to keep alive, ScrapeWise runs the browsers and proxies and delivers structured rows, priced per page from EUR 0.15 per 1,000 pages, with 5 free requests and no card needed on a new account. Some sites block automated visits or need a login, so no tool covers every site.