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

Run chrome-headless-shell --screenshot https://example.com/ from a terminal. Chrome saves the captured image as screenshot.png in your current working directory. Add --window-size=WIDTH,HEIGHT when the viewport must be predictable, and use timing flags when the page needs extra time to render.

What Chrome Headless Shell does

Headless Shell is a standalone chrome-headless-shell binary for running Chromium without a visible browser window. It is separate from Chrome’s current unified Headless mode, which runs the full Chrome browser with the --headless option. The shell is a lightweight wrapper around Chromium’s //content module with substantially fewer dependencies, making it suitable for command-line screenshot jobs and scraping workflows.

The command-line screenshot behavior documented by Chrome is deliberately simple: provide the --screenshot switch and a URL. The output filename documented by Chrome is screenshot.png, written to the process’s current working directory. The documentation does not establish a supported flag for choosing another output path, so scripts should control the working directory rather than assume a custom filename option.

Prerequisites and locating the binary

  • Obtain the Chrome for Testing Headless Shell download for your operating system. The executable name is chrome-headless-shell; its absolute path depends on how and where you unpacked Chrome for Testing.
  • Make sure the binary can execute. On Unix-like systems that may mean adding its directory to PATH or invoking it with an absolute path. On Windows, use the executable’s full path in PowerShell or Command Prompt.
  • Choose a writable working directory. Because the default image is written there, a read-only directory causes the capture to fail even when the page itself loads.

No physical monitor is required. Chrome documents a configurable virtual screen for Headless mode, independent of attached displays.

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.
#1 Best Overall
Sale
Philips 24 Inch Computer Monitor FHD 100Hz VA VESA Flicker-Free, 241V8LB
  • CRISP CLARITY: This 23.8″ Philips V line monitor delivers crisp Full HD 1920x1080 visuals. Enjoy movies, shows and videos with remarkable detail
  • INCREDIBLE CONTRAST: The VA panel produces brighter whites and deeper blacks. You get true-to-life images and more gradients with 16.7 million colors
  • THE PERFECT VIEW: The 178/178 degree extra wide viewing angle prevents the shifting of colors when viewed from an offset angle, so you always get consistent colors
  • WORK SEAMLESSLY: This sleek monitor is virtually bezel-free on three sides, so the screen looks even bigger for the viewer. This minimalistic design also allows for seamless multi-monitor setups that enhance your workflow and boost productivity
  • A BETTER READING EXPERIENCE: For busy office workers, EasyRead mode provides a more paper-like experience for when viewing lengthy documents

Take your first screenshot

  1. Open a terminal and change to a directory where you want the image saved, for example, a temporary build-artifacts directory.
  2. Run:
chrome-headless-shell --screenshot https://example.com/
  1. Wait for the process to exit, then inspect screenshot.png in that same directory.

The URL can include a path and query string. Quote URLs containing shell metacharacters, spaces, or ampersands:

chrome-headless-shell --screenshot 'https://example.com/search?q=headless&sort=new'

This basic form captures the viewport that the shell creates. It is not, by itself, a promise of a full-page image; pages taller than the viewport may require a different capture workflow.

Set a deterministic viewport

Use --window-size=WIDTH,HEIGHT to control the virtual viewport in CSS pixels. Chrome’s example is:

chrome-headless-shell --screenshot --window-size=412,892 https://example.com/

Select dimensions that match the result you need: a mobile layout, a desktop review, or a regression-test baseline. Viewport dimensions can change responsive breakpoints, navigation, typography, and which elements are visible. Keep them constant in automated jobs so that image comparisons are meaningful.

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

--window-size controls the viewport; it does not turn the capture into a full-page screenshot. If you need the entire document, verify the page-specific method you plan to use rather than assuming this flag will expand the image vertically.

Wait for pages that render asynchronously

Modern sites often load data, images, fonts, and client-side components after the initial document arrives. The shell provides timing controls, but neither one proves that every asynchronous task has finished.

Rank #2
Philips 22 Inch Computer Monitor FHD 100Hz VA VESA Flicker-Free, 221V8LB
  • CRISP CLARITY: This 22 inch class (21.5″ viewable) Philips V line monitor delivers crisp Full HD 1920x1080 visuals. Enjoy movies, shows and videos with remarkable detail
  • 100HZ FAST REFRESH RATE: 100Hz brings your favorite movies and video games to life. Stream, binge, and play effortlessly
  • SMOOTH ACTION WITH ADAPTIVE-SYNC: Adaptive-Sync technology ensures fluid action sequences and rapid response time. Every frame will be rendered smoothly with crystal clarity and without stutter
  • INCREDIBLE CONTRAST: The VA panel produces brighter whites and deeper blacks. You get true-to-life images and more gradients with 16.7 million colors
  • THE PERFECT VIEW: The 178/178 degree extra wide viewing angle prevents the shifting of colors when viewed from an offset angle, so you always get consistent colors

Use a maximum wait with --timeout

Set the maximum wait in milliseconds:

chrome-headless-shell --screenshot --timeout=5000 https://example.com/

After the timeout expires, the shell captures even if the page is still loading. A longer value can help slow pages, but it also increases job duration and does not solve content that waits for user interaction, an unavailable API, or an indefinitely pending request.

Fast-forward time with --virtual-time-budget

For pages whose scripts depend on elapsed time, --virtual-time-budget lets Chrome fast-forward virtual time before capture. This is useful for deterministic timers and animations, but it is not a universal readiness detector. Network failures, blocked scripts, and application-specific loading states still need to be handled by the page or by your surrounding automation.

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

Choose timing per page

  • Start with the smallest timeout that consistently includes the content you need.
  • Use a virtual-time budget when the page’s own code schedules work based on timers.
  • For important captures, inspect the resulting image or add an external readiness check; a process that exits successfully can still contain an incomplete page.

Or skip the browser setup

ScreenshotNeo provides a website screenshot API and MCP server when you prefer one HTTP request over installing and maintaining a browser binary. Its endpoint accepts the target URL and returns PNG, JPEG, WebP, or PDF output. See the ScreenshotNeo documentation for all parameters.

cURL

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

Python

import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)

Node.js

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

Before capture, ScreenshotNeo accepts cookie and consent banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each cleanup step can be disabled. Bot checks and CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed as clean shots, and each response identifies the result with X-Page-Verdict and X-Billed headers. It also offers an MCP server with take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients.

Options include full-page capture with lazy images loaded, CSS-selector element capture, dark mode, 12 device presets or a custom viewport, retina scale, PDF paper size/margins/orientation/page ranges, HTML/CSS rendering, custom JavaScript and CSS, pre-capture clicks, hidden selectors, waits for selectors/delays/network idle, request and resource blocking, custom headers/cookies/user agents and Authorization, timezone and geolocation, transparent backgrounds, resizing, configurable-TTL caching, signed public image links, asynchronous jobs with signed webhooks, bulk capture of up to 100 URLs per call, a usage API, an OpenAPI specification, and compatibility with parameter names used by other screenshot APIs.

The Free plan includes 1,000 shots each month with no card. Paid plans are Starter ($5 for 3,000), Growth ($15 for 15,000), Pro ($39 for 60,000), Scale ($99 for 250,000), and Business ($249 for 1,000,000); yearly billing provides two months free, and every feature is available on every plan. Create a free ScreenshotNeo account to start with 1,000 screenshots a month and no card.

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

Headless Shell versus unified Headless Chrome

Choice What it is Best fit Trade-off
chrome-headless-shell A separate, lightweight wrapper around Chromium’s //content module. Command-line screenshots, scraping, and jobs where a smaller dependency footprint matters. It is not the complete Chrome browser, so browser features and integrations are narrower.
Unified Headless mode The regular Chrome browser running without visible UI. High-fidelity end-to-end web-app tests and browser-extension testing. It carries the broader Chrome implementation and its dependencies.

Chrome describes unified Headless as the more authentic choice when your test needs the real browser. That description is about browser behavior and feature coverage, not a published screenshot-quality benchmark. For Puppeteer, headless: 'shell' selects Headless Shell, while headless: true selects current unified Headless mode.

Rank #3
Sale
Dell 24 Monitor - SE2426H - 23.8-inch FHD (1920x1080) 144Hz 1ms Display, in-Plane Switching (IPS) Technology, AMD FreeSync™, TÜV 3-Star 2X HDMI, Tilt
  • Clear visuals. Fluid motion: A 144Hz refresh rate and 1ms MPRT deliver smooth, tear‑free motion across work, gaming, and streaming for clearer, more fluid viewing.
  • Eye comfort: TÜV Rheinland 3‑star* certification reduces harmful blue light while preserving stunning color quality without compromise. *TÜV Rheinland 3-star eye comfort certification.
  • Wide viewing angle: Get consistent views across a wide 178° /178° viewing angle.
  • In-Plane Switching (IPS): See excellent color accuracy and consistency across wide viewing angles with In-plane Switching (IPS) technology.
  • Ultra-thin bezels: Maximize your viewing experience with thin bezels.

Special targets and virtual screens

Capture a chrome:// URL

Chrome’s command-line reference requires --allow-chrome-scheme-url for internal chrome:// pages:

chrome-headless-shell --allow-chrome-scheme-url --screenshot chrome://version/

The reference identifies this flag as available from Chrome 123. Because command-line availability is version-sensitive, check the documentation that matches the binary you deploy.

Understand the virtual display

Headless mode uses a virtual screen, so an attached physical display is unnecessary. Screen configuration can matter when a workflow depends on screen coordinates or multi-screen behavior; ordinary page screenshots generally need only a deliberate window size.

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

Use the shell reliably in scripts and CI

  1. Create a unique, writable working directory for each job.
  2. Invoke the binary by a known path or pin its directory in PATH.
  3. Pass an explicit --window-size and a page-appropriate --timeout.
  4. After the process exits, verify that screenshot.png exists and is non-empty before publishing it.
  5. Move or rename the file yourself if your pipeline needs a different artifact name; the documented default is tied to the current working directory.
  6. Retain the command output and exit status so a failed navigation is distinguishable from a valid image of an error page.

For repeatable visual tests, keep the shell version, viewport, URL state, fonts, and timing settings stable. A changed responsive breakpoint or late-loading asset can alter pixels even when the command itself is unchanged.

Troubleshooting

No screenshot.png appears

Check the directory from which the process was launched, not the directory containing the executable. Confirm that it is writable and that the process reached the screenshot step. In CI, print the working directory and list files after the command.

The command is not found

Use the absolute path to chrome-headless-shell or add its containing directory to PATH. Make sure you downloaded the Headless Shell binary rather than only a regular Chrome package.

Rank #4
Samsung 27" Essential S3 (S36GD) Series FHD 1800R Curved Computer Monitor
  • CURVED FOR ENHANCED ENGAGEMENT: An immersive viewing experience with a curved monitor that wraps more closely around your field of vision; It creates a wider view, enhancing depth perception and minimizing peripheral distraction
  • SMOOTH PERFORMANCE FOR SEAMLESS CONTENT: Stay in the action when playing games, watching videos, or working on creative projects; The 100Hz refresh rate reduces lag and motion blur so you don't miss a thing in fast-paced moments¹
  • MORE GAMING POWER: Gain the edge with optimizable game settings; Color and image contrast can be adjusted to see scenes more vividly and spot enemies hiding in the dark; Game Mode adjusts any game to fill the screen so you can view every detail²
  • KEEP IT EASY ON THE EYES: Care for your eyes and stay comfortable, even during long sessions; Advanced eye comfort technology certified by TÜV reduces eye strain by minimizing blue light and reducing irritating screen flicker²
  • INCREASED VERSATILITY: Connect to more; Plug devices straight into your monitor for increased flexibility, making your computing environment even more convenient

The image is blank or incomplete

Increase --timeout cautiously, consider a --virtual-time-budget for timer-driven content, and verify that the target’s APIs and assets are reachable from the capture environment. Timing flags do not guarantee that every asynchronous operation has settled.

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.

The layout is the wrong size

Add --window-size=WIDTH,HEIGHT and use the same values for every run. Remember that viewport dimensions can select a different responsive layout.

A chrome:// page will not load

Add --allow-chrome-scheme-url and verify that the shell version supports it; Chrome documents availability from version 123.

You expected a full-page image

--screenshot captures the configured viewport. The documented examples do not establish a universal full-page flag for the shell, so use a page-specific or browser-automation workflow when the entire document is required.

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

Performance, reliability, and cost considerations

Headless Shell has no service charge: your costs are the machine, storage, network, and operational work required to run the binary. A local or CI job also gives you control over browser version and data location. In exchange, you must manage downloads, updates, sandbox and permission settings, page failures, and concurrency.

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

Keep concurrency within the CPU, memory, and network capacity of the host. Reusing a controlled environment reduces variation, while isolating each job’s working directory prevents simultaneous runs from competing for the same default filename. Set timeouts so a stalled page cannot occupy a worker indefinitely, and treat the image as untrusted output until you check its dimensions and file size.

Best Value
Sceptre New 22-Inch Gaming Monitor, FHD 1080p, Up to 144Hz, HDMI, DisplayPort, Built-in Speakers, Machine Black (E225W-FW144 Series, 2026)
  • 【INTEGRATED SPEAKERS】Whether you're at work or in the midst of an intense gaming session, our built-in speakers provide rich and seamless audio, all while keeping your desk clutter-free.
  • 【EASY ON THE EYES】 Protect your eyes and enhance your comfort with Blue-Light Shift technology. This feature reduces harmful blue light emissions from your screen, helping to alleviate eye strain during long hours of use and promoting healthier viewing habits.
  • 【WIDEN YOUR PERSPECTIVE】Our sleek minimal bezel design ensures undivided attention. The nearly bezel-free display seamlessly connects in a dual monitor arrangement, delivering an unobstructed view that lets you focus on more at once, completely distraction-free.

Use the shell when a lightweight command-line browser is enough. Choose unified Headless when your test depends on Chrome-specific browser behavior or extensions. Choose an API such as ScreenshotNeo when you want managed rendering, consent and popup cleanup, billing only for clean results, PDF output, or an MCP workflow for AI agents.

FAQ

Does a successful process guarantee that the page is visually complete?

No. The shell’s timeout is a maximum wait, not a readiness proof. Pages that fetch data or alter the DOM asynchronously can still be changing when the image is captured.

Can I rely on the default filename across operating systems?

Chrome documents screenshot.png in the current working directory. Use your script to control that directory and rename the artifact afterward when a stable pipeline-specific name is required.

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

Frequently Asked Questions

Does a successful process guarantee that the page is visually complete?

No. The shell’s timeout is a maximum wait, not a readiness proof. Pages that fetch data or alter the DOM asynchronously can still be changing when the image is captured.

Can I rely on the default filename across operating systems?

Chrome documents screenshot.png in the current working directory. Control the working directory in your script and rename the artifact afterward when your pipeline needs another name.

The Bottom Line

For a direct command-line capture, use chrome-headless-shell --screenshot URL, set the viewport and timing deliberately, and remember that Chrome writes screenshot.png to the current directory. Use unified Headless for full Chrome behavior, or ScreenshotNeo when a managed API and cleaned, billable-only results are more practical.

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.

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