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

To capture screenshots of every page on a website, first build and verify a list of the pages you mean to include, then visit each URL with browser automation and save a screenshot. Playwright can capture either the visible viewport or the page’s full scrollable content. Setting fullPage: true captures one page; it does not discover the rest of the site.

What “every page” means for a screenshot job

A website is not necessarily a finite list of URLs. Query strings, filters, calendars, search results, localized paths, logged-in pages, and application states can all create additional URLs or views. Before automating anything, decide what counts as a page for your job.

  • Public pages: usually the pages a visitor can reach without signing in.
  • URL variants: decide whether tracking parameters, pagination, filters, and other query-string variants are separate captures.
  • Localized routes: include the languages or regions that matter to your archive.
  • Authenticated areas: include them only if you have permission and a safe way to provide the required session or credentials.
  • Dynamic states: decide whether a page’s initial state is sufficient or whether you need particular interactions, such as opening a menu or selecting a tab.

Set a boundary for patterns that can generate effectively unlimited URLs, such as faceted filters or calendar navigation. Otherwise, a crawler may spend its time capturing variants rather than the pages you intended.

Build and validate a URL inventory

A screenshot script can only capture URLs it receives. A sitemap is a useful source of candidate URLs, but it is not a complete inventory by definition. Google Search Central notes that a sitemap helps discovery but does not guarantee that every listed item will be crawled and indexed; for screenshot work, the practical point is that sitemap presence does not prove that the list covers every page you intend to capture.

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

Start with sitemaps, then check for omissions

Look for the site’s sitemap or sitemap index. The Sitemaps protocol allows up to 50,000 URL entries and a maximum file size of 50 MB per sitemap. Larger inventories can be divided among multiple sitemap files referenced by an index. Treat each URL as a candidate: sitemaps can be stale, omit routes, or include URLs outside your desired scope.

When completeness matters, compare the sitemap list with other sources, such as internal navigation or the site’s application route inventory. A supplied URL list is also valid when you already know the required scope. Each source has different coverage: an internal link crawl may miss pages not linked from the pages you visit, while an application route inventory may include routes that are not publicly reachable.

Normalize, deduplicate, and constrain the list

Before running a batch, save a final manifest of URLs and apply consistent rules:

  • Remove exact duplicates and decide how to handle equivalent URLs, such as trailing slashes or query parameters.
  • Restrict captures to the intended hostname and, if appropriate, path prefixes.
  • Keep or discard query-string variants deliberately rather than allowing filters to expand the crawl without a limit.
  • Exclude routes that are out of scope, unsafe to visit, or likely to produce unbounded variations.

Keep the original candidate list as well as the final manifest. That makes it possible to explain which URLs were excluded and compare the completed run against the intended scope.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
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

Choose screenshot settings before the batch

Consistent settings matter if you are archiving pages or comparing images over time. Decide on the viewport dimensions, whether each image shows only the viewport or the full scrollable page, and whether output should use CSS-pixel or device-pixel scale. Use the same choices across the batch unless a particular page requires an explicitly recorded exception.

  • Viewport capture: shows the visible browser area; useful when the initial screen or a fixed-height layout is what you need to document.
  • Full-page capture: produces a tall image of the page’s scrollable content. It can be useful for an overview or archive, but very long pages create correspondingly tall images.
  • Viewport and scale: affect the rendered dimensions and appearance. Choose a desktop or mobile viewport to match the use case, and use a consistent scale for comparison.

Playwright also documents image output options, a save path, masking locators for obscuring selected elements, and transparent-background behavior. Masking can help protect or de-emphasize selected content in an image, but it is not a substitute for permission to access a page or for a data-handling policy.

Capture an existing URL list with Playwright

The example below uses Node.js and Playwright. It reads a newline-separated list from urls.txt, creates a separate PNG for each URL, and records each attempt in manifest.jsonl. It is a capture loop, not a crawler: it does not discover links or prove that the input list is exhaustive.

1. Install Playwright

npm init -y
npm install playwright
npx playwright install chromium

2. Create the URL list

Put one URL on each line in urls.txt. For example:

https://example.com/
https://example.com/about
https://example.com/contact

3. Save and run the capture script

Save this as capture.mjs. The viewport and full-page setting are set in one place so the batch stays consistent. A failed navigation is recorded and does not prevent later URLs from being attempted.

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.
Rank #3
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.
import { chromium } from 'playwright';
import { mkdir, readFile, appendFile } from 'node:fs/promises';

const input = await readFile('urls.txt', 'utf8');
const urls = [...new Set(input.split(/r?n/).map(s => s.trim()).filter(Boolean))];
const outputDir = 'screenshots';
await mkdir(outputDir, { recursive: true });
await mkdir('logs', { recursive: true });

const browser = await chromium.launch({ headless: true });
const page = await browser.newPage({
  viewport: { width: 1440, height: 900 },
  deviceScaleFactor: 1
});

for (let i = 0; i < urls.length; i++) {
  const url = urls[i];
  const filename = `${outputDir}/${String(i + 1).padStart(4, '0')}.png`;
  const record = { requestedUrl: url, filename, capturedAt: new Date().toISOString() };

  try {
    const response = await page.goto(url, {
      waitUntil: 'load',
      timeout: 30000
    });
    await page.screenshot({ path: filename, fullPage: true });
    record.finalUrl = page.url();
    record.httpStatus = response?.status() ?? null;
    record.outcome = 'captured';
  } catch (error) {
    record.outcome = 'failed';
    record.error = String(error);
  }

  await appendFile('manifest.jsonl', `${JSON.stringify(record)}n`);
}

await browser.close();
node capture.mjs

Numbered filenames avoid putting raw URL characters into filesystem paths. The manifest keeps the requested URL, final URL when navigation succeeds, timestamp, status when available, and outcome together. If you rerun the script, clear or rotate the old manifest first, or add a run identifier, so the records remain easy to interpret.

Adapt the readiness and output choices

The example waits for the page’s load event and then captures. Some sites render important content later, use lazy-loaded images, or update after JavaScript runs. There is no universal readiness condition that works for every website. For a known site, wait for a meaningful selector or a deliberate delay, and verify that the chosen condition corresponds to the content you need. Network-idle conditions can also be unsuitable for pages that keep background connections open.

For a viewport-only image, omit fullPage: true or set it to false. To capture a particular element rather than the page, use Playwright’s element screenshot capability. If the archive is for visual comparison, keep the browser version, viewport, device scale, readiness condition, and image format consistent and record any changes between runs.

Review coverage and handle site-specific pages

After the batch finishes, compare the manifest against the final URL list. Count captured, failed, and intentionally skipped entries separately. A run with some successful images is not necessarily a complete run; report its actual coverage rather than implying every intended page succeeded.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #4
Sale
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
  • Authentication: a public-page script will not automatically have access to a signed-in area. Use only authorized credentials or sessions, and take care not to write secrets into source files or logs.
  • Cookie or consent screens: a first-visit banner can obscure page content. Decide whether the screenshot should include that state or represent the page after consent, and make the behavior consistent.
  • Lazy-loaded content and infinite scroll: a full-page option captures the scrollable page, but it does not guarantee that every item that loads only after scrolling has been loaded first. Site-specific scrolling or readiness logic may be needed.
  • Pop-ups, chat widgets, and overlays: these may appear on a timer or depend on session state. Record whether they are part of the target view or should be handled before capture.
  • Access controls and failures: bot checks, rate limits, redirects, unavailable pages, and other restrictions vary by site. Do not try to bypass controls; follow the site’s terms and your authorization.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshooting common batch problems

The script captures only the first screen

Check that the screenshot call includes fullPage: true. That option changes the capture extent for the current page; it does not add other URLs to the batch.

Some URLs time out or return unexpected pages

Inspect the requested URL, final URL, HTTP status, and error in the manifest. The page may redirect, be unavailable, require authentication, or take longer than the configured timeout. Confirm the URL manually, then adjust the timeout or readiness condition for that site if appropriate. Keep failed attempts marked as failures rather than silently treating them as screenshots.

Images or text are missing from the capture

Content may be loaded after the initial page event, deferred until scrolling, or dependent on a user interaction. Identify the page-specific signal that means the required content is present, then wait for it or perform the needed authorized interaction before capturing. A generic delay can help diagnose timing but is less reliable than a meaningful readiness condition.

Images differ between runs

Check for changing content, personalized sessions, time-dependent elements, different viewport or scale settings, and inconsistent load timing. Use a controlled session and fixed settings where possible. If you mask dynamic elements, record the masks so later comparisons use the same rules.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Best Value
Sale
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.

The output set is incomplete

Compare the manifest with the input list and inspect every failed or skipped entry. Then compare the input list with the sources used to define scope. A sitemap can provide candidates but cannot establish that all intended routes are present.

Or skip the browser setup

ScreenshotNeo is a screenshot API and MCP server. For one URL, its API returns an image or PDF; use the same request pattern inside a loop over your validated URL list. The example below saves a WebP response for one page. See the ScreenshotNeo documentation for API parameters and response 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 removes known consent banners, newsletter pop-ups, and chat widgets before capture; each of those steps can be turned off. Bot checks, blank pages, failed loads, timeouts, and cache hits are not billed, and responses identify the page verdict and billing status. Its MCP server provides screenshot tools for AI agents, including Claude, Cursor, and other MCP clients. The free plan includes 1,000 screenshots per month without a card; paid plans start at $5 for 3,000 screenshots.

Sign up for ScreenshotNeo’s free plan to try a batch without a card.

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

Cost, performance, and reliability considerations

With a local browser, you control the machine, browser session, and files, but you also operate the browser installation and the batch process. Large full-page images take more time and storage than viewport captures. Parallel browser pages can increase throughput, but they also increase resource use and the request rate sent to the target site; start conservatively and respect site limits. Do not assume a faster run is a more complete one.

For either a local script or an API, keep a durable manifest, set a timeout, and make retries explicit. A retry can be useful for transient failures, but indiscriminate retries may load a struggling site or duplicate work. Track which attempt produced each file and distinguish a retry from a new capture run. Store screenshots and logs according to the sensitivity of the captured page content.

Frequently Asked Questions

Does fullPage capture every page on a website?

No. It captures the scrollable content of the page currently open. You must provide or generate the separate URL inventory.

Can I use a sitemap as my complete screenshot list?

Use it as a candidate source, then validate it against the scope you actually need. A sitemap alone does not prove that the intended set of pages is exhaustive.

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.