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.
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.