Skip to content
Home

/

Glossary

/

Browser

/

ChromeDriver

Browser

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

Key facts

Maintained byThe Chromium project (Google)
ImplementsW3C WebDriver standard; controls Chrome internally via the Chrome DevTools Protocol
VersioningSame version number as Chrome from Chrome 115 onward
Where to downloadChrome for Testing (the old download index stops at version 114)
Default port9515
Main clientSelenium 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

  • Your script starts ChromeDriver, which listens on a local port (9515 by default).
  • The script sends a "new session" request with the browser options it wants: headless or not, window size, profile, extensions.
  • ChromeDriver launches Chrome and connects to it, internally using the Chrome DevTools Protocol.
  • Each WebDriver command (find element, click, send keys, get page source, take screenshot) arrives as an HTTP request; ChromeDriver translates it into browser actions and returns the result.
  • Closing the session shuts Chrome down.
  • 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 more

    Examples

    Frequently Asked Questions

    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.

    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.

    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.

    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.

    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.

    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.

    Related terms, automations and guides

    Where this concept shows up in practice.

    DefinitionSeleniumSelenium is an open-source browser automation project, best known for Selenium WebDriver, a library that controls Chrome, Firefox, Edge and Safari through the W3C WebDriver standard. It is widely used for cross-browser testing and for scraping JavaScript-rendered pages.DefinitionHeadless ChromeHeadless Chrome is Google Chrome running without a visible window. It renders pages and runs JavaScript like normal Chrome and is controlled by code, which makes it the standard engine for automated testing, scraping, screenshots and PDF generation.DefinitionChrome DevTools Protocol (CDP)The Chrome DevTools Protocol (CDP) is the JSON-over-WebSocket interface Chrome exposes for inspecting and controlling the browser. Chrome DevTools, Puppeteer, Playwright and many hosted browser services use it to navigate, click, intercept network traffic and capture pages.DefinitionPuppeteerPuppeteer is Google's open-source Node.js library for controlling Chrome and Firefox. It drives Chrome over the Chrome DevTools Protocol and is widely used for scraping JavaScript-rendered pages, generating PDFs and screenshots, and end-to-end testing.DefinitionPlaywrightPlaywright is Microsoft's open-source browser automation framework that provides a single API to control Chromium, Firefox, and WebKit browsers. It supports headless and headed modes, auto-waiting, and network interception, making it a leading choice for testing and web scraping.DefinitionDataDomeDataDome is a commercial bot-protection service that scores every request to a website, app or API in real time and blocks or challenges automated traffic, using an invisible Device Check and a slider CAPTCHA served from captcha-delivery.com.GuidePlaywright vs Selenium vs Puppeteer: Which Browser Automation Framework Wins?An in-depth comparison of Playwright, Selenium, and Puppeteer for browser automation and web scraping. Covers architecture, performance, reliability, language support, and when to choose each framework.GuideAutonoly vs Bardeen: AI Browser Automation Compared (2026)An honest, in-depth comparison of Autonoly and Bardeen for AI browser automation. We compare architecture, features, pricing, and use cases to help you choose the right tool for your automation needs.

    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.

    See Features