Web Automation

What Is undetected-chromedriver?

What Is undetected-chromedriver? - conceptual illustration
On this page

undetected-chromedriver is an open-source Python library that provides a patched version of Selenium's ChromeDriver. It is a near drop-in replacement for the standard Selenium Chrome driver that downloads and modifies the ChromeDriver binary at runtime so that some of the artifacts automated control normally introduces are not present in the running session. It is the oldest and most widely used project in a lineage of stealth-oriented automation tools, and its author has since pointed users to nodriver as its successor.

Quick facts

LanguagePython
Built onSelenium + the W3C WebDriver protocol
Patches outcdc_ variables and the navigator.webdriver flag
LicenseGPL-3.0
LimitationDoes not mask your IP - IP reputation is a separate factor

How undetected-chromedriver works

The library drives Chrome through the standard Selenium stack - it speaks the Selenium WebDriver protocol to a ChromeDriver binary, which controls the browser. Its distinguishing behaviour is that it patches that binary and adjusts how the browser launches so common automation markers are not exposed. Two are frequently cited: the cdc_-prefixed properties that ChromeDriver injects into the page, and the navigator.webdriver flag. Rather than renaming those internals after the fact, the project's approach is to keep them but prevent them from being injected in the first place. It remains tied to Selenium and the WebDriver protocol, which is the layer its successors drop.

Lineage and where it fits

undetected-chromedriver sits at the root of a family tree: undetected-chromedriver gave rise to nodriver, which in turn was forked as zendriver. The newer tools abandon Selenium entirely and drive Chrome directly over the Chrome DevTools Protocol, because the WebDriver layer is part of what introduces the artifacts undetected-chromedriver has to patch out. As the most-starred and longest-lived tool in the group it has the widest community and documentation, but its release cadence has slowed and the author has publicly positioned nodriver as the official successor.

What it does not do

The project is explicit that it does not mask your network identity. A patched driver changes what the browser exposes in JavaScript, but the request still comes from whatever IP you connect with, and a datacenter or low-reputation address remains an independent signal a detection system can weigh regardless of how clean the browser looks. It also operates above the network layer, so it does not change the TLS fingerprint or other server-side signals. Patching automation markers is one layer of many, not a complete answer.

Code example

python
# undetected-chromedriver is a near drop-in replacement for Selenium's
# Chrome driver. It patches the ChromeDriver binary so common automation
# markers (cdc_ properties, navigator.webdriver) are not injected.
import undetected_chromedriver as uc

driver = uc.Chrome()
driver.get('https://example.com')
print(driver.title)
driver.quit()

# Note: this changes what the BROWSER exposes in JavaScript. It does not
# change your IP or TLS fingerprint - those remain separate signals a
# detector can weigh, so a datacenter IP is still a datacenter IP.

Related terms

What Is nodriver?
nodriver is an open-source, asynchronous Python library that drives Chrome directly over the Chrome DevTools Protocol (CDP), with no Seleniu…
What Is zendriver?
zendriver is an open-source, community-maintained fork of nodriver. It keeps the same fundamental design - an async-first Python framework t…
What Is Selenium?
Selenium is the original cross-browser automation framework — the W3C WebDriver standard predates Puppeteer by a decade. In plain terms, it …
What Is CDP Detection?
CDP detection is the family of techniques anti-bot scripts use to tell that a browser is being driven through the Chrome DevTools Protocol (…
What Is Headless Browser Detection?
Headless browser detection is the set of probes anti-bot systems use to distinguish a headless or instrumented Chrome session from a real us…
Browser Automation Engine Benchmarks
A browser-automation-engine benchmark drives several automation stacks through the same set of targets and records, side by side, how often …
What Is selenium-driverless?
selenium-driverless is an open-source Python framework that drives Chrome over the Chrome DevTools Protocol (CDP) directly, without launchin…
What Is rebrowser-patches?
rebrowser-patches is an open-source set of drop-in patches for Puppeteer and Playwright that changes how those libraries set up their CDP ex…
What Is puppeteer-extra-plugin-stealth?
puppeteer-extra-plugin-stealth is an open-source plugin for the puppeteer-extra wrapper that bundles a collection of independent "evasion mo…

Concept map

How undetected-chromedriver 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 undetected-chromedriver?

It is an open-source Python library that provides a patched version of Selenium's ChromeDriver. It works as a near drop-in replacement that modifies the ChromeDriver binary at runtime so some artifacts of automated control - such as cdc_ variables and the navigator.webdriver flag - are not exposed.

How is it different from plain Selenium?

Plain Selenium drives Chrome through an unmodified ChromeDriver, which injects markers like cdc_ properties and sets navigator.webdriver. undetected-chromedriver patches the binary and launch so those markers are not introduced, while still using the same Selenium WebDriver protocol underneath.

Does undetected-chromedriver hide my IP address?

No. The project is explicit that it does not mask your network identity. It changes what the browser exposes in JavaScript, but the request still originates from your IP, and a datacenter or low-reputation address remains an independent signal a detector can weigh.

Is undetected-chromedriver still maintained?

It is the oldest and most-starred tool in its family, but its release cadence has slowed and its author has publicly positioned nodriver - a direct CDP driver with no Selenium dependency - as its official successor.

Last updated: 2026-06-15