Recommended Free Tools
For a straightforward server-side screenshot, run Chromium in headless mode with --screenshot and an explicit --window-size. For an application that must control navigation, page state, or image data programmatically, launch headless Chrome with remote debugging and use the Chrome DevTools Protocol’s Page.captureScreenshot command. The command-line route is simpler; the protocol route gives your application more control.
Choose a capture method
Headless Chromium renders a web page without opening a visible desktop browser. There are two useful ways to build a server-side capture workflow: invoke the browser as a command-line process, or manage it through the DevTools Protocol (CDP).
| Decision | Command-line capture | DevTools Protocol |
|---|---|---|
| Control model | Run a browser command for a URL and save an output file. | Your application sends commands to a running browser and receives encoded image data. |
| Good fit | One-off jobs or a worker that only needs a URL and a file. | A service that coordinates navigation, page state, clipping, or image handling in-process. |
| Documented controls | Viewport size, timeout and virtual-time budget. | Image format, JPEG quality, clipping and capture beyond the viewport. |
| Operational work | Manage the executable, working directory, process and output file. | Manage the debugging endpoint, protocol client, target and browser lifecycle. |
These are differences in control and integration, not a performance comparison. The official references do not benchmark the two approaches or prescribe universal concurrency, memory, or readiness settings.
Capture a page with Chromium’s command line
Run a basic screenshot
With Chrome or Chromium available on the server and its executable addressable as chrome, run:
#1 Best Overall
- Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
- Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
- Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
- Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
- 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
chrome --headless --screenshot --window-size=1280,900 https://example.com/
The Chrome command-line reference documents that --screenshot writes screenshot.png to the current working directory. The --window-size=WIDTH,HEIGHT option sets the viewport dimensions. Use a working directory where the process can write the file, or arrange for your worker to move or upload the resulting file after capture. If your installation uses a different executable name or path, substitute that executable.
For an explicit output filename, the documented behavior is still to write screenshot.png; do not assume a separate output-path flag without checking the flags supported by the exact browser build you deploy. A wrapper can run the command in a per-job directory and rename or move the resulting file once the process exits successfully.
Bound the wait
Use --timeout to set a maximum wait before capture, or --virtual-time-budget to give a page a defined amount of virtual time:
chrome --headless --screenshot --window-size=1280,900 --timeout=5000 https://example.com/
chrome --headless --screenshot --window-size=1280,900 --virtual-time-budget=5000 https://example.com/
These options are timing controls, not a guarantee that an application has finished rendering. A fixed delay can be too short for a slow page and unnecessarily long for a fast one; pages may also render important content only after a particular application state or interaction. Choose the timing policy based on the pages you expect to capture and verify the output.
Rank #2
- 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
- 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
- Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
- 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
- What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
Keep related Chrome switches distinct
--print-to-pdfis a separate PDF-output option, not a screenshot setting.--dump-domprints the serialized DOM after parsing and script execution; it does not return the original HTML source and does not save a screenshot.
Use the DevTools Protocol when the application needs control
Understand the capture flow
CDP is appropriate when your service needs to coordinate browser actions and consume screenshot bytes directly rather than simply wait for a command-line process to write a file. At a high level, the application starts a headless browser with remote debugging enabled, connects a protocol client to the browser, selects or creates a page target, navigates, applies its own readiness policy, and calls Page.captureScreenshot. The command returns encoded screenshot data for the client to decode and store.
- Start the intended Chrome or Chromium executable in headless mode with a remote-debugging endpoint available to the capture service.
- Connect a DevTools Protocol client and create or select the page target.
- Navigate to the requested URL and wait according to a page-specific readiness policy.
- Call
Page.captureScreenshot, choosing an image format and any needed clip or beyond-viewport behavior. - Decode and store the returned image data, then close the page and browser according to the worker’s lifecycle policy.
Chromium’s headless documentation describes driving headless Chrome through remote debugging, including with a client such as Selenium. The protocol definition documents PNG and JPEG output, optional JPEG quality, clipping, and captureBeyondViewport. Match the protocol details to the browser version you deploy: protocol definitions and generated bindings can change.
Make viewport and page extent deliberate
A viewport is the visible browser area; a full-page image may extend beyond it. Set the viewport intentionally, then decide whether the capture should cover only a region or extend beyond the viewport. CDP’s screenshot command includes clipping and a beyond-viewport option. Consult the protocol definition for the browser version in use before relying on a particular parameter or behavior.
Specify PNG when you need a lossless image, or JPEG when a lossy image is appropriate and you want to set its quality. The protocol command supports both formats and an optional JPEG quality value. The cited command-line screenshot documentation describes PNG output; use CDP if your workflow requires these documented format and quality controls.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Rank #3
- Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
- Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
- Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
- Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
- What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
Set readiness policy in your application
Neither a navigation call nor a fixed delay proves that a site’s application-specific content is ready. Decide what “ready” means for the pages your service supports: for example, whether the capture can proceed after navigation, after a known element appears, or after a bounded wait. The official material establishes timing controls and screenshot commands, but it does not prescribe one readiness strategy that works for every website.
Account for browser versions and server operations
Check which headless implementation you are running
The Chromium Headless README records that, as of Chrome milestone M132, legacy Headless functionality was removed from the Chrome binary, that --headless=old has no effect, and that users of that legacy functionality are directed to chrome-headless-shell. This migration note concerns the old mode described in that README; it is not a reason to assume every current headless workflow requires a shell binary. Check the executable and supported flags for the exact Chrome or Chromium release you install, and record the distribution and version so captures are reproducible and upgrades can be investigated.
Measure your own workload
The official documentation does not publish a universal number of safe concurrent captures, a RAM-per-capture value, or a container-hardening recipe. Workload behavior depends on the pages and deployment. Before setting worker limits, run representative pages, measure resource consumption and output quality, and choose concurrency based on those observations rather than treating an arbitrary number as a Chromium guarantee.
Keep any remote-debugging endpoint reachable only by the capture service. The documentation describes remote debugging as a control mechanism; endpoint exposure, authentication, process isolation, storage permissions and cleanup are deployment decisions your service must make. Define what happens to browser processes and temporary files after success, timeout, or a failed capture.
Rank #4
- Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
- Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
- Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
- Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
- Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
Troubleshoot common capture problems
No screenshot file appears
- Confirm that the process ran in headless mode and included
--screenshot. - Check the process working directory and whether it is writable; the documented default output is
screenshot.pngin that directory. - Check the browser process result and its standard error before treating a missing file as a page-rendering issue.
The image is cropped or has the wrong dimensions
Set --window-size=WIDTH,HEIGHT explicitly for the CLI. With CDP, inspect the viewport and clip settings and decide whether capture beyond the viewport is required. A screenshot of the viewport and a screenshot extending beyond it are different capture choices.
The page is blank or missing late content
Do not assume that adding a fixed delay guarantees readiness. Try a bounded timeout or virtual-time budget for a simple CLI workflow, then inspect the page’s behavior. If readiness depends on application state or a selector, use a protocol-driven workflow so the application can coordinate capture with that state.
Legacy headless flags behave unexpectedly
If an old deployment uses --headless=old, check the browser version and migration note: the README says that legacy functionality was removed from the Chrome binary as of M132 and points users to chrome-headless-shell. Verify your installed executable and its current flags rather than assuming an older command remains supported.
A protocol command fails or returns an unexpected image
Check that the client is connected to the intended browser and page target, that navigation completed according to your readiness policy, and that the screenshot parameters match the deployed browser’s protocol version. Confirm that returned image data is decoded as the format requested and that the chosen clip is in the expected page coordinate space. The protocol reference, rather than a binding generated for another browser version, should guide version-specific behavior.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Repair Windows errors before they cause bigger problemsFix Now →Best Value
- 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
- Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
- Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
- HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
- What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
Or skip the browser setup
If you need a URL-to-image or PDF endpoint without managing a Chromium process, ScreenshotNeo is a website screenshot API and MCP server for developers. Its API accepts a GET request with the URL and returns an image or PDF. One request can look like this; see the ScreenshotNeo documentation for the API details:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
ScreenshotNeo accepts cookie or consent banners as a visitor and removes more than 60 known consent platforms, newsletter popups and chat widgets before capture; each step can be turned off. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads and cache hits are not billed, and each response includes X-Page-Verdict and X-Billed headers. An MCP server exposes take_screenshot, get_page_info and capture_pdf to Claude, Cursor and other MCP clients. The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 shots.
Sign up for ScreenshotNeo’s free plan: 1,000 screenshots a month, no card required.
Frequently Asked Questions
Does headless Chromium need a graphical desktop?
No. Headless mode is intended to render pages without a visible browser window; Chromium’s headless documentation describes use in server environments.
Can the command-line screenshot option save a PDF?
The documented PDF switch is --print-to-pdf; it is separate from the --screenshot option.
Does a virtual-time budget guarantee a page is ready?
No. It advances a bounded amount of virtual time, but does not establish that every site’s application-specific content has rendered.
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.

