Recommended Free Tools
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.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Repair Windows errors before they cause bigger problems3Fix the driver behind crashes, sound loss and screen glitchesWhat 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
- 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.
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:
Rank #2
- Storage: 16GB Flash Memory
- OS: Chrome OS
- Screen Size: 11.6"
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.
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.
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
- 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.
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
- 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.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →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.
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
- Storage: 16 GB Flash Memory
- OS: Chrome OS
- Screen Size: 11.6"
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.
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):
Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchPC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11curl -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=chromeas Chrome 96–108 transition syntax. - Treat
--headless=newas 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-shellwhen 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.
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.
Quick Recap
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.

