Free tools Windows power users keep installed
One-click scans. No signup required.
iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
Use a single Playwright page, navigate through your URL list one at a time, and save each capture with a unique filename. The example below writes full-page PNG screenshots; the title does not specify a file format, so this guide uses PNG rather than PDF or HTML. It continues after an individual URL fails and records the HTTP status separately, since a 404 or 500 response does not necessarily make navigation throw.
Set up Playwright and choose the output
This example uses Node.js ES modules, Chromium, and the playwright package. Install Playwright in your project and ensure its selected browser engine is available. The API details cited here are from the official Playwright documentation accessed October 3, 2026; the documentation consulted does not specify an exact Playwright version, so check the API reference matching your installed package.
Save the script as an ES module file, such as capture-batch.mjs. Replace the sample URLs with the pages you want to capture. The output directory is created if it does not already exist.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Capture each URL and save a separate file
The numbered filenames remain unique even when the input contains duplicate URLs. The URL-derived label is optional and sanitized so it cannot turn an arbitrary URL into a filesystem path. This script saves full-page PNG files, logs each result, and moves on if one URL fails.
#1 Best Overall
- FULL HD IPS DISPLAY - Enjoy vibrant, crystal-clear images with 178-degree wide-viewing angles
- AMD RYZEN 3 30 PROCESSOR - Everyday performance you can count on; Multitask, stream, game casually, and edit photos smoothly with responsive power and vibrant HDR visuals
- ENJOY UP TO 14 HOURS AND 15 MINUTES OF BATTERY LIFE - HP Fast Charge restores battery from 0 to 50% in approximately 45 minutes
- AMD RADEON 610M GRAPHICS - Experience smooth entertainment; Built for streaming and multitasking, enjoy realistic visuals and efficient performance for work and play
- STORAGE AND MEMORY - 512 GB PCIe NVMe M.2 SSD offers fast speed and efficient storage; and 8 GB LPDDR5 RAM memory boosts performance with higher bandwidth
import { chromium } from 'playwright';
import { mkdir } from 'node:fs/promises';
const urls = [
'https://example.com',
'https://playwright.dev',
];
const outputDir = 'captures';
function safeLabel(url) {
try {
const hostname = new URL(url).hostname.replace(/^www\./, '');
return hostname.replace(/[^a-zA-Z0-9-]+/g, '-').replace(/^-+|-+$/g, '') || 'page';
} catch {
return 'page';
}
}
await mkdir(outputDir, { recursive: true });
const browser = await chromium.launch();
try {
const context = await browser.newContext();
const page = await context.newPage();
for (const [index, url] of urls.entries()) {
const number = String(index + 1).padStart(3, '0');
const filename = `${outputDir}/page-${number}-${safeLabel(url)}.png`;
try {
const response = await page.goto(url, {
waitUntil: 'domcontentloaded',
timeout: 30_000,
});
const status = response?.status();
await page.screenshot({ path: filename, fullPage: true });
console.log(`${status ?? 'no main response'} ${url} -> ${filename}`);
} catch (error) {
console.error(`FAILED ${url}: ${error.message}`);
}
}
} finally {
await browser.close();
}
Run it from the project directory with node capture-batch.mjs. Successful captures appear in captures/. An index is included even if two URLs produce the same sanitized hostname, so neither duplicate URLs nor label collisions overwrite an earlier file.
Change the capture extent
fullPage: true captures the full page rather than only the current viewport. Set it to false or omit it for a viewport capture. Full-page images can be much taller and larger than viewport captures; use viewport-sized screenshots when you need consistent dimensions or a quick visual check.
Choose pages, contexts, and browser state
One reused page for a serial batch
The script reuses one page for every URL, which is the simplest approach when each capture can run sequentially. A browser context can contain multiple pages, but creating extra tabs is useful only when the workflow needs them; it is not necessary merely to save separate files.
Rank #2
- 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.
Use a fresh context when captures need isolation
Pages in the same context share its session configuration and browser state. If each capture must not inherit cookies or other state from another job, create a fresh non-persistent context per job and close it when finished. Playwright documents non-persistent contexts as independent sessions that do not write browsing data to disk. Conversely, reuse a context when the pages intentionally need the same session.
Set the right navigation readiness condition
The example uses domcontentloaded, which waits for HTML parsing to complete but does not guarantee that client-rendered content, fonts, images, or application data are ready. Choose the condition according to what the screenshot must show:
commitwaits for the navigation response to begin loading.domcontentloadedwaits for the document’s DOM content to be loaded.loadwaits for the page load event and its dependent resources.- A page-specific locator or readiness signal is often better when a JavaScript application renders important content after initial navigation.
Playwright describes networkidle as discouraged for testing; it means at least 500 ms without network connections. Sites that keep connections open or make background requests can make that condition unreliable. Prefer a meaningful element or application-specific signal when readiness depends on rendered content.
Rank #3
- Stunning 15.6" FHD IPS Display: Experience crisp 1920x1080 resolution on this 15.6 inch laptop with an IPS panel that delivers wide viewing angles and vivid colors. The narrow-bezel design maximizes screen real estate for comfortable viewing on this Win 11 laptop, whether you're studying or working.
- Celeron J4105 Processor & 256GB SSD: Powered by a reliable Celeron J4105 processor paired with 12GB DDR4 memory and a fast 256GB M.2 SSD. This laptop computer supports SSD expansion up to 2TB and TF card expansion up to 1TB, so your storage grows with your needs. Delivers smooth multitasking for daily productivity.
- AI-Powered Win 11 Laptop: Built-in AI features enhance your productivity with smart assistance for writing, summarizing, and task management. Pre-installed with Win 11 and includes Office 365 subscription. This student laptop is backed by 1-year warranty and 24/7 customer support.
- All-Day 7000mAh Battery & 180° Hinge: The high-capacity 7000mAh battery keeps this laptop powered through long classes or meetings. The 180-degree lay-flat hinge lets you share your screen effortlessly during presentations. This durable laptop computer adapts to your dynamic workflow.
- Versatile Connectivity Hub: Equipped with USB 3.2, Type-C, Mini HDMI, and 3.5mm audio jack to connect all your peripherals. Stay online anywhere with high-speed 5G WiFi and Bluetooth 4.2. This college laptop keeps you connected at home, in the library, or on the go.
Handle HTTP responses and failed URLs
page.goto() can throw for an invalid URL, SSL error, timeout, unreachable server, or failed main-resource load. The per-URL try/catch logs the error and lets the rest of the list continue. The finally block closes the browser even if the batch encounters a problem.
A navigation that returns HTTP 404 or 500 may still resolve normally. The script logs response.status() so you can decide whether those pages should count as successful captures. To skip screenshots for non-success HTTP statuses, put a check after getting the status and before page.screenshot(), for example:
if (status && status >= 400) {
console.error(`HTTP ${status} ${url}; screenshot skipped`);
continue;
}
That policy is optional: sometimes capturing an error page is exactly what a monitoring or audit job needs. A missing main response is logged as no main response; it is not treated as a known successful status.
Rank #4
- Efficient Performance for Everyday Computing: Powered by Intel N150 processor with up to 3.6 GHz Intel Turbo Boost Technology, 6 MB L3 cache, 4 cores, and 4 threads, this HP laptop delivers responsive performance for web browsing, streaming, document editing, and multitasking. Paired with 4GB LPDDR5 RAM and 128GB UFS storage, it handles daily tasks smoothly. Includes 1-year Microsoft 365 Personal subscription for Word, Excel, PowerPoint, and cloud storage to maximize your productivity.
- 14-Inch HD Micro-Edge Display:Enjoy clear visuals on the 14-inch HD (1366 x 768) anti-glare screen with 250-nit brightness and 62.5% sRGB coverage. The micro-edge bezel delivers a 79% screen-to-body ratio in a compact design. An HP True Vision 720p HD camera with noise reduction and dual-array microphones supports clear video calls, remote work, and online learning.
- Modern Connectivity and Wireless Technology: Stay connected with Wi-Fi 6 (2x2) for faster wireless speeds and Bluetooth 5.4 for seamless pairing with accessories. Versatile port selection includes 1 USB Type-C 10Gbps with DisplayPort 1.2 for external displays, 2 USB Type-A 5Gbps ports for peripherals, 1 HDMI 1.4b port, 1 headphone/microphone combo jack, and 1 multi-format SD media card reader. Connect monitors, transfer files quickly, and expand your workspace with ease.
- All-Day Battery Life and Portable Design: Enjoy up to 11 hours of video playback, 7.5 hours of mixed usage, or 7.5 hours of wireless streaming on a single charge, perfect for students and professionals on the go. Weighing just 3.24 lb and measuring 12.76" x 8.86" x 0.71", this lightweight laptop fits easily in backpacks and bags. The stylish willow green top cover with matte finish and natural silver keyboard deck with vertical brushing pattern offer a modern, professional look.
- AI-Enhanced Productivity: Access Microsoft Copilot instantly with the dedicated Copilot key for faster assistance. AI Noise Reduction filters background sounds and improves voice clarity during calls. Dual speakers provide clear audio, while the full-size natural silver keyboard and HP Imagepad support comfortable typing and navigation.
Common problems and fixes
- A URL fails and later URLs are not captured: keep navigation and screenshot work inside the per-URL
try/catch, rather than wrapping the entire loop in a single catch. - The image shows a loading shell or incomplete app: replace or supplement
domcontentloadedwith a locator wait for the content that matters, using a selector specific to that site. - A 404 or 500 image was saved: inspect the logged status and add an explicit status policy if those responses should be skipped or retried.
- The navigation times out: check whether the URL is reachable from the machine running the script and whether the selected readiness condition is too strict; tune the timeout only when a longer wait is appropriate.
- Files overwrite one another: retain the sequence number in the filename. Do not use raw URLs as paths; arbitrary URL characters are unsafe and sanitized labels can collide.
- Cookies or page state affect later captures: create a separate context for each isolated job instead of reusing the same session.
- Chromium does not launch: confirm that Playwright and its browser engine are installed for the project and that the script uses the import style supported by its package setup.
Performance, reliability, and output choices
This serial version is deliberately simple: it uses one page and processes URLs in input order. Its wall-clock time grows with the number of URLs and how long each navigation and screenshot takes; no fixed speed can be assumed across different sites or machines. Parallel pages may reduce elapsed time for some workloads, but they also use more browser resources and can increase load on target sites. Start with serial capture unless concurrency is a requirement, then bound the number of simultaneous pages.
PNG is used here for lossless output. If file size matters more than lossless detail, Playwright’s screenshot options also support other image formats; consult the API documentation for the precise options in your installed version. Playwright separately documents PDF output, which is a different deliverable from a screenshot. If the intended per-URL file is a PDF or saved HTML rather than an image, change the capture method accordingly instead of treating those formats as interchangeable.
Or skip the browser setup
ScreenshotNeo is a website screenshot API and MCP server. A GET request with a URL returns a PNG, JPEG, WebP, or PDF. For a PNG capture:
Best Value
- 【Powerful Performance】Equipped with an Intel N150 CPU, featuring up to 4.4 GHz, ensuring efficient and powerful multitasking capabilities.
- 【Versatile Connectivity】Stay connected with multiple ports including USB 3.0 Type-C, USB 3.0 Type-A, and a headphone/mic combo jack, with Wi-Fi and Bluetooth for seamless wireless networking.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.png
See the ScreenshotNeo documentation for API parameters. It can accept cookie or consent banners and remove 60+ known consent platforms, newsletter popups, and chat widgets before a capture; each step can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and responses include X-Page-Verdict and X-Billed headers. Its MCP server offers take_screenshot, get_page_info, and capture_pdf for AI agents 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.
Sign up for ScreenshotNeo’s free plan to try 1,000 screenshots a month with no card.
Frequently Asked Questions
Can I use this batch pattern with a list read from a file?
Yes. Load and validate the URLs before the loop, then use that array in place of the hard-coded sample list.
Does a successful screenshot prove the page returned HTTP 200?
No. Check the logged response status; navigation can resolve for HTTP errors such as 404 or 500.
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.

