Web Automation

What Is zendriver?

What Is zendriver? - conceptual illustration
On this page

zendriver is an open-source, community-maintained fork of nodriver. It keeps the same fundamental design - an async-first Python framework that drives Chrome directly over the Chrome DevTools Protocol with no Selenium or WebDriver dependency - while opening the project to community contributions and layering on fixes and features. It is the third link in the lineage that runs undetected-chromedriver to nodriver to zendriver, and it is maintained under the cdpdriver organisation rather than by a single author.

Quick facts

RelationshipCommunity fork of nodriver
ArchitectureAsync-first, direct CDP (same as nodriver)
Maintainercdpdriver organisation (community)
LicenseAGPL-3.0 (inherited from nodriver)
MaturityAlpha - actively, community-maintained

Why zendriver was forked

The fork's stated motivation is faster, more open development. Its maintainers cite three reasons: unmerged bugfixes - open pull requests fixing significant bugs that sat unaddressed upstream; modernised development practices, such as adding static-analysis tooling like ruff and mypy; and more open community engagement, since upstream contributions were heavily restricted, so the fork opened its issue tracker and pull requests to the community. The premise is quicker iteration and merging of community fixes rather than a different technical direction.

Same architecture as nodriver

Architecturally zendriver is the same as nodriver: async-first Python driving the browser directly over the Chrome DevTools Protocol, with no Selenium or WebDriver layer. It adds conveniences such as Docker support and ongoing fixes, but it does not change the core communication model. So everything true of nodriver's direct-CDP approach - the benefits of skipping the WebDriver layer and the CDP channel's own observable tells - applies to zendriver as well.

Licensing and what to expect

zendriver inherits nodriver's AGPL-3.0 license, so the same network-use consideration applies for hosted services. Like nodriver it carries an alpha development status, meaning it is not declared stable, though the fork's whole reason for existing is faster turnaround on community fixes. As with the rest of this family, it governs what the browser exposes and not the network: IP reputation and TLS fingerprint remain independent signals you handle separately.

Code example

python
# zendriver is a community fork of nodriver with the same async, direct-CDP
# architecture - the API mirrors nodriver closely.
import zendriver as zd

async def main():
    browser = await zd.start()
    page = await browser.get('https://example.com')
    print(await page.evaluate('document.title'))
    await browser.stop()

import asyncio
asyncio.run(main())

# Lineage: undetected-chromedriver -> nodriver -> zendriver.
# License: AGPL-3.0 (inherited). IP / TLS are still separate concerns.

Related terms

Concept map

How zendriver connects

The terms most directly tied to this one. Hover a node to see its neighbours, click to preview, drag to rearrange.

0 terms · 0 connections
You are here · Web Automation
Building map…

Frequently asked questions

What is zendriver?

zendriver is an open-source, community-maintained fork of nodriver. It keeps nodriver's async, direct-CDP architecture - driving Chrome over the Chrome DevTools Protocol with no Selenium dependency - while opening the project to community contributions and adding fixes and features.

Why was zendriver forked from nodriver?

Its maintainers cite three reasons: unmerged upstream bugfixes that sat unaddressed, a wish to modernise development practices with tooling like ruff and mypy, and more open community engagement after upstream contributions were heavily restricted. The goal is faster, community-driven iteration.

How is zendriver different from nodriver technically?

Architecturally it is the same - async-first Python driving the browser directly over CDP. zendriver adds conveniences such as Docker support and ongoing fixes but does not change the core communication model.

What license is zendriver under?

zendriver inherits nodriver's AGPL-3.0 license, so the same network-use clause applies if you embed it in a hosted service. It also carries an alpha development status.

Last updated: 2026-06-15