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 lazy-loaded images in a Puppeteer full-page screenshot, scroll through the page to trigger loading, wait for the images or a page-specific readiness signal, then call page.screenshot({ fullPage: true }). The full-page option expands the capture area; it does not itself make the browser request images that have not yet come near the viewport.

Why lazy-loaded images can be missing

Pages commonly defer images with loading="lazy" until they are within a browser-calculated distance of the viewport. Puppeteer can capture the document’s full height, but extending the screenshot area does not necessarily scroll through the document or trigger those deferred requests. The result can be a full-length screenshot with blank image areas.

Puppeteer’s screenshot guide demonstrates navigating with waitUntil: 'networkidle2' before capture, but network idle is only a general navigation signal. It does not prove that offscreen lazy images have been requested or loaded. See the Puppeteer screenshot guide and MDN’s image loading reference.

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

Scroll the page, wait for images, and capture

This JavaScript pattern scrolls down by roughly one viewport at a time, pauses briefly at each position to let the browser progress, returns to the top, waits for DOM image elements to finish, and saves a full-page PNG. It is an adaptable implementation pattern, not a guarantee for every site: adjust its readiness condition for the page you are capturing.

#1 Best Overall
Sale
Logitech Brio 101 Full HD 1080p Webcam for Streaming and Meetings - Black
  • Compatible with Nintendo Switch 2’s new GameChat mode
  • Auto-Light Balance: RightLight boosts brightness by up to 50%, reducing shadows so you look your best—compared to previous-generation Logitech webcams (1)
  • Privacy with a Slide: The integrated webcam cover makes it easy to get total, reliable privacy when you're not on a video call
  • Built-In Mic: The built-in microphone lets others hear you clearly during video calls
  • Easy Plug-And-Play: The Brio 101 works with most video calling platforms, including Microsoft Teams, Zoom and Google Meet—no hassle; it just works
const url = 'https://example.com';

await page.goto(url, { waitUntil: 'networkidle2' });

await page.evaluate(async () => {
  const step = Math.max(1, window.innerHeight);
  for (let y = 0; y < document.documentElement.scrollHeight; y += step) {
    window.scrollTo(0, y);
    await new Promise(resolve => setTimeout(resolve, 250));
  }
  window.scrollTo(0, 0);
});

await page.waitForFunction(() =>
  [...document.images].every(img => img.complete)
);

await page.screenshot({ path: 'page.png', fullPage: true });

The loop brings content near the viewport so native lazy loading can begin. The pause is a small opportunity for rendering and requests to progress; it is not evidence that any particular image has loaded. The final check waits for each image element’s complete property. As MDN notes, that property can also be true when an image failed, so for images that must contain usable pixels, check naturalWidth > 0 as well and decide how your capture should handle failures. Reference: MDN’s HTMLImageElement.complete documentation.

Use a page-specific readiness condition when possible

If the site exposes a loaded marker or you know which image matters, wait for that condition rather than treating every image in the document as equally important. Puppeteer’s page.waitForFunction() can wait for a condition evaluated in the page; page.evaluate() can run asynchronous page-context code. For example, to require a particular image to have loaded successfully:

Rank #2
Sale
Logitech C270 720p Webcam Plug-and-Play Wide Screen Video Calling - Black
  • Compatible with Nintendo Switch 2’s new GameChat mode
  • Crisp HD 720p/30 fps video calls with diagonal 55° field of view and auto light correction. Compatible with popular platforms including Skype and Zoom.
  • The built-in noise-reducing mic makes sure your voice comes across clearly up to 1.5 meters away, even if you’re in busy surroundings.
  • C270’s RightLight 2 feature adjusts to lighting conditions, producing brighter, contrasted images to help you look good in all your conference calls.
  • The adjustable universal clip lets you attach the camera securely to your screen or laptop, or fold the clip and set the webcam on a shelf. You’re always ready for your next video call.
await page.waitForFunction(() => {
  const img = document.querySelector('.hero-image');
  return img && img.complete && img.naturalWidth > 0;
});

Replace .hero-image with a selector that identifies the image on your target page. For pages where images appear or move as content loads, consider checking readiness after each scroll step or waiting for a page-specific marker before the final capture. Puppeteer API references: page.evaluate() and page.waitForFunction().

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

Choose full-page or element capture

  • Whole document: Use page.screenshot({ fullPage: true }) when the output should cover the full page. Scroll and establish readiness first; the option controls screenshot extent, not lazy-image loading.
  • One component: If you only need a known element, Puppeteer’s ElementHandle.screenshot() scrolls the element into view when needed and captures it. That behavior does not guarantee that every image inside the element has finished rendering. See the ElementHandle screenshot API.

Handle pages that do not use ordinary image lazy loading

The generic scroll-and-wait approach is not universal. A page may use JavaScript or an intersection observer rather than native loading="lazy", place content in a nested scroll container, append images after your readiness check, or use background images instead of DOM <img> elements. Virtualized lists may remove offscreen items as you scroll, so a full-page capture may not contain all content even after visiting each section.

Rank #3
Sale
NexiGo N60 1080P Webcam with Microphone, Software Control & Privacy Cover, USB HD Computer Web Camera, Plug and Play, for Zoom/Skype/Teams, Conferencing and Video Calling
  • 【Full HD 1080P Webcam】Powered by a 1080p FHD two-MP CMOS, the NexiGo N60 Webcam produces exceptionally sharp and clear videos at resolutions up to 1920 x 1080 with 30fps. The 3.6mm glass lens provides a crisp image at fixed distances and is optimized between 19.6 inches to 13 feet, making it ideal for almost any indoor use.
  • 【Wide Compatibility】Works with USB 2.0/3.0, no additional drivers required. Ready to use in approximately one minute or less on any compatible device. Compatible with Mac OS X 10.7 and higher / Windows 7, 8, 10 & 11 / Android 4.0 or higher / Linux 2.6.24 / Chrome OS 29.0.1547 / Ubuntu Version 10.04 or above. Not compatible with XBOX/PS4/PS5.
  • 【Built-in Noise-Cancelling Microphone】The built-in noise-canceling microphone reduces ambient noise to enhance the sound quality of your video. Great for Zoom / Facetime / Video Calling / OBS / Twitch / Facebook / YouTube / Conferencing / Gaming / Streaming / Recording / Online School.
  • 【USB Webcam with Privacy Protection Cover】The privacy cover blocks the lens when the webcam is not in use. It's perfect to help provide security and peace of mind to anyone, from individuals to large companies. 【Note:】Please contact our support for firmware update if you have noticed any audio delays.
  • 【Wide Compatibility】Works with USB 2.0/3.0, no additional drivers required. Ready to use in approximately one minute or less on any compatible device. Compatible with Mac OS X 10.7 and higher / Windows 7, 10 & 11, Pro / Android 4.0 or higher / Linux 2.6.24 / Chrome OS 29.0.1547 / Ubuntu Version 10.04 or above. Not compatible with XBOX/PS4/PS5.

When images remain missing, inspect the page’s actual DOM and scrolling behavior. Scroll the relevant container—not just window—and wait for the site’s own content signal or the specific resources that must appear. For pages you control, setting image width and height can improve layout stability, particularly for lazy images. See MDN’s guidance on image loading.

Troubleshooting

Symptom Likely cause What to change
Images near the bottom are blank The screenshot expanded to full height, but scrolling did not trigger their requests. Scroll through the document before capture, then wait for the relevant images or a page-specific signal.
networkidle2 finishes, but images are still absent Network idle is not a guarantee that offscreen lazy resources have been requested. Trigger loading by scrolling and add an explicit readiness check for the images needed in the output.
The image check passes, but an image is broken img.complete can be true after a failed load. For expected usable images, also check img.naturalWidth > 0; handle failures according to your capture requirements.
Scrolling the window has no effect The page may scroll inside a nested container, or a site-specific script may control loading. Identify and scroll the actual container, then wait for the relevant content to appear.
Some content disappears or is missing in a long capture A virtualized list may render only items near the current scroll position, or new content may be added after the check. Use a site-specific method to expose the required content and verify it is present at capture time; the generic loop cannot guarantee a complete virtualized page.
Images are CSS backgrounds rather than image elements document.images does not cover CSS background images. Wait on a page-specific condition or inspect the relevant element’s background and rendering state.

Performance and reliability considerations

Scrolling and waiting adds time, especially on tall pages. A fixed pause at every viewport is simple but may be longer than needed on some pages and too short on others. A targeted selector or application-ready signal can avoid waiting on unrelated content. If the page shifts or appends items asynchronously, readiness should be checked after those changes rather than only once immediately after the scroll loop.

Rank #4
Sale
EMEET C960 1080P Webcam with Microphone, 2 Mics, 90° FOV, Computer Camera | USB Type-A & A-to-C Adapter, Fixed Focus, Plug&Play for Zoom/Teams/Facetime/YouTube/Google Meet/Switch 2 Camera, 2025 Version
  • 1080P Webcam with Cover for Video Calls - EMEET computer webcam provides design and Optimization for professional video streaming. Realistic 1920 x 1080p video, 5-layer anti-glare lens, providing smooth video. C960 computer camera delivers 1920x1080 video with fixed focus (11.8–118.1 inches), so as to provide a clearer image. C960 USB webcam has a cover and can be removed automatically to meet your needs for privacy. For optimal image performance, use the webcam in a well-lit environment.
  • Built-in 2 Omnidirectional Mics - EMEET webcam with microphone for desktop features 2 built-in omnidirectional microphones, picking up your voice to create clear audio for communication. When installing the webcam, select EMEET C960 as the default microphone input device in your computer and video applications and select C960 as the default device in Zoom/Teams and ensure microphone permissions are enabled for proper use. Please note that C960 does not include built-in speakers.
  • Automatic Light Adjustment - Automatic exposure adjustment is applied in EMEET HD webcam 1080p so that the streaming webcam can deliver stable image performance. EMEET C960 camera for computer also features color adjustment and exposure optimization to help you look your best. For optimal video quality, it is recommended to use the webcam in normal or well-lit environments and select suitable video settings in your application. Proper lighting helps achieve a clearer and more balanced image.
  • Plug-and-Play & Upgraded USB Connectivity - New C960 webcam features both USB Type-A & A-to-C adapter connections for wider compatibility. For stable performance, connect the webcam directly to the computer's main USB port and ensure the device is recognized correctly. If a hub or docking station is used, please ensure it provides sufficient power and stable data transmission, as limited ports may affect performance. 90° wide-angle lens captures more participants without frequent adjustments.
  • High Compatibility & Multi Application - C960 webcam for laptop is compatible with Windows 10/11, macOS 10.14+, and Android TV 7.0+. Not supported: Windows Hello, TVs, tablets, or game consoles. It works with Zoom, Teams, Facetime, Google Meet, YouTube and more. Please select C960 webcam as the default camera and microphone device in your application and ensure camera/microphone permissions are enabled, especially on macOS. (Tips: Incompatible with Windows Hello)

Do not treat one signal as proof of every other condition: networkidle2 does not establish lazy-image readiness, and complete does not establish successful image retrieval. When correctness matters, check the images or application state that the screenshot must show.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
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 can return a screenshot with one GET request. Its clean-shot processing accepts the cookie or consent banner like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each step can be turned off. Bot checks and CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and the response reports the page verdict and billing status in headers. ScreenshotNeo also offers an MCP server with take_screenshot, get_page_info, and capture_pdf tools for AI agents. The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000.

cURL example (replace the target URL as needed):

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. Sign up for 1,000 free screenshots a month with no card.

Best Value
Logitech C920x HD Pro PC Webcam Full 1080p/30fps Video - Black
  • Compatible with Nintendo Switch 2’s new GameChat mode
  • HD lighting adjustment and autofocus: The Logitech webcam automatically fine-tunes the lighting, producing bright, razor-sharp images even in low-light settings. This makes it a great webcam for streaming and an ideal web camera for laptop use
  • Advanced capture software: Easily create and share video content with this Logitech camera that is suitable for use as a desktop computer camera or a monitor webcam
  • Stereo audio with dual mics: Capture natural sound during calls and recorded videos with this 1080p webcam, great as a video conference camera or a computer webcam
  • Full HD 1080p video calling and recording at 30 fps. You'll make a strong impression with this PC webcam that features crisp, clearly detailed, and vibrantly colored video

Frequently Asked Questions

Why does `fullPage: true` not load every lazy image?

It expands the screenshot’s capture area; it does not necessarily scroll the page to trigger offscreen image requests.

Does `img.complete` mean the image loaded successfully?

No. For images expected to have usable pixels, also check `naturalWidth > 0`.

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

Quick Recap

SaleBestseller No. 1
Logitech Brio 101 Full HD 1080p Webcam for Streaming and Meetings - Black
Logitech Brio 101 Full HD 1080p Webcam for Streaming and Meetings - Black
Compatible with Nintendo Switch 2’s new GameChat mode; Built-In Mic: The built-in microphone lets others hear you clearly during video calls
$35.80
SaleBestseller No. 2
Logitech C270 720p Webcam Plug-and-Play Wide Screen Video Calling - Black
Logitech C270 720p Webcam Plug-and-Play Wide Screen Video Calling - Black
Compatible with Nintendo Switch 2’s new GameChat mode
$16.89
Bestseller No. 5
Logitech C920x HD Pro PC Webcam Full 1080p/30fps Video - Black
Logitech C920x HD Pro PC Webcam Full 1080p/30fps Video - Black
Compatible with Nintendo Switch 2’s new GameChat mode; Fully compatible with Windows 11
$69.99

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.