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

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

To capture product screenshots without missing off-screen images, scroll the page through the image regions first, wait for the relevant images to finish loading, then take a full-page screenshot—or capture just the product gallery or card. A browser’s initial load event alone does not guarantee that lazy-loaded images are ready.

Why lazy-loaded images go missing

Lazy loading defers non-critical resources until they are needed. For images marked loading="lazy", the browser typically waits until an image is within a browser-calculated distance of the viewport before fetching it. A screenshot operation does not necessarily trigger those requests for content that has never approached the viewport.

The window load event is not a dependable readiness check: lazy-loaded images may still be unloaded when it fires. The image element’s Boolean complete property is useful, but a complete image may also have failed to load, so check whether it has a usable natural size as well.

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.

Choose what you need to capture

Capture target Use it when Playwright method
Whole product page You need the complete scrollable document, including content below the initial viewport. page.screenshot({ fullPage: true })
Product image, gallery, or card You need a focused screenshot without unrelated page content. Take a screenshot of the relevant locator.

Playwright describes a full-page screenshot as capturing “the full scrollable page, as if you had a very tall screen and the page could fit it entirely.” That scope does not, by itself, establish that every deferred image has loaded. See the Playwright screenshot documentation and screenshot API options.

#1 Best Overall
Sale
Motorola Moto g - 2026 | Unlocked | Made for US 4/128GB | 50MP Camera | Pantone Slipstream, Cellular_Phone
  • Universal unlocked. Compatible with all major U.S. carriers, including Verizon, AT&T, T-Mobile and other prepaid carriers.
  • Super-bright, super-smooth 6.7" display. See your screen clearly even outdoors in sunlight, and enjoy seamless views with a fast-refreshing 120Hz display.*
  • AI-powered camera system. Take stunning photos in any light with the 50MP camera**, look your best with a 32MP selfie cam*****, and capture extreme close-ups.
  • Superfast 5G performance. Unleash your entertainment at 5G speed*** with the MediaTek Dimensity 6300 chipset and up to 12GB of RAM with RAM Boost****.
  • Long-lasting battery + TurboPower charging. Power through day after day with a 5200mAh battery, then get hours of power in just minutes.****

Capture lazy-loaded images with Playwright

This Node.js example scrolls the document in measured steps to activate ordinary document-level lazy loading, waits for image elements to finish, and saves a full-page screenshot. It reports images that are complete but failed or have no usable image data, rather than silently treating them as successful.

  1. Install Playwright: run npm install playwright, then npx playwright install chromium.
  2. Save the script: create capture-product.js with the code below.
  3. Run it: use node capture-product.js https://example.com/product, replacing the URL with the product page you are authorized to capture.
const { chromium } = require('playwright');

async function main() {
  const url = process.argv[2];
  if (!url) throw new Error('Usage: node capture-product.js <url>');

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

  try {
    await page.goto(url, { waitUntil: 'load', timeout: 60000 });

    // Trigger standard document-level lazy loading by bringing successive
    // document regions near the viewport. This is not a universal recipe for
    // nested scrollers, virtualized grids, or infinite-scroll pages.
    await page.evaluate(async () => {
      const step = Math.max(300, Math.floor(window.innerHeight * 0.75));
      for (let y = 0; y < document.documentElement.scrollHeight; y += step) {
        window.scrollTo(0, y);
        await new Promise(resolve => setTimeout(resolve, 150));
      }
      window.scrollTo(0, 0);
    });

    // Wait for image requests that were triggered by scrolling. A timeout
    // avoids waiting forever on a broken request; results are checked below.
    await page.waitForFunction(() =>
      Array.from(document.images).every(img => img.complete),
      { timeout: 30000 }
    ).catch(() => {});

    const imageStatus = await page.evaluate(() =>
      Array.from(document.images)
        .filter(img => !img.naturalWidth || !img.naturalHeight)
        .map(img => ({ src: img.currentSrc || img.src, complete: img.complete }))
    );
    if (imageStatus.length) {
      console.warn('Images that may be missing or failed:', imageStatus);
    }

    await page.screenshot({ path: 'product-page.png', fullPage: true });
    console.log('Saved product-page.png');
  } finally {
    await browser.close();
  }
}

main().catch(error => {
  console.error(error);
  process.exitCode = 1;
});

The scroll step and brief pause are example implementation choices, not universal settings. Image distance thresholds, rendering speed, and page scripts vary. The script waits on complete to avoid hanging indefinitely, then checks natural dimensions because complete alone does not prove successful loading. Inspect the screenshot and warning list for the target page.

Rank #2
Sale
Samsung Galaxy A17 5G Smart Phone 128GB US 1 Yr Manufacturer Warranty Black
  • YOUR CONTENT, SUPER SMOOTH: The ultra-clear 6.7" FHD+ Super AMOLED display of Galaxy A17 5G helps bring your content to life, whether you're scrolling through recipes or video chatting with loved ones.¹
  • LIVE FAST. CHARGE FASTER: Focus more on the moment and less on your battery percentage with Galaxy A17 5G. Super Fast Charging powers up your battery so you can get back to life sooner.²
  • MEMORIES MADE PICTURE PERFECT: Capture every angle in stunning clarity, from wide family photos to close-ups of friends, with the triple-lens camera on Galaxy A17 5G.
  • NEED MORE STORAGE? WE HAVE YOU COVERED: With an improved 2TB of expandable storage, Galaxy A17 5G makes it easy to keep cherished photos, videos and important files readily accessible whenever you need them.³
  • BUILT TO LAST: With an improved IP54 rating, Galaxy A17 5G is even more durable than before.⁴ It’s built to resist splashes and dust and comes with a stronger yet slimmer Gorilla Glass Victus front and Glass Fiber Reinforced Polymer back.

Capture only a product element

If the useful target is a gallery or product card, use a locator screenshot after scrolling has triggered its images. Replace the selector with one that matches the page:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
const gallery = page.locator('[data-testid="product-gallery"]');
await gallery.waitFor({ state: 'visible' });
await gallery.screenshot({ path: 'product-gallery.png' });

Playwright also provides screenshot options for image type, scale, and clipping; select them to match the destination and output requirements. See the official screenshot examples.

Rank #3
Samsung Galaxy A16 5G 128GB Cell Phone, Unlocked Android Smartphone, Large AMOLED Display, Durable Design, Super Fast Charging, Expandable Storage, US Version, 2025, Blue Black (Renewed)
  • Charger NOT Included, 6.7" Super AMOLED FHD+, 90Hz Refresh Rate, 385 ppi, 800 nits (HBM), 1080x2340px, 5000mAh Battery
  • 128GB, 4GB RAM, microSDXC, Exynos 1330 (5nm), Octa-Core, Mali-G68 MP2 or Mali-G57 MC2 GPU
  • Rear Camera: 50MP, f/1.8 (wide) + 5MP, f/2.2 (ultrawide) + 2MP, f/2.4 (macro), LED flash, panorama, HDR; Front Camera: 13MP, f/2.0, Android 14, up to 6 major Android upgrades, One UI 6.1
  • 3G: HSDPA 850/900/1700(AWS)/1900/2100; 4G LTE: 1/2/3/4/5/7/12/13/14/20/25/26/28/29/30/38/39/40/41/48/66/71, 5G: 2/5/25/41/66/71/77/78 SA/NSA/Sub6/mmWave - Nano-SIM + eSIM
  • US Model – Global Connectivity – Compatible with Most GSM Carriers like T-Mobile, AT&T, MetroPCS, etc. Will Also work with CDMA Carriers Such as Verizon, Straight Talk.

When the standard scroll workflow is not enough

  • Nested scroll region: scrolling the document may not move the gallery or list that owns its own scrollbar. Identify that container and scroll it directly, then check the target images.
  • Virtualized grid: a site may remove off-screen items from the DOM and render only the visible rows. A single full-page capture may not contain every item; capture the required regions as you navigate them or use page-specific interaction.
  • Infinite scroll: scrolling can load more products indefinitely. Decide which content range is required and stop after that range has appeared and its images are ready.
  • Script-driven image display: some pages require a click, selection, or other interaction before assigning image sources. Reproduce the necessary page interaction before checking readiness.

There is no universal scroll increment, delay, retry count, or stopping rule established for these cases. The right approach depends on the target page’s DOM and loading behavior.

Troubleshoot missing or incomplete screenshots

Symptom Likely cause What to do
Images below the fold are blank They were never brought near the viewport, so lazy loading was not triggered. Scroll through the intended image regions before capture and verify image readiness.
The script proceeds after load, but images are absent The page load event does not mean deferred images have loaded. Wait for the relevant image elements after triggering their requests; inspect complete and natural dimensions.
Some images stay incomplete A slow or failed request may remain pending. Use a bounded wait, inspect the image URL and page network behavior, and check the resulting screenshot. Do not wait forever for a failed request.
Only part of a long product list appears The page may use a nested scroller, virtualization, or infinite loading. Interact with the actual scrolling region and define a page-specific stopping point.
Capture changes between runs Dynamic content, animation, or site-specific scripts can alter what is rendered. Confirm the intended content is present before capture; use page-specific stabilization rather than assuming one fixed wait works everywhere.
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 accepts a URL in one API request and can return a PNG, JPEG, WebP, or PDF. Its full-page capture option loads lazy images. Example cURL request:

Rank #4
Sale
Samsung Galaxy A17 5G Smart Phone 128GB, US 1 Yr Manufacturer Warranty Blue
  • YOUR CONTENT, SUPER SMOOTH: The ultra-clear 6.7" FHD+ Super AMOLED display of Galaxy A17 5G helps bring your content to life, whether you're scrolling through recipes or video chatting with loved ones.¹
  • LIVE FAST. CHARGE FASTER: Focus more on the moment and less on your battery percentage with Galaxy A17 5G. Super Fast Charging powers up your battery so you can get back to life sooner.²
  • MEMORIES MADE PICTURE PERFECT: Capture every angle in stunning clarity, from wide family photos to close-ups of friends, with the triple-lens camera on Galaxy A17 5G.
  • NEED MORE STORAGE? WE HAVE YOU COVERED: With an improved 2TB of expandable storage, Galaxy A17 5G makes it easy to keep cherished photos, videos and important files readily accessible whenever you need them.³
  • BUILT TO LAST: With an improved IP54 rating, Galaxy A17 5G is even more durable than before.⁴ It’s built to resist splashes and dust and comes with a stronger yet slimmer Gorilla Glass Victus front and Glass Fiber Reinforced Polymer back.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

See the ScreenshotNeo API documentation for request options. Cookie banners are accepted and removed before capture, along with supported newsletter popups and chat widgets; each cleanup step can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers report the page verdict and billing status. An MCP server provides screenshot tools for AI agents. The Free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 screenshots.

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

Sign up for ScreenshotNeo and get 1,000 free screenshots a month—no card required.

Best Value
Tracfone Motorola Moto G 2025, 64GB, Saphire Blue (Locked to
  • Carrier: This phone is locked to Tracfone, which means this device can only be used on the Tracfone wireless network. Tracfone plan required, activating is easy, just 3 steps.
  • DISPLAY: Immersive viewing on a 6.7-inch super-bright 120Hz display with powerful stereo speakers and Bass Boost for cinematic entertainment.
  • CAMERA SYSTEM: Advanced 50MP Quad Pixel camera captures sharp, detailed photos and videos in any lighting condition
  • PERFORMANCE: Lightning-fast 5G connectivity paired with a powerful processor and RAM Boost for smooth multitasking.
  • BATTERY LIFE: Long-lasting 5000mAh battery with TurboPower charging technology delivers hours of power in minutes.

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.