Chrome Headless mode

Peter Kvitek
Peter Kvitek

With Chrome Headless mode, you can run the browser in an unattended environment, without any visible UI. Essentially, you can run Chrome without chrome.

Use Headless mode

To use Headless mode, pass the --headless command-line flag to a Chrome binary, for example:

Linux

google-chrome --headless

macOS

open -a "Google Chrome" --args --headless

Windows

start chrome --headless

Use old Headless mode

Previously, Headless mode was a separate, alternate browser implementation that happened to be shipped as part of the same Chrome binary. It didn't share any of the Chrome browser code in //chrome.

Chrome now has unified Headless and headful modes.

Headless mode shares code with Chrome.

Since Chrome 132.0.6793.0 the old Headless mode is only available as a standalone binary named chrome-headless-shell which can be downloaded from Chrome for Testing dashboard.

In Puppeteer

To use Headless mode in Puppeteer:

import puppeteer from 'puppeteer';

const browser = await puppeteer.launch({
  headless: true,  // (default) enables Chrome Headless mode
  // `headless: 'shell'` enables Headless Shell (old headless)
  // `headless: false` enables "headful" mode
});

const page = await browser.newPage();
await page.goto('https://developer.chrome.com/');

// …

await browser.close();

For more information on using Headless in Puppeteer, check out Headless mode.

In Selenium-WebDriver

To use Headless mode in Selenium-WebDriver:

const driver = await env
  .builder()
  .setChromeOptions(options.addArguments('--headless'))
  .build();

await driver.get('https://developer.chrome.com/');

// …

await driver.quit();

See the Selenium team's blog post for more information, including examples using other language bindings.

Feedback

We look forward to hearing your feedback about Headless mode. If you encounter any issues, file a bug.