Chrome Headless can capture a page as a PNG, but it does not provide a built-in bulk thumbnail queue: run its capture command once per URL, or use browser automation to manage navigation, filenames, and errors. For a simple shell-driven batch, set a consistent viewport, save each capture under a unique name, and decide how your job should handle slow or failed pages.
What Chrome Headless does—and what your batch script must do
Chrome’s --screenshot option captures a page, saving screenshot.png in the current working directory by default. Add --window-size=WIDTH,HEIGHT to choose a consistent viewport. Those flags handle an individual capture; a loop or automation script must supply the bulk workflow: read URLs, choose unique output names, record failures, and decide whether to continue.
Chrome documents Headless mode as sharing the browser implementation used by headful Chrome. The older, separate implementation is available as the chrome-headless-shell binary beginning with Chrome 132.0.6793.0. See Chrome Headless mode for the distinction and automation examples.
Capture one thumbnail from the command line
For a quick test, run the documented command in a terminal:
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →#1 Best Overall
- 🌟 All-in-One Screen Solution: Essential for seamless window screen replacement & repairs. This versatile screen repair kit Perfect for DIY screen spline insertion, frame rolling, and mesh tightening – your go-to tool for screen for windows projects.
- 🔷 Dual Roller Innovation: Features convex (round) & concave (grooved) steel rollers. The concave roller prevents delicate screen tearing during spline rolling, while the convex wheel ensures tight sealing. Ultimate precision for window screen tool tasks.
- ❖ Ergonomic Wooden Handle: Solid hardwood handle delivers superior comfort during prolonged screen roll installation. Non-slip grip reduces hand fatigue when replacing window screens. Durable steel bearings ensure smooth roller rotation – ideal for screen door repair marathons.
- 🔧Spline Tool + Screen Roller Tool: Offers three roller diameter options for selection. When replacing window screens, choose the corresponding roller based on the Spline specifications to completely eliminate tool size mismatch issues.
- 💎 Pro-Grade Durability: Carbon-steel rollers withstand aggressive spline rolling without deformation. your lifetime screen repair tool investment.
chrome --headless --screenshot --window-size=412,892 https://example.com/
Chrome writes screenshot.png in the current working directory. The example viewport is 412 by 892 pixels; choose dimensions appropriate to the thumbnail layout you need. This sets the browser viewport, not a guarantee that every site will render its page content at the same effective dimensions or layout.
On some systems the Chrome executable is named differently or is not on the shell’s PATH. Use the installed Chrome executable’s full path if the shell cannot find chrome. The exact executable path depends on the operating system and installation.
See the Chrome Headless command-line reference for the screenshot, sizing, and timing options.
Build a bulk capture with a shell loop
A shell loop is suitable when you want one process invocation per URL and can use a simple URL list. Because the CLI’s documented default filename is always screenshot.png, change into a separate directory for each capture or otherwise arrange unique output paths. The example below uses a numbered directory per input line, avoiding filename collisions without using untrusted URL text as a filename.
PC 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 & 11Outdated 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 matchRunnable Bash example
Save one URL per line in urls.txt, then save and run this script from the directory where you want the output folder:
Rank #2
- ⭐【QUALITY MATERIALS】- Solid wood handle + double carbon steel bearing metal wheels, heavy beech wood handles are hard and crack-free, thickened and enlarged metal convex and concave double wheels, each of them is finely crafted and durable, suitable for the replacement of aluminum alloy plastic steel doors and windows of any specification.
- ⭐【SCREEN TOOLS SET】- The screen rolling tool has two different wheels, cams and recessed rollers, which can help you get the job done better and faster. Screen roller is compact and easy to carry,which is can solve your problem well. Every one is meticulously crafted and durable, A good helper for replacing screens at home.
- ⭐【EASY TO USE】- Installing a screen with a screen rolling tool makes the job much easier. This essential tool is comfortable in the hand and the wheels turn smoothly to roll the screen and spline into the frame. It’s extremely economical and adds great value to big and small screen repair jobs.
- ⭐【ERGONOMIC HANDLE】- The wood handle has ergonomic design, it is easy to hold. wooden handle and steel convex and concave roller wheels,the steel wheels of our screen rolling tool is smooth The hooks are sharp and the aged battens can be hooked out.
- ⭐【CONVEX & CONCAVE 】– The combination screen rolling tool has a 1-5/16" x 3/32" convex (round edge) steel roller at one end and a 1-5/16" x 3/32" concave (grooved edge) steel roller at the opposite end.
#!/usr/bin/env bash
set -u
chrome_bin="${CHROME_BIN:-chrome}"
input="${1:-urls.txt}"
out="${2:-thumbnails}"
mkdir -p "$out"
if [[ ! -r "$input" ]]; then
printf 'Cannot read URL list: %sn' "$input" >&2
exit 1
fi
index=0
failures=0
while IFS= read -r url || [[ -n "$url" ]]; do
[[ -z "$url" ]] && continue
index=$((index + 1))
dir=$(printf '%s/%06d' "$out" "$index")
mkdir -p "$dir"
printf '[%d] %sn' "$index" "$url"
if "$chrome_bin" --headless --screenshot --window-size=412,892
--timeout=15000 "$url" >"$dir/chrome.log" 2>&1; then
if [[ -f screenshot.png ]]; then
mv screenshot.png "$dir/thumbnail.png"
printf '%st%sn' "$index" "$url" >> "$out/manifest.tsv"
else
printf 'No screenshot output for %sn' "$url" >&2
failures=$((failures + 1))
fi
else
printf 'Capture failed for %s; see %s/chrome.logn' "$url" "$dir" >&2
failures=$((failures + 1))
fi
done < "$input"
printf 'Finished: %d URLs, %d failures.n' "$index" "$failures"
(( failures == 0 ))
The script expects a Chrome executable available as chrome; set CHROME_BIN to its path if needed. It creates one numbered directory per nonempty input line, moves the generated PNG into that directory, stores captured URLs in a tab-separated manifest, and keeps Chrome’s output in a per-URL log. Its --timeout=15000 bounds the wait before capture at 15 seconds; it is a chosen job setting, not a guarantee that the page’s dynamic content is ready.
The CLI’s screenshot behavior and timeout semantics are documented in the command-line reference. The loop, directory scheme, manifest, and continue-on-error policy above are application logic, not a Chrome bulk mode.
Choose the right readiness and viewport controls
Use a viewport size for ordinary thumbnails
--window-size=WIDTH,HEIGHT sets the capture viewport; Chrome’s example uses 412,892. Keep it identical across the batch when you need comparable screenshots. If you need screen emulation, display scaling, orientation, or multiple displays, that is a separate feature from ordinary viewport sizing.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Use timeout as a bound, not a readiness signal
--timeout=5000 waits at most five seconds before --screenshot, --dump-dom, or --print-to-pdf captures, even if a page is still loading. Increase or decrease it to fit your job’s tolerance for slow pages, but a timeout only bounds the wait; it does not say that network requests or client-side rendering have finished.
Use virtual time for timer-driven content
--virtual-time-budget fast-forwards time-dependent page code such as timer callbacks. Chrome’s documentation gives --virtual-time-budget=42000 as an example, representing 42 seconds of page time. This does not guarantee that network-backed content has arrived or that every site is ready; inspect results on representative pages before relying on a timing choice for a batch.
Rank #3
- --- 𝐏𝐀𝐓𝐄𝐍𝐓 𝐀𝐏𝐏𝐋𝐈𝐄𝐃 𝐅𝐎𝐑---
- 🏡【𝐊𝐢𝐧𝐠&𝐂𝐡𝐚𝐫𝐥𝐞𝐬 𝐑&𝐃 𝐈𝐧𝐭𝐞𝐧𝐭𝐢𝐨𝐧】Versatile Screen Tool - combines the core functions of multi-size roller, hidden hooks, and replaceable blades, and designed this multifunctional screen tool. It solves the problems of traditional screen installation tools with single functions, lack of safety and adaptability. It truly realizes multiple uses of one tool, making screen replacement time-saving, labor-saving, and worry-free. One-time purchase can meet your installation or replacement needs.
- 🏡【𝟑 𝐒𝐢𝐳𝐞𝐬 𝐈𝐧𝐭𝐞𝐫𝐜𝐡𝐚𝐧𝐠𝐞𝐚𝐛𝐥𝐞 𝐑𝐨𝐥𝐥𝐞𝐫𝐬】Flexible Adaptation - In view of the differences in thickness of different window splines, we gift the roller into three specifications: Convex 0.13", Concave 0.13", and Concave 0.18", ensuring perfect matching with the mainstream rubber strip sizes on the market. Feature①: The roller is made of high-hardness plastic, which is strong and durable while avoiding the risk of traditional metal rollers scratching the screen mesh. Feature②: Metal bearing design - smoother rotation, even pressure without deviation. TIPS: you can use the provided Allen wrench to quickly disassemble and replace them.
- 🏡【𝐁𝐥𝐚𝐝𝐞 𝐅𝐮𝐧𝐜𝐭𝐢𝐨𝐧-𝐑𝐞𝐭𝐫𝐚𝐜𝐭𝐚𝐛𝐥𝐞&𝐒𝐭𝐨𝐫𝐚𝐠𝐞&𝐑𝐞𝐩𝐥𝐚𝐜𝐞𝐚𝐛𝐥𝐞】①Retractable-When in use, just hold button, blade will slow rollout, convenient trimming and cutting. Blade can be retracted to prevent Accident scratches. ②Blade has double locking device: it automatically locks to prevent retraction during work and is completely closed to prevent accidental touch when retracted. Ansure your safety. ③Replaceable - A separate button is provided for changing the blades. ④Blade is made of steel-sharp, durable and won't rust. ⑤Storage-Handle has built-in blade storage design to place complimentary blade.Extra equipped 2xreplacement blades- increase service life of tool.
- 🏡【𝐇𝐢𝐝𝐞𝐚𝐛𝐥𝐞 𝐑𝐞𝐦𝐨𝐯𝐚𝐥 𝐇𝐨𝐨𝐤】The hooks are sharp and can hook out the aged spline. The removal hook can be stored and hidden in the handle slot box. OPEN the box cover, take out the hook and insert it into the groove for use. can RETRACT after use to prevent the hook tip from scratching clothes or tool boxes. Hook made of Stainless steel material won't rust.
Use virtual screens only when the task needs them
For screen configuration beyond the viewport, Chrome documents --screen-info and Puppeteer/CDP screen controls. The documentation says virtual screen configuration is available in stable Chrome beginning with version 142. Do not assume it is available in earlier stable versions; consult Configure virtual screens in Headless mode.
Use browser automation when the batch needs control
For larger or more failure-sensitive jobs, a browser automation library makes it easier to manage page navigation, per-URL behavior, output names, logging, and recovery in one program. Chrome documents both Puppeteer and Selenium WebDriver for Headless Chrome; the documentation does not establish that one is faster for bulk thumbnails.
Puppeteer
Puppeteer is a documented JavaScript route to launch Headless Chrome, create a page, navigate to a URL, and close the browser. The loop, retry policy, readiness checks, and filenames are still your program’s responsibility. Reusing a browser process and opening pages through automation can reduce repeated setup work, but the cited Chrome documentation does not provide comparative throughput figures or a guarantee of speed for a given workload.
Selenium WebDriver
Selenium is a reasonable fit if your existing automation environment already uses WebDriver. Chrome documents Headless use through Selenium, but the cited documentation does not compare its bulk-capture throughput with Puppeteer or recommend one over the other for this task.
Make a batch recoverable and inspectable
- Keep a stable identity for each result. A sequence number, database ID, or other stable key is safer than turning arbitrary URLs into filenames. Store the URL-to-file mapping in a manifest.
- Log individual failures. Capture command output per URL so a broken page or launch error does not erase useful information about the rest of the batch.
- Choose a failure policy explicitly. The example continues after a capture failure and exits with a nonzero status if any capture failed. For a job that must produce every image, use the manifest and logs to rerun missing items.
- Check the actual images. A successful process exit is not proof that a site’s dynamic content, cookie dialog, or late-loading images appear as intended. Review a sample across the sites and conditions you expect.
- Plan for resource use. The official sources do not state a recommended batch size, throughput, or memory budget. Start with a small batch in the target environment and observe its behavior before increasing concurrency or job size.
Common problems and fixes
Every capture overwrites the same file
The documented default is screenshot.png in the current working directory. Use a unique output directory for each invocation, as in the example, and move or rename the image after capture.
The shell says Chrome is not found
The executable name or PATH differs on some installations. Set CHROME_BIN to the installed executable’s full path, or change chrome_bin in the script.
Recommended Free Tools
The screenshot looks incomplete
The page may still be loading when the capture occurs, or its content may depend on timers or network responses. Adjust the timeout, consider a virtual-time budget for timer-driven behavior, and validate representative images. Neither timing flag proves that all dynamic or network-backed content is ready.
The command fails but the URL looks valid
Inspect the per-URL chrome.log. Confirm that the executable can launch in the environment running the batch, that the input line is a complete URL, and that Chrome wrote screenshot.png before the script tries to move it.
You need multiple screens or display scaling
--window-size controls viewport dimensions. For virtual screens, use Chrome’s separate screen configuration documentation and verify that the installed stable Chrome is version 142 or newer.
Or skip the browser setup
ScreenshotNeo provides a website screenshot API and MCP server. One GET request can return an image or PDF; use the API when you would rather not install and orchestrate a browser for each URL. The endpoint accepts the same parameter names other screenshot APIs use, which can ease switching.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Repair Windows errors before they cause bigger problems3Scan for outdated or missing drivers - takes under a minuteBest Value
- WINDOW SCREEN REMOVAL TOOL: Designed to easily engage, lift, and remove window screens without damaging frames or mesh.
- Durable Nylon Construction – Made from high-strength, impact-resistant nylon that's tough enough to handle repeated use yet gentle on delicate surfaces, won't rust or corrode like metal tools.
- DUAL-END DESIGN: Features a forked end to engage and lift screen edges and a flat pry tip on the opposite end for versatile use.
- HIGH-VISIBILITY COLOR: Bright orange construction makes this tool easy to spot and prevents it from being misplaced on the job site.
- DIY-FRIENDLY: The ideal tool for homeowners and professionals tackling window screen repair, replacement, or seasonal removal tasks.
For example, request one PNG capture from cURL:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp
See the ScreenshotNeo API documentation for access-key setup and request options. The response file format and extension should match the format you request; the example above follows the supplied cURL pattern.
- Cookie banners are accepted before capture and more than 60 known consent platforms, newsletter popups, and chat widgets are removed; each step can be turned off.
- Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed. Response headers report the page verdict and whether the request was billed.
- An MCP server provides
take_screenshot,get_page_info, andcapture_pdftools for Claude, Cursor, and other MCP clients. - The Free plan includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots. Yearly billing gives two months free, and every feature is on every plan.
Sign up for ScreenshotNeo’s free plan to get 1,000 screenshots a month with no card.
Frequently Asked Questions
Does Chrome Headless have a built-in bulk screenshot command?
No. Its documented screenshot command captures a page; a loop or automation program supplies URL iteration, filenames, and error handling.
Can Chrome Headless save a screenshot as JPEG or WebP?
The documented --screenshot example saves a PNG named screenshot.png. The cited command-line reference does not establish JPEG or WebP output for that flag.
Free tools Windows power users keep installed
One-click scans. No signup required.
Do I need Chrome 142 for a normal thumbnail?
No. Chrome 142 is the documented stable-version threshold for virtual screen configuration; ordinary viewport sizing uses --window-size.
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.

