Whole Antidetect Catalog Donut Browser

Catalogue · Patchright (Python) · Alternatives

Patchright (Python) alternatives

3 entries in this register are declared substitutes for, successors to or predecessors of Patchright (Python), and all of them are still shipping at the last field check. Patchright (Python) itself reads ACTIVE. Every row in the table below is judged by the same rubric, from the same sweep, on the same fields — this page ranks nothing and recommends nothing, because a register that has measured no population is in no position to.

Every row below is judged by the same rule as Patchright (Python) itself, from the same field check. Supersession is only printed where a project or its author says so — this register does not infer that one tool replaces another because it is newer.


Entry Relation Licence Last push Latest release State
Patchright (Python) this entry Apache-2.0 2026-08-09 — ACTIVE
nodriver alternative AGPL-3.0 2026-05-13 — SEMI
Patchright (Node) alternative Apache-2.0 2026-08-05 v1.61.1 · 2026-06-23 ACTIVE
playwright_stealth (maintained fork) alternative MIT 2026-04-04 — SEMI

Read the state column with the licence column. A permissively licensed project that stopped shipping is not safer than a copyleft one that did not.


What Patchright (Python) does, so you know what you are replacing

The Python build of the same patch set, kept in step with the Node package so that a team split across both languages is not running two different evasion surfaces.

A substitute has to do that job, not merely occupy the same category. Parity between the two packages is a maintenance intention, not a guarantee, and the two repositories carry their own push dates in this register for exactly that reason. Compare them before assuming a fix landed in both.

How this register decides what counts as an alternative

nodriver, Patchright (Node), playwright_stealth (maintained fork) are recorded as substitutes for the same job. The alternative relation is symmetric and carries no ordering at all: it says these things answer the same question, and it says nothing whatsoever about which answers it better.

Nothing on this page is a ranking, a score or a recommendation, and nothing on it is a detection-test result — no entry in this register has been run against any anti-bot system by this register. What the table gives you is four measured columns and one derived one, applied identically to every row.

How to read the comparison above

Every candidate reads ACTIVE or SEMI, so the choice here is genuinely about fit rather than about survival. Compare the release column rather than the push column: a project that pushes constantly and tags rarely asks you to depend on a branch, which is a different commitment from depending on a version.

Every entry in the table declares a licence, which is less common in this catalogue than it should be — the entries that declare none are grouped separately. Read the licence column beside the state column rather than after it: a permissively licensed project that stopped shipping is not a safer dependency than a copyleft one that did not.

Full entries

LicenceAGPL-3.0
Pushed2026-05-13
Releasenone
Stars4.7k
StateSEMI
Silent93 d

nodriver

SEMI

The same author's successor to undetected-chromedriver: no webdriver at all, direct CDP control.

Source

Evidence

Why SEMI: pushed_at = 2026-05-13 — 93 days, inside the 90–365 day SEMI band.

FieldValue at this printing
pushed_at2026-05-13
archivedfalse
latest_releasenone published
license.spdx_idAGPL-3.0
stargazers_count4700
http_status200
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: GET https://api.github.com/repos/ultrafunkamsterdam/nodriver

unauthenticated · 60 req/hr

A live read does not change what is printed above it. The site records that you ran it; what GitHub returned is not kept. The printed state moves only when the register is swept and a new printing is issued. raw JSON

See also · superseded by · alternatives

LicenceApache-2.0
Pushed2026-08-05
Releasev1.61.1 · 2026-06-23
Stars4.1k
StateACTIVE
Silent9 d

Patchright (Node)

ACTIVE

Undetected Playwright: patches Runtime.enable and the other CDP leaks that give a driven browser away.

Source

Evidence

Why ACTIVE: pushed_at = 2026-08-05 — 9 days, within the 90-day ACTIVE threshold.

FieldValue at this printing
pushed_at2026-08-05
archivedfalse
latest_releasev1.61.1 · 2026-06-23
license.spdx_idApache-2.0
stargazers_count4100
http_status200
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: GET https://api.github.com/repos/Kaliiiiiiiiii-Vinyzu/patchright

unauthenticated · 60 req/hr

A live read does not change what is printed above it. The site records that you ran it; what GitHub returned is not kept. The printed state moves only when the register is swept and a new printing is issued. raw JSON

See also · superseded by · alternatives

LicenceMIT
Pushed2026-04-04
Release—
Stars263
StateSEMI
Silent132 d

playwright_stealth (maintained fork)

SEMI

The actively-updated 2.x Python playwright-stealth. The one pip installs is often not this one.

Source

Evidence

Why SEMI: pushed_at = 2026-04-04 — 132 days, inside the 90–365 day SEMI band.

FieldValue at this printing
pushed_at2026-04-04
archivedfalse
latest_release—
license.spdx_idMIT
stargazers_count263
http_status200
fetched_at2026-08-14T09:12:00Z
rubric_edition2nd, in force

Endpoint: GET https://api.github.com/repos/Mattwmaster58/playwright_stealth

unauthenticated · 60 req/hr

A live read does not change what is printed above it. The site records that you ran it; what GitHub returned is not kept. The printed state moves only when the register is swept and a new printing is issued. raw JSON

See also · superseded by · alternatives


Questions about replacing Patchright (Python)

Answered from the same fields the table above prints, and from no other source.

What is the best alternative to Patchright (Python)?

This register does not answer that, because it publishes no ranking and has tested no tool to rank. What it can tell you is which candidates are still shipping: nodriver, Patchright (Node), playwright_stealth (maintained fork). The rest of the decision is fit, licence and how much of your own stack you are prepared to change.

Are these Patchright (Python) alternatives still maintained?

nodriver reads SEMI, Patchright (Node) reads ACTIVE, playwright_stealth (maintained fork) reads SEMI. Each of those states is derived from that entry's own measured fields by the rubric in force, at the field check printed in the folio, and the clause that produced it is printed on the entry page.

Why does this list not rank the alternatives?

Because a ranking would be an opinion wearing a number's clothes. Every figure on this site is a date, a count, an SPDX identifier or an HTTP status you can re-fetch from the endpoint named beside it, and there is no honest way to compress those into an ordering without inventing weights nobody published. The rubric sets states; it does not rate them against each other.

Where does the alternatives data for Patchright (Python) come from?

From declared edges in the register itself, never inferred. Each edge is stored once and reversed at build time, and every field in the table is read from the same sweep that produced the rest of the catalogue. The whole set is downloadable as CC0 JSON and CSV, including the supersedes, superseded_by and alternative_to columns.


Everything in section 02 is a patch applied to somebody else's automation stack, which means every one of them inherits that stack's release cadence and breaks on its own schedule. Donut Browser starts from the other end: the fingerprint handling is in the browser it ships rather than in a layer bolted onto a driver, and the local REST API and MCP server mean automation talks to it directly instead of through a patched client library.

Download Donut Browser

curl -fsSL https://donutbrowser.com/install.sh | sh

macOS · Windows · Linux · Nix. Desktop only. Source, AGPL-3.0 · The Patchright (Python) entry in full · Section 02 · the keepers' disclosure