Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

For current Chrome with Selenium, use the bare --headless argument. Chrome’s current documentation describes Headless and headful as unified modes and shows Selenium configured with --headless. The other spellings are historical rollout syntax: --headless=chrome was used with Chrome 96–108, while --headless=new followed from Chrome 109 during the transition. They should not be presented as three separate, equally current Chrome modes.

The short answer

Use this Python configuration with a current Chrome and Selenium:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("--headless")
driver = webdriver.Chrome(options=options)

try:
    driver.get("https://example.com")
    print(driver.title)
finally:
    driver.quit()

The flag belongs in Chrome’s command-line argument list. Selenium passes it to ChromeDriver, which starts Chrome without a visible window. Chrome’s current Headless documentation uses this exact bare flag, and its wording says that Headless and headful now share the same browser implementation.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What each spelling means

Argument Chrome context How to treat it now
--headless Current documented invocation for Chrome Headless Recommended for current Chrome and Selenium
--headless=chrome New Headless implementation’s spelling during Chrome versions 96–108 Historical transition syntax; use only when maintaining an old, version-pinned setup
--headless=new Opt-in spelling used after Chrome 109 while the new implementation rolled out Transition-era syntax; current Chrome documentation demonstrates the bare flag instead

These names describe a migration in Chrome’s implementation, not three permanent modes you should benchmark or switch between. Official material does not establish a speed advantage for any spelling, so do not infer performance differences from the names.

#1 Best Overall
HP 14" HD Chromebook Laptop for Students, Intel Quad-Core N4120(> N4020), 4GB RAM, 64GB eMMC, WiFi, Webcam, HDMI, USB-A&C, 14 Hours Battery Life, Zoom, Chrome OS, CUE Accessories
  • Intel Celeron N4120: 4 Cores & Threads, 1.1GHz Base Clock, Up to 2.6GHz Boost Clock, 4MB Cache, Intel UHD Graphics 600. The perfect combination of performance, power consumption, and value helps your device handle multitasking smoothly and reliably with four processing cores to divide up the work.
  • 14" HD Display: 14.0-inch diagonal, HD (1366 x 768), micro-edge, anti-glare. See your digital world in a whole new way. Enjoy movies and photos with the great image quality and high-definition detail of 1 million pixels.
  • Memory & Storage: 4 GB LPDDR4x & 64 GB eMMC Storage. Adequate high-bandwidth RAM to smoothly run multiple applications and browser tabs all at once. An embedded multimedia card provides reliable flash-based storage.
  • Ports:2 x USB 3.0 Type-A,1 x USB 3.0 Type-C,1 x HDMI,1 x Headphone Jack
  • Chrome OS: Chromebook is a computer for the way the modern world works, with thousands of apps. Enjoy the seamless simplicity that comes with Google Chrome and Android apps, all integrated into one laptop. It’s fast, simple, and secure.

How Chrome’s Headless transition happened

Chrome 96–108: --headless=chrome

Selenium’s 2023 migration history identifies --headless=chrome as the argument for the new implementation during Chrome 96 through 108. It was useful while the replacement was being introduced, but it is not the current recommendation.

Chrome 109 onward: --headless=new

After Chrome 109, the opt-in spelling became --headless=new. Selenium examples published during that rollout used this value-bearing form. Existing test suites may still contain it, especially when they were written against a particular browser image.

Chrome 112: unified Headless and headful

Chrome’s updated Headless documentation dates the unified mode to the Chrome 112 update. The practical implication is that current Chrome no longer requires you to choose between two ordinary in-browser implementations using separate flag values.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Chrome 132.0.6793.0 and the old shell

Chrome says that, since version 132.0.6793.0, the old Headless implementation is available only as the separate chrome-headless-shell binary. That is different from selecting an old mode inside the regular Chrome executable. If you specifically need the legacy implementation, treat the shell as a separate binary and deployment target rather than changing Selenium’s flag at random.

Configure Selenium correctly

Python

Install Selenium in the environment that will run the test:

python -m pip install -U selenium

Then pass the argument through Options.add_argument:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("--headless")
# Add other arguments only when your environment requires them.
driver = webdriver.Chrome(options=options)

try:
    driver.get("https://example.com")
    print(driver.title)
