The open-source undetected-chromedriver alternative
undetected-chromedriver is a great zero-config way to hide the Selenium/ChromeDriver seam — but it drives a stock Chrome and never touches the network layer. Clearcote changes the fingerprint inside the engine and keeps the TLS/HTTP-2 stack coherent, so there's no seam to hide.
What is undetected-chromedriver?
undetected-chromedriver is a popular Python library (~12.7k stars, by ultrafunkamsterdam) that patches Selenium's ChromeDriver to remove the obvious automation tells — it neutralizes the injected cdc_ variables and strips flags like --enable-automation, then drives a real, unmodified Chrome. It's GPL-3.0, free, and genuinely effective against lenient or older detection.
The ceiling is that it only hides the driver. The Chrome engine is stock, so engine-level values (canvas, WebGL, the full navigator surface) are whatever your machine reports and can't be shaped into a coherent persona. It also leaves the network layer alone — the TLS/JA3-JA4 and HTTP/2 fingerprint is a stock automation signature — and development has largely moved to its successor, nodriver.
Clearcote vs undetected-chromedriver
| Feature | Clearcote | undetected-chromedriver |
|---|---|---|
| Approach | Engine-level C++ patches — native values | Patched chromedriver on stock Chrome |
| Fingerprint control | Coherent persona (canvas/WebGL/fonts/navigator) | Stock engine values, unchanged |
| TLS / network coherence | Follows the claimed Chrome (JA3/JA4 + HTTP/2) | Stock automation network signature |
| Framework | Playwright & Puppeteer (Python + Node), CDP | Selenium (Python) |
| License | Open & permissive | GPL-3.0 (copyleft) |
| Headless / Docker / server | First-class (CDP endpoint + image) | Headless weaker / WIP |
| Cost | Free & open | Free & open |
Comparison compiled July 2026. undetected-chromedriver is open source (gpl-3.0); details change — check its project for the latest.
Why teams pick Clearcote
No seam to hide
undetected-chromedriver renames the driver's tells on an otherwise-stock browser. Engine-level patches change the native values, so there's nothing injected to detect in the first place.
The network layer, too
It leaves TLS/JA3-JA4 and HTTP/2 as a stock automation signature. Clearcote makes the handshake match the claimed Chrome version — a layer a driver patch can't reach.
Coherent across realms
Native values agree in the main frame, Web Workers and cross-origin iframes — where driver/JS tricks often diverge.
Automation-first ecosystem
Playwright and Puppeteer, Python and Node, a CDP endpoint and a Docker image — not just a Selenium driver shim.
When undetected-chromedriver might be the better pick
- You have an existing Selenium codebase and want the lightest possible drop-in.
- Your targets are lenient and you just need the ChromeDriver tells gone.
- You want zero binary to manage — it patches and drives your local Chrome.
FAQ
Is undetected-chromedriver enough to avoid detection?
Against lenient or older detection, often yes. Against strict systems it has a structural ceiling: it hides the ChromeDriver seam but runs a stock Chrome engine and a stock network stack, so engine-level and TLS/HTTP-2 fingerprints are unchanged.
How is Clearcote different?
undetected-chromedriver patches the Selenium driver on top of your normal Chrome. Clearcote is a modified Chromium: the fingerprint is changed in the engine (native, coherent across workers and iframes) and the TLS/HTTP-2 stack follows the claimed Chrome version.
Are both free?
Yes — undetected-chromedriver is GPL-3.0. Clearcote is free and open under a permissive license, with an optional paid Pro build.
Related reading
Try the open-source Chromium alternative
Free and open source, a drop-in for Playwright & Puppeteer, coherent down to the TLS handshake.