5 min read
Also: Chrome Driver, chromedriver.exe, Selenium ChromeDriver, Chrome for Testing ChromeDriver, WebDriver for Chrome, Chrome WebDriver, chromedriver binary
ChromeDriver
Quick answer
ChromeDriver is the Chromium project's WebDriver server that lets Selenium control Chrome, and its major version must match your Chrome. For Chrome 115 and newer, download it from Chrome for Testing or let Selenium Manager (Selenium 4.6+) fetch it for you; if you see "only supports Chrome version N", fix the version mismatch.
ChromeDriver is the Chromium project's standalone server that implements the W3C WebDriver standard for Chrome. Selenium and other WebDriver clients send it commands, and it carries them out in the browser. It must match your Chrome version.
Last verified
What people do with ChromeDriver
- Fix "This version of ChromeDriver only supports Chrome version N"
Why Chrome updates break the driver and how to get the matching build.
- Fix "DevToolsActivePort file doesn't exist"
Chrome fails to start under ChromeDriver, usually in Docker, CI or as root.
- Fix "Unable to obtain driver for chrome"
Selenium Manager could not find or download ChromeDriver.
- Fix "cannot find Chrome binary"
ChromeDriver runs but cannot locate the Chrome executable.
- Run Chrome headless with ChromeDriver
New headless mode, chrome-headless-shell and the flags to use.
- Choose between Selenium, Playwright and Puppeteer
Which frameworks need a driver at all, and how they compare.
Key facts
| Maintained by | The Chromium project (Google) |
|---|---|
| Implements | W3C WebDriver standard; controls Chrome internally via the Chrome DevTools Protocol |
| Versioning | Same version number as Chrome from Chrome 115 onward |
| Where to download | Chrome for Testing (the old download index stops at version 114) |
| Default port | 9515 |
| Main client | Selenium WebDriver (Selenium Manager fetches it automatically since Selenium 4.6) |
What is ChromeDriver?
ChromeDriver is a small standalone program that lets automation tools control Google Chrome through the W3C WebDriver standard. Selenium is its best-known client: when a Selenium script says "click this button", the command goes to ChromeDriver as an HTTP request, and ChromeDriver carries it out in Chrome. Other WebDriver clients, such as WebdriverIO and some RPA tools, use it the same way.
ChromeDriver is built and maintained by the Chromium project, the same people who make Chrome, and its source lives in the Chromium repository under Chromium's BSD-style license. Microsoft maintains an equivalent for Edge (msedgedriver), Mozilla has geckodriver for Firefox, and Apple ships safaridriver with macOS.
How ChromeDriver works
That extra hop is the main architectural difference from Puppeteer and Playwright, which talk to Chrome directly without a separate driver binary.
Versions and Chrome for Testing
ChromeDriver must match the major version of the Chrome it controls. Since Chrome 115 (2023), every Chrome release gets a ChromeDriver with the same version number, published through Chrome for Testing, Google's set of versioned Chrome and ChromeDriver builds intended for automation. The old chromedriver.storage.googleapis.com download index stopped at version 114, which is why many tutorials and scripts written before mid-2023 broke when they tried to download a driver for newer Chrome. Chrome for Testing publishes a dashboard and JSON endpoints listing the current Stable, Beta, Dev and Canary versions with download links.
In practice, few people download ChromeDriver by hand today. Selenium Manager, bundled with Selenium since 4.6, detects the installed Chrome and fetches a matching driver automatically.
Common errors and fixes
`session not created: This version of ChromeDriver only supports Chrome version N`. The most searched ChromeDriver error. Chrome auto-updated, and the driver on disk is older (or newer) than the browser. The message usually continues with Current browser version is X. Fixes: remove the hard-coded driver path so Selenium Manager can pick the right one, download the matching version from Chrome for Testing, or pin Chrome itself with a Chrome for Testing build so it stops updating under you.
`'chromedriver' executable needs to be in PATH`. Older Selenium versions could not find the binary. Upgrade Selenium, or pass the driver's path explicitly.
`DevToolsActivePort file doesn't exist` / `Chrome failed to start: crashed`. Chrome could not start, very often in Docker or CI. Common causes are running as root without --no-sandbox, too little shared memory (/dev/shm, fixed with --disable-dev-shm-usage or a bigger shm size), missing system libraries, or a profile directory already locked by another Chrome.
`ChromeDriver cannot be opened because the developer cannot be verified` (macOS). Gatekeeper quarantined the downloaded binary. Remove the quarantine attribute or approve it in System Settings.
Architecture mismatch. An x64 driver on an ARM Mac or Linux machine fails with "bad CPU type" or "exec format error". Download the build for your platform.
Timeouts with `chrome not reachable`. The browser crashed or was killed, often from memory pressure when many sessions run at once.
Detection
A Chrome session started by ChromeDriver is marked as automated: navigator.webdriver is true, Chrome shows the "controlled by automated test software" bar, and older ChromeDriver builds injected recognizable JavaScript variables (such as properties beginning with cdc_) that anti-bot scripts looked for. Projects like undetected-chromedriver patch these traces, but commercial bot protection such as Cloudflare, DataDome and HUMAN (PerimeterX) also checks network and behavioral signals that no driver patch changes.
ChromeDriver and automation
ChromeDriver is plumbing: necessary for Selenium-based Chrome automation, invisible when it works, and a frequent source of breakage when Chrome updates on a schedule you do not control. Version pinning, Selenium Manager or a container image with a fixed Chrome and driver pair keep it stable.
Autonoly does not use ChromeDriver or Selenium. Its cloud browser is Chromium controlled by Playwright with patchright, so there is no separate driver to keep in sync, and the agent finds elements from a plain-English description instead of hand-written locators.
Why It Matters
ChromeDriver version mismatches are among the most common reasons Selenium scripts suddenly stop working, usually right after Chrome updates itself. Understanding how it is versioned and distributed turns that recurring outage into a one-time fix.
How Autonoly Solves It
Autonoly does not use ChromeDriver. It runs Chromium through Playwright with patchright in an isolated container, so there is no separate driver to download or keep in sync with the browser. You describe the task in plain English and can watch or take over the browser live.
Learn moreExamples
Fixing 'This version of ChromeDriver only supports Chrome version 114' by deleting a hard-coded driver path and letting Selenium Manager fetch the matching driver
Pinning a Chrome for Testing build and its ChromeDriver in a Docker image so a nightly Selenium job stops breaking on browser updates
Adding --no-sandbox and --disable-dev-shm-usage to resolve 'DevToolsActivePort file doesn't exist' in a CI container
Frequently Asked Questions
How do I fix 'This version of ChromeDriver only supports Chrome version'?
Your driver and browser versions no longer match, usually because Chrome updated. On Selenium 4.6 or later, remove any hard-coded driver path and let Selenium Manager download the right driver. Otherwise, download the ChromeDriver with the same major version from Chrome for Testing.
Where do I download ChromeDriver for Chrome 115 and newer?
From Chrome for Testing, which publishes a ChromeDriver for every Chrome release with the same version number, plus JSON endpoints for scripts. The old download index only goes up to version 114, which is why older download scripts fail.
Do I still need ChromeDriver with Selenium?
Selenium still uses ChromeDriver to control Chrome, but you rarely install it yourself. Selenium Manager, included since Selenium 4.6, detects your Chrome version and downloads a matching driver automatically. Manual setup is mainly for offline or locked-down machines.
What does 'DevToolsActivePort file doesn't exist' mean?
Chrome failed to start or crashed right away, so ChromeDriver could not connect. In Docker and CI, add --no-sandbox when running as root, use --disable-dev-shm-usage or more shared memory, install missing libraries, and make sure the profile directory is not in use.
Do Puppeteer and Playwright use ChromeDriver?
No. Puppeteer and Playwright connect to Chrome directly over the Chrome DevTools Protocol, so they need no separate driver. ChromeDriver is for clients that speak the W3C WebDriver protocol, mainly Selenium and WebdriverIO.
Can websites detect ChromeDriver?
Often. A ChromeDriver session sets navigator.webdriver to true, and older versions left recognizable JavaScript variables in the page. Patched drivers hide some of these traces, but bot protection services also use network and behavioral signals.
Further reading
Related terms, automations and guides
Where this concept shows up in practice.
Stop reading about automation.
Start automating.
Describe what you need in plain English. Autonoly's AI agent builds and runs the automation for you — no code required.