finally:
    driver.quit()

Use driver.quit() in a finally block so ChromeDriver and the browser process are closed even if navigation or an assertion fails.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

JavaScript

Chrome’s Selenium example uses the same bare argument in JavaScript:

const { Builder } = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');

const options = new chrome.Options();
options.addArguments('--headless');

const driver = await new Builder()
  .forBrowser('chrome')
  .setChromeOptions(options)
  .build();

try {
  await driver.get('https://example.com');
  console.log(await driver.getTitle());
} finally {
  await driver.quit();
}

Run this from an async function or an environment that supports top-level await.

Command-line Chrome check

If you are diagnosing the browser independently of Selenium, launch the installed Chrome binary with the same flag:

google-chrome --headless --dump-dom https://example.com

The executable name differs by operating system and installation method. This check is useful for separating a Chrome installation problem from a WebDriver configuration problem.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Do not use Selenium’s removed convenience method

Selenium’s migration post says the headless convenience method was deprecated in Selenium 4.8.0 and removed in 4.10.0. Configure the browser argument explicitly instead of relying on an API such as a former set_headless-style helper. Explicit arguments also make the Chrome version era visible in your test configuration.

Rank #3
ASUS 2026 15" FHD IPS Chromebook, Intel Processor Up to 2.80GHz, 4GB DDR4, 128GB Storage, HDMI, Super-Fast WiFi, Chrome OS, Pastel Blue, Renewed
  • Intel Processor Up to 2.80GHz, 4GB DDR4, 128GB Storage
  • 15" FHD IPS Display, Intel UHD Graphics
  • 1x USB Type C, 1 x USB Type A, 1x Headphone/Microphone Combo Jack, HDMI
  • Super Fast WiFi and Bluetooth, Integrated Webcam
  • Chrome OS, AC Charger Included, Pastel Blue

Chrome and ChromeDriver compatibility

Selenium’s Chrome documentation requires the Chrome and ChromeDriver major versions to match. A correct flag cannot repair a mismatched driver. Check both versions before changing Headless arguments.

What to verify

  • The installed Chrome major version.
  • The ChromeDriver major version selected by your environment.
  • The Selenium version and whether it still supports your language bindings.
  • That the executable is available to the user or container running the test.

If a session fails before a page opens, resolve the version pairing first. Only then investigate the Headless argument.

Choosing a spelling in real projects

New or regularly updated environments

Use --headless. It follows the current Chrome documentation and avoids encoding a rollout-era implementation choice in your code.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Old, pinned browser images

If your build intentionally pins Chrome 96–108, --headless=chrome matches the historical syntax recorded for that range. If it pins a later transition-era release where the new implementation had to be opted into, --headless=new may be required by that image. Document the pinned Chrome version beside the argument so a future upgrade does not leave a misleading flag behind.

Legacy Headless implementation requirements

If a test depends on the old implementation itself, the current Chrome documentation points to the standalone chrome-headless-shell binary for Chrome 132.0.6793.0 and later. That is a packaging decision, not a reason to keep cycling through --headless=chrome and --headless=new on the regular Chrome binary.

Troubleshooting

“SessionNotCreatedException” or Chrome will not start

Likely cause: ChromeDriver and Chrome major versions do not match, or the browser executable is missing.

Rank #4
Lenovo Chromebook 2-in-1 - Lightweight Laptop - Google Gemini - Intel® N150 CPU - 14" WUXGA IPS Touchscreen Display - 4GB RAM - 128GB UFS Storage - Integrated Intel® Graphics - Luna Grey
  • THE BETTER WAY TO LAPTOP – Imagine a Chromebook that’s as flexible as your day: thin and lightweight with built-in Google apps and stress-free security.
  • TAKE HITS KEEP MOVING – Sleek, light, and built to last- the Chromebook 2-in-1 is just 0.69” thick and 3.3lbs. Enjoy long-lasting battery life, fast charging, and military-grade durability for nonstop productivity wherever life takes you.
  • PERFORMANCE THAT MATCHES YOUR HUSTLE – Fuel your ideas with an Intel Core processor and 128GB storage. Boot up in under 10 seconds to start the day powerfully efficient.
  • FLEX YOUR CREATIVITY ANYWHERE, ANYTIME – Create, work, or unwind your way with a versatile 2-in-1 design. Flip easily between laptop, tent, and tablet modes with a responsive touchscreen built for flexibility.
  • BRILLIANT VIEWS AND IMMERSIVE AUDIO – See, hear, and create with awesome clarity. The WUXGA display brings rich detail to your work and play, while audio tuned by Waves MaxxAudio provides immersive, balanced sound.

Fix: print both versions, align their major numbers, confirm the executable path, and retry with the bare --headless argument.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The code still shows a window

Likely cause: the argument was added to the wrong object, misspelled, or never passed to the driver.

Fix: add options.add_argument("--headless") (Python) or options.addArguments('--headless') (JavaScript) before constructing webdriver.Chrome or the WebDriver builder. Remove conflicting profile or launcher settings while testing.

An old tutorial says to use --headless=new

Likely cause: the tutorial reflects the Chrome 109-era rollout.

Fix: for a current Chrome installation, replace it with the bare --headless flag. Keep the old spelling only when the browser image is deliberately pinned and your compatibility tests require it.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Chrome starts, but a test behaves differently after an upgrade

Do not assume the flag names guarantee identical rendering. Review the Chrome version, WebDriver version, viewport configuration, user data directory, extensions and test timing. The cited official material does not provide a controlled visual or speed comparison between the spellings.

Best Value

The browser process remains after a failed test

Ensure every test closes the driver in a cleanup block. In Python, use try/finally; in JavaScript, use try/finally with await driver.quit(). Cleanup is independent of which Headless spelling you choose.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Or skip the browser setup

If your actual requirement is a website image or PDF rather than interactive browser automation, ScreenshotNeo provides a direct screenshot API and an MCP server for AI agents. It removes cookie-consent banners, newsletter popups and chat widgets before capture; bot checks, blank pages, timeouts, failed loads and cache hits are not billed, with the response identifying the page verdict and billing status in headers. Its MCP tools include take_screenshot, get_page_info and capture_pdf.

One-call example (see the ScreenshotNeo documentation):

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

ScreenshotNeo also supports full-page and element captures, device and viewport settings, retina scale, PDFs, custom CSS and JavaScript, clicks, selector waits, request blocking, headers, cookies, authorization, timezone and geolocation, transparent backgrounds, resizing, chosen cache TTLs, signed image links, asynchronous webhooks, bulk capture of up to 100 URLs per call, usage reporting and an OpenAPI specification. Parameter names used by other screenshot APIs are accepted to ease migration.

The Free plan includes 1,000 shots per month with no card. Paid plans start at $5 for 3,000 shots; Growth is $15 for 15,000, Pro $39 for 60,000, Scale $99 for 250,000 and Business $249 for 1,000,000. Yearly billing gives two months free, and every feature is available on every plan. Create a free ScreenshotNeo account.

Practical checklist

  • For current Chrome, pass exactly --headless.
  • Treat --headless=chrome as Chrome 96–108 transition syntax.
  • Treat --headless=new as post-109 rollout syntax, not proof of a separate current mode.
  • Remember the unified Headless update arrived with Chrome 112.
  • Use the standalone chrome-headless-shell when a legacy implementation is specifically required after Chrome 132.0.6793.0.
  • Keep Chrome and ChromeDriver major versions aligned.
  • Close every driver in cleanup code.

Frequently Asked Questions

Does --headless=new still work in current Chrome?

It may be accepted for compatibility, but current Chrome documentation demonstrates the bare --headless flag. Use the bare form unless you are maintaining a version-pinned transition-era environment.

Are Headless and headful Chrome separate browsers now?

Chrome describes them as unified modes in its current documentation. The legacy implementation is now distributed separately as chrome-headless-shell rather than selected as an ordinary mode in the regular Chrome binary.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Should I expect different screenshot quality from these flags?

The cited official sources do not provide a controlled cross-version visual or performance benchmark, so no quality or speed ranking is established by the flag names alone.

Can Selenium’s old headless helper replace the argument?

No. Selenium’s convenience method was deprecated in version 4.8.0 and removed in 4.10.0; configure Chrome options explicitly.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.