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.

Yes—Chrome or Chromium can capture a web page on Linux without X11, Wayland, or a physical display. Run chrome --headless --screenshot --window-size=1280,900 https://example.com; Chrome writes screenshot.png in the current directory. Use the command-line browser for a single viewport image, and switch to Playwright or Puppeteer when you need full-page output, element clipping, authentication, or other scripted steps.

Choose the capture method first

Need Best fit Why
One quick page image Chrome/Chromium headless CLI A short command captures a URL without a display server.
Navigation, waits, login, clicks or custom output Playwright or Puppeteer The APIs let you script page setup before saving the image.
Full scrollable page or one element Playwright or Puppeteer Both document full-page and targeted captures, plus clipping controls.
An application that truly expects a graphical desktop Virtual display and a desktop capture tool This is different from capturing a web page with Chrome Headless.

The links in the table point to the relevant official documentation: Chrome Headless CLI, Puppeteer screenshot options, and Playwright screenshots.

Fastest option: Chrome from the shell

Take a viewport screenshot

  1. Confirm the executable name available on the machine (often google-chrome, google-chrome-stable, or chromium).
  2. Run:
    chrome --headless --screenshot --window-size=1280,900 https://example.com
  3. Look for screenshot.png in the directory where you ran the command.

--headless removes the need for a display server. --window-size=1280,900 makes the viewport explicit instead of relying on an implicit default. Replace chrome with the binary your distribution provides.

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.

Allow a slow page to render

Chrome supports --timeout, in milliseconds, to cap how long it waits before capturing even if loading has not finished:

#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
chrome --headless --screenshot --window-size=1440,1000 --timeout=10000 https://example.com

This is a maximum wait, not a universal “page is ready” detector. A page can still be rendering data after the timeout. For an application-specific readiness condition—such as waiting for a selector or network activity—use an automation library.

Control the output filename and format

The documented basic command produces PNG output. If your installed Chrome build exposes additional screenshot flags, check that build’s --help output rather than assuming flags from another version. For reliable JPEG, WebP, clipping, or post-navigation actions, use Puppeteer or Playwright.

Scripted captures with Playwright

Playwright is appropriate when the screenshot is one step in a repeatable browser flow. Install it using the package-manager instructions for your language and Linux distribution; there is no single installation command that is correct for every distribution. The following Node.js example assumes the Playwright package and its browser binaries are already installed.

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

Viewport and full-page images

import { chromium } from 'playwright';

const browser = await chromium.launch({ headless: true });
const page = await browser.newPage({ viewport: { width: 1280, height: 900 } });
await page.goto('https://example.com', { waitUntil: 'networkidle' });
await page.screenshot({ path: 'viewport.png', type: 'png' });
await page.screenshot({ path: 'full-page.png', fullPage: true, type: 'png' });
await browser.close();

The first file is the current viewport; fullPage: true expands the capture over the page’s scrollable height. Treat networkidle as a useful heuristic, not proof that every application has finished rendering.

Capture one element

import { chromium } from 'playwright';

const browser = await chromium.launch({ headless: true });
const page = await browser.newPage({ viewport: { width: 1280, height: 900 } });
await page.goto('https://example.com', { waitUntil: 'domcontentloaded' });
await page.locator('main').screenshot({ path: 'main.png' });
await browser.close();

Use a stable CSS selector for the element. If it is created asynchronously, wait for it explicitly:

await page.waitForSelector('[data-testid="report"]', { state: 'visible' });

Make dynamic pages deterministic

  • Set the viewport and, when relevant, the device scale factor in the browser context.
  • Wait for a known application signal (a selector, URL change, or completed request) rather than an arbitrary long sleep.
  • Use the same browser version, operating-system image, fonts, settings, and headless mode for visual comparisons.
  • Close the browser in cleanup code so failed jobs do not leave processes behind.

Playwright warns that rendering can vary with host OS, browser version, settings, hardware, power source, and headless mode. Keep those inputs consistent when comparing screenshots. See Playwright visual comparisons.

Rank #2
GMKtec G3S Mini PC Intel N95 Processor (Up to 3.4GHz) 8GB RAM 256GB M.2 SSD
  • 12th Intel Alder Lake N95 Processor – The GMKtec G3 S Mini PC is powered by the 12th Gen Intel N95 processor with 4 cores, 4 threads, 6MB cache and a burst frequency up to 3.4GHz. Compared with N100/N5105/N5100/N5095, the N95 delivers up to 36% overall performance improvement. Perfect for routine tasks, office work, and home entertainment, this compact mini desktop is more convenient than traditional bulky PCs.
  • 8GB RAM & 256GB SSD Storage – Pre-installed with 8GB DDR4 memory and a fast 256GB M.2 2242 SSD, the G3 S mini desktop offers quicker startup, smoother multitasking, and faster file transfers. Enjoy seamless performance whether you’re working on multiple applications, browsing, or streaming content.
  • Rich Interfaces & Connectivity – The G3 S mini computer comes equipped with USB 3.2 (up to 10Gbps), dual HDMI 2.0 (4K@60Hz), and a 3.5mm audio jack. With support for WiFi 5, Bluetooth 5.0, and Gigabit Ethernet (RJ45 1000MbE), it connects easily with monitors, projectors, printers, office equipment, and other peripherals, making it versatile for both home and business use.
  • Dual 4K Display Support – Featuring upgraded Intel UHD Graphics (up to 1000MHz), the G3 S supports 4K video playback and AV1 decoding for a smooth viewing experience. With dual HDMI outputs, you can connect two 4K@60Hz displays simultaneously, enabling efficient multitasking for work and entertainment.
  • GMKtec WARRANTY - GMKtec offers a 1-year limited GMKtec's warranty for each mini PC, starting from the date of the purchase. All defects due to design and workmanship are covered. With a professional after sales team always ready to attend to your needs, you can simply relax and enjoy your mini PC.

Scripted captures with Puppeteer

Puppeteer exposes equivalent controls when your project already uses its API. This example captures a viewport and then a full page:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
import puppeteer from 'puppeteer';

const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
await page.setViewport({ width: 1280, height: 900, deviceScaleFactor: 1 });
await page.goto('https://example.com', { waitUntil: 'networkidle2' });
await page.screenshot({ path: 'viewport.png', type: 'png' });
await page.screenshot({ path: 'full-page.png', fullPage: true, type: 'png' });
await browser.close();

Puppeteer’s screenshot options also support clipping, transparent backgrounds, image type, and output paths. Consult the ScreenshotOptions interface for the exact options in your installed version.

Viewport, full-page and element captures are different

Viewport

A viewport screenshot records only what fits inside the chosen width and height. It is the right representation for responsive breakpoints, browser previews, and above-the-fold checks.

Full page

A full-page screenshot stitches the page’s scrollable content into one image. Very long documents can create large files or expose layout problems in sticky headers, lazy-loaded content, or infinite scroll. Test the target page rather than assuming all content is finite.

Element or clip

Element capture follows the element’s rendered bounds; clipping uses coordinates or a rectangle. Use an element selector when the component itself is the subject, and clipping when you need a precise region independent of DOM structure.

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

When a display server is actually required

Chrome Headless webpage capture does not require X11, Wayland, or Xvfb. A virtual display becomes relevant when the target is a desktop application or a workflow that relies on a graphical desktop rather than a browser’s headless mode. The official Chromium documentation describes the headless architecture and its binaries at Chromium Headless documentation. Do not copy an Xvfb recipe blindly: package names and service setup differ by Linux distribution.

Check the binary and version

Chromium changed its packaging: as of M132, the old Headless shell functionality is no longer part of the Chrome binary. Environments that depend on that old behavior may need chrome-headless-shell. Verify the executable actually installed:

Rank #3
Sale
KYY Portable Monitor 15.6" 1080P Computer Monitor Screen Extender w/Cover
  • [ FHD 1080P PORTABLE MONITOR ]: KYY using a 15.6''(8.8"x14.2") advanced IPS screen with 178° wide viewing angle, Delivers 1920*1080 breathtaking viewing quality and HDR technology, KYY portable gaming monitor has excellent color rendering ability, provide you the clearer, smooth, excellent performance in gaming/multimedia. It can effectively reduce blue light radiation damage, no flickering, eye-care, and make it easier to watch for a long time
  • [ WIDE COMPATIBILITY ]: KYY portable monitor for laptop equipped with 2 Full Function Type-C ports and Mini-HDMI port, easy access to your favorite devices with 1 cable solution as long as your device support Thunderbolt 3 or 3.1 USB-Type-C, compatible with most laptop, smartphone, PC, PS4, XBOX and more.
  • [ ULTRA-SLIM PORTABLE DISPLAY ]: KYY USB C portable monitor features a 0.3inch ultra-slim profile(1.7lb), it is easy to slides into your bag, allows you to carry it everywhere, ideal for a simple on-the-go dual-monitor setup or extend your phone screen for movies or games. No driver needed and equipped with 3.5mm audio inputs and 2 built-in stereo speakers to enhance entertainment experience
  • [ DURABLE SMART COVER ]: Comes with a scratch-proof smart cover made of durable PU leather exterior, doubles as a stand, provides comprehensive protection and frameless magnetic design for this portable computer monitor. There are two grooves in the cover base to give at least some choice of viewing angle for your comfort for less cumbersome installation
  • [ LIGHTWEIGHT BUT POWERFUL ]: KYY portable external monitor can work in both landscape and portrait mode, can be used as a gaming monitor, screen extender for laptop or phone. It has a unique designed Premium gray metal appearance, 2 built-in speakers to play audio, a friendly menu control wheel for setting, and 24/7 professional support team
command -v chrome || command -v google-chrome || command -v chromium || command -v chromium-browser
chrome --version

Use the corresponding binary in every command and record its version in screenshot artifacts or CI logs.

Reliability and performance checklist

  • Set dimensions deliberately: the same URL can render differently at different widths and device scales.
  • Wait for the right state: use a selector or application event for dynamic content; use a timeout only as a safety limit.
  • Handle lazy loading: full-page automation may need scrolling or an application-specific trigger before all images appear.
  • Control resources: avoid launching a new browser process for every URL when capturing many pages; reuse a browser and create isolated contexts or pages.
  • Bound work: set navigation and job timeouts, then close pages and browsers on errors.
  • Keep environments stable: pin browser versions and fonts for visual regression tests.
  • Save diagnostics: retain the URL, viewport, browser version, exit status, and failure message with the image.

Headless mode removes display overhead, but page JavaScript, fonts, images, network latency, and browser startup still determine completion time. A full-page image generally costs more memory than a viewport image.

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

Troubleshooting common failures

“Command not found”

Your executable has a different name or is not on PATH. Run the command -v checks above, install a browser using your distribution’s supported method, and substitute the discovered binary.

The output is blank or incomplete

The page may require JavaScript, a later API response, or a user action. Increase the safety timeout, then move to Playwright or Puppeteer and wait for a concrete selector or application event. Check that the page is not returning a bot challenge or requiring authentication.

The screenshot has the wrong dimensions

Set --window-size=WIDTH,HEIGHT in Chrome, or call setViewport/newPage({ viewport }) in an automation library. Also check device scale factor if pixel dimensions matter.

Full-page capture misses content

Lazy-loaded sections may not load until scrolled into view, and infinite-scroll pages have no fixed end. Trigger the page’s loading behavior in a script, or capture a defined element or viewport instead.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #4
Acer 23.8in FHD 1920x1080 IPS 120Hz Office Monitor KB242Y G0bi
  • Incredible Images: The Acer KB242Y G0bi 23.8" monitor with 1920 x 1080 Full HD resolution in a 16:9 aspect ratio presents stunning, high-quality images with excellent detail. The zero-frame design provides maximum visibility of the screen from edge-to-edge.
  • Adaptive-Sync Support: Get fast refresh rates thanks to the Adaptive-Sync Support (FreeSync Compatible) product that matches the refresh rate of your monitor with your graphics card. The result is a smooth, tear-free experience in gaming and video playback applications.
  • Responsive!!: Fast response time of 1ms enhances the experience. No matter the fast-moving action or any dramatic transitions will be all rendered smoothly without the annoying effects of smearing or ghosting. With up to 120Hz refresh rate speeds up the frames per second to deliver smooth 2D motion scenes.
  • 23.8" Full HD (1920 x 1080) Widescreen IPS Monitor | Adaptive-Sync Support (FreeSync Compatible)
  • Refresh Rate: Up to 120Hz | Response Time: 1ms VRB | Brightness: 250 nits | Pixel Pitch: 0.275mm

Visual diffs appear on an unchanged page

Compare like with like: browser version, OS image, fonts, viewport, device scale, headless mode, and power or hardware conditions. Disable nondeterministic content where your application permits it.

Chrome no longer behaves like an older headless setup

Check the version and packaging after M132. If your workflow depended on the removed old Headless shell, evaluate the separately provided chrome-headless-shell binary and update your automation configuration.

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

Or skip the browser setup

ScreenshotNeo provides a website screenshot API and MCP server. A single GET request returns PNG, JPEG, WebP, or PDF. Before capture it accepts the cookie or consent banner like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each cleanup step can be disabled. Only clean shots are billed: bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing, and response headers report X-Page-Verdict and X-Billed.

For the complete parameter list, see the ScreenshotNeo API documentation.

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

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}`);

It also offers full-page and selector captures, dark mode, 12 device presets and custom viewports, retina scale, PDF paper and page-range controls, custom CSS and JavaScript, clicks, waits, blocked ads or requests, headers, cookies, user agents, Authorization, timezone, geolocation, transparent backgrounds, resizing, configurable-TTL caching, signed public-image links, asynchronous jobs with signed webhooks, bulk capture for up to 100 URLs per call, a usage API, and an OpenAPI specification. An MCP server exposes take_screenshot, get_page_info, and capture_pdf to Claude, Cursor, and other MCP clients. Existing integrations can often switch easily because parameter names used by other screenshot APIs also work.

Every feature is included on every plan: Free gives 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 provides two months free.

Start with 1,000 free screenshots a month—no card required.

Best Value
Sale
Acer 21.5in FHD 1920x1080 100Hz Office Monitor KB220Q H2bi
  • Vibrant Images: Crisp, true-to-life colors come alive in Full HD 1080p resolution. Movies and games appear more real and dramatic, and small details and text are clear with 1920x1080 resolution in a 16:9 aspect ratio.
  • Adaptive-Sync Support: Get fast refresh rates thanks to the Adaptive-Sync Support (FreeSync Compatible) product that matches the refresh rate of your monitor with your graphics card. The result is a smooth, tear-free experience in gaming and video playback applications.
  • Up 100Hz Refresh Rate: The 100Hz refresh rate speeds up the frames per second to deliver an ultra-smooth 2D motion scene. With a rapid refresh rate of up to 100Hz, Acer Monitors shorten the time it takes for frame rendering, lower input lag and provide gamers an excellent in-game experience.
  • Responsive!!: Fast response time of 1ms enhances the experience. Fast-moving action or any dramatic transitions will be rendered smoothly without the annoying effects of smearing or ghosting.
  • ZeroFrame Design: With a KB220Q monitor, you’ll want to see as much of the display as possible. Get more real estate with the near bezel-less design, allowing you to see more and do more. The ZeroFrame design lets you place multiple monitors next to each other for a seamless, almost uninterrupted view.

Frequently Asked Questions

Does headless Chrome work without Xvfb?

Yes. Chrome Headless captures web pages without a display server. A virtual display is for desktop applications or workflows that genuinely require a graphical session.

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

Should I use Playwright or Puppeteer?

Use whichever fits your existing language and test stack. Both provide scripted navigation, full-page capture, element targeting, and clipping; choose based on API familiarity and project dependencies.

Why do screenshots differ between CI and my laptop?

Browser version, OS, fonts, viewport, device scale, hardware, power conditions, settings, and headless mode can all change rendering. Keep those variables consistent for comparisons.

What changed in Chrome 132?

The old Headless shell functionality is no longer part of the Chrome binary as of M132. Check your installed version and consider the separately available chrome-headless-shell when an older workflow depends on it.

The Bottom Line

Use Chrome’s headless CLI for a one-off viewport image; use Playwright or Puppeteer for controlled, full-page, element, and multi-step captures. If you do not want to maintain browser binaries and readiness logic, ScreenshotNeo turns the job into an API call and reports whether a response was clean and billable.

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.

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.