What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
To capture an infinite-scroll page in Puppeteer, first scroll it in bounded passes to trigger additional content and lazy-loaded images, then check a page-specific stopping condition and image readiness before calling page.screenshot({ fullPage: true }). The fullPage option captures the page’s full height; it does not make an infinite feed load itself or guarantee every image is ready.
Why fullPage: true is not enough
Puppeteer’s Page.screenshot() supports fullPage: true, while fullPage defaults to false. The option controls screenshot dimensions, not the page’s loading behavior. An infinite-scroll site usually appends content only after a scroll event or when a sentinel enters view, and lazy images may not request their files until they approach the viewport. Scroll first; decide when to stop based on the site’s behavior; then capture. See Puppeteer’s screenshot guide and ScreenshotOptions reference.
As an Amazon Associate I earn from qualifying purchases.
A bounded Puppeteer workflow
This CommonJS example scrolls in increments, waits for the page to react, and stops after the document height stays unchanged across several passes or after a safety limit. It then waits for network idle and for currently loaded images to finish decoding before taking the full-page screenshot.
Install Puppeteer with npm install puppeteer, save the code as capture.cjs, and run node capture.cjs https://example.com. Use a page you are authorized to access; authenticated pages may need cookies or another login setup.
#1 Best Overall
- 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
const puppeteer = require('puppeteer');
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
async function capture(url) {
const browser = await puppeteer.launch({ headless: true });
try {
const page = await browser.newPage();
// Pick dimensions appropriate for the target site before navigation.
await page.setViewport({ width: 1365, height: 900, deviceScaleFactor: 1 });
await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 60000 });
const maxPasses = 40;
const stablePassesNeeded = 3;
let stablePasses = 0;
let previousHeight = 0;
for (let pass = 0; pass < maxPasses; pass += 1) {
const heightBefore = await page.evaluate(() => document.documentElement.scrollHeight);
await page.evaluate(() => window.scrollBy(0, Math.max(window.innerHeight * 0.8, 400)));
await sleep(700); // Give scroll-triggered requests a chance to start.
const heightAfter = await page.evaluate(() => document.documentElement.scrollHeight);
if (heightAfter === previousHeight && heightAfter === heightBefore) {
stablePasses += 1;
} else {
stablePasses = 0;
}
previousHeight = heightAfter;
if (stablePasses >= stablePassesNeeded) break;
}
// Return to the top so the final page state is predictable.
await page.evaluate(() => window.scrollTo(0, 0));
// Network idleness is a useful signal, not proof that no more feed items
// can appear or that every off-screen lazy image has been requested.
await page.waitForNetworkIdle({ idleTime: 500, timeout: 15000 }).catch(() => {});
// Wait for images that have actually been requested to complete and decode.
await page.evaluate(async () => {
const images = Array.from(document.images);
await Promise.all(images.map(async (img) => {
if (!img.complete) {
await new Promise((resolve) => {
img.addEventListener('load', resolve, { once: true });
img.addEventListener('error', resolve, { once: true });
});
}
if (img.complete && img.naturalWidth > 0 && img.decode) {
await img.decode().catch(() => {});
}
}));
});
await page.screenshot({ path: 'page.png', fullPage: true });
console.log('Saved page.png');
} finally {
await browser.close();
}
}
const url = process.argv[2];
if (!url) {
console.error('Usage: node capture.cjs https://example.com');
process.exit(1);
}
capture(url).catch((error) => {
console.error(error);
process.exitCode = 1;
});
The scroll loop is application logic, not a built-in Puppeteer “finish infinite scroll” feature. Its stable-height condition is only a generic fallback: a feed can append items without changing height immediately, replace content at the same height, or load more after a longer delay. If the site exposes a reliable signal—such as a known item count, a “no more results” marker, or a loading indicator becoming hidden—use that condition instead. The loop’s pass limit prevents a never-ending feed from keeping the script alive indefinitely.
Make the stopping condition fit the site
Prefer a meaningful completion signal
For a finite result set, wait until the expected number of cards exists or the site displays its end-of-results state. For example, replace the generic height test with a page-specific selector check using page.locator() or page.waitForSelector(). Puppeteer’s page interactions guide describes locator-based interactions and scrolling; Page.evaluate() runs code in the page context and waits for a returned promise to resolve.
Rank #2
- 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
Use stability checks as a fallback, not a guarantee
Comparing document height over repeated scrolls is useful when there is no completion marker, but choose the number of stable passes and pause duration for the site. A slow API response can make a short quiet period look like completion. If the feed refreshes continuously or is genuinely unbounded, set a maximum pass count, elapsed-time budget, or content boundary such as the first N cards. No final full-page screenshot can include an endless stream.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Clear out junk files and repair common Windows errors3Scan for outdated or missing drivers - takes under a minuteVerify lazy images deliberately
Scrolling gives viewport-triggered lazy loaders an opportunity to run; it does not establish that every image on the eventual tall page has been requested. The example waits for images present in the DOM to complete and attempts to decode successful ones. Failed image requests are allowed to settle rather than hanging the capture. For a stricter result, check the specific image selectors or site state that matters and confirm each required image has a nonzero naturalWidth.
Rank #3
- 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.
Some sites create image elements only when their cards are appended, use CSS backgrounds instead of <img>, or defer image assignment until another event. Adapt the readiness check to the implementation. A single check at the end cannot wait for elements that have not yet been added, which is why scrolling and content completion must come first.
Network idle, viewport, and screenshot options
page.waitForNetworkIdle() resolves after the network is idle and waits at least the configured idle period; Puppeteer’s options reference gives 500 ms as the default idle time. It can help after scrolling, but network quiet does not mean the page will never append more content on a future scroll, nor does it prove every lazy image has loaded. Long polling or analytics can also prevent an idle condition, so treat a timeout as a signal to inspect the page rather than a reason to wait forever. See Page.waitForNetworkIdle() and WaitForNetworkIdleOptions.
Rank #4
- 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
Set the viewport before navigation when responsive layout or viewport-triggered loading matters. Choose dimensions and device scale factor that match the output you need; there is no universally correct viewport. The screenshot options reference also documents clipping, captureBeyondViewport, and image format options; PNG is the documented default. For a page taller than a practical single image, consider capturing sections or using PDF rather than assuming one image will be suitable.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Troubleshooting
- The screenshot contains only the initial content:
fullPagechanges capture size, not feed behavior. Confirm that scroll events are firing and that the page appends cards; use the site’s completion signal if the document height does not reveal progress. - There are blank or missing images: verify that scrolling reaches every relevant region, then wait for the actual image elements or site-specific ready state. A network-idle wait by itself is not an image-readiness guarantee.
- The script stops too soon: increase the per-pass pause or stable-pass count, or replace height stability with a selector/count/end marker. Slow responses and delayed loaders can make generic stability checks premature.
- The script never finishes: feeds may refresh, long-poll, or keep appending content. Keep explicit pass and time limits; do not treat “infinite” as a state with a natural end.
waitForNetworkIdletimes out: the page may maintain ongoing requests. Handle the timeout deliberately and rely on a target-specific completion condition rather than removing all waits.- Navigation times out or shows an incomplete page: inspect whether the URL is reachable from the browser, whether login or consent is required, and whether the site blocks automation. Adjust navigation waiting to the site’s actual load pattern, then verify the content before capture.
Or skip the browser setup
ScreenshotNeo provides a website screenshot API and MCP server for developers. One GET request returns an image or PDF; its clean-shot steps can accept cookie/consent banners and remove supported consent platforms, newsletter popups, and chat widgets before capture. Bot checks, blank pages, failed loads, timeouts, and cache hits are not billed, with verdict and billing information in response headers. AI agents can use its MCP server tools, including take_screenshot, get_page_info, and capture_pdf. The free plan includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots. See ScreenshotNeo.
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 setup and options. Sign up for 1,000 free screenshots a month with no card.
Quick Recap
Best Value
- 【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.
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.

