Free tools Windows power users keep installed
One-click scans. No signup required.
Start by confirming that fullPage: true reaches page.screenshot(), then compare the saved image’s pixel height with the page’s rendered CSS height and the capture’s device scale. A short or unexpectedly tall image can also come from content that has not rendered, a nested scrolling panel, viewport-dependent layout, or a browser capture boundary—not just the screenshot option.
Start with the screenshot call and measurements
Puppeteer’s fullPage option requests a screenshot of the full page and defaults to false. A minimal capture looks like this:
As an Amazon Associate I earn from qualifying purchases.
await page.screenshot({ path: 'page.png', fullPage: true });
Check that the option is passed to the actual page.screenshot() call, and that no clip option or helper wrapper restricts the capture. The API’s separate captureBeyondViewport option has different semantics; its documented defaults vary depending on whether a clip is supplied, so do not toggle it as a substitute for fullPage. See the Puppeteer ScreenshotOptions API (shown as version 25.12.0 when accessed).
Recommended Free Tools
Before changing settings, record the page’s dimensions and compare them with the image file’s actual pixel dimensions. For example:
#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 dimensions = await page.evaluate(() => ({
viewportWidth: window.innerWidth,
viewportHeight: window.innerHeight,
documentHeight: document.documentElement.scrollHeight,
bodyHeight: document.body.scrollHeight,
}));
console.log(dimensions);
const metrics = await page.evaluate(() => ({
devicePixelRatio: window.devicePixelRatio,
}));
console.log(metrics);
await page.screenshot({ path: 'page.png', fullPage: true });
These values are diagnostic, not a promise that every page can be described by one document height. Fixed or sticky elements, transforms, nested scroll regions, and responsive CSS can make the image’s visual content differ from the document’s reported height. Remember that the page measurements are in CSS pixels; the output image uses raster pixels, so account for device scale when comparing them.
Diagnose the symptom before changing browser options
The image is only about as tall as the viewport
- Verify that
fullPage: truereaches the final screenshot call. - Remove an unintended
clipor wrapper limitation and capture again. - Check the image dimensions rather than relying on a preview that may scale or crop the image.
The reported document height is right, but the bottom is blank or missing
The screenshot option does not wait for every application-specific region to render. A page-load event or network-idle condition can help, but neither proves that a client-rendered page has finished updating. Wait for a selector or readiness condition that corresponds to the content you need. For lazy-loaded pages, scroll through the document and allow images or sections to load before measuring and capturing.
Use an explicit condition where possible:
await page.goto('https://example.com', { waitUntil: 'load' });
await page.waitForSelector('[data-page-ready="true"]');
// Scroll through the document to trigger lazy-loaded regions.
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, 150));
}
window.scrollTo(0, 0);
});
await page.screenshot({ path: 'page.png', fullPage: true });
Replace the example selector with a real readiness marker from your application. The short delay in the scroll loop is only an example; choose a wait appropriate to the page, and use a page-specific signal for content whose load time varies.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Fix the driver behind crashes, sound loss and screen glitches3Repair Windows errors before they cause bigger problemsThe page scrolls inside a panel
fullPage concerns the document page. If the content you need is inside a fixed-height element with its own overflow scrolling, the document may be short while the panel holds additional content. Inspect the element that actually scrolls and decide whether to capture the panel, expand it, or scroll it in stages. For a panel, its scrollHeight and clientHeight can help identify the mismatch:
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
const panel = await page.$('.results-panel');
const panelSize = await panel.evaluate(el => ({
scrollHeight: el.scrollHeight,
clientHeight: el.clientHeight,
}));
console.log(panelSize);
Use the selector for the page’s actual scrolling element. A document-level screenshot cannot be assumed to expose all content held in an independent scroll container.
Sections shift or appear at a different scale
Capture at a consistent viewport width and height, and check for CSS using 100vh or 100vw, as well as fixed or sticky elements and content that changes after fonts or images load. Those conditions can make a full-page image look different from a viewport capture. A 2020 report described position differences in full-page mode, but it was unconfirmed and used Puppeteer 2.0.0 on Windows 10 with packaged Chromium; treat it as a possible interaction to reproduce on your setup, not proof of a general bug (Puppeteer issue #5411).
The image stops at a repeatable maximum height
Compare the image’s stopping point with the requested document height, then test a shorter page. If tall captures repeatedly stop at the same pixel height, investigate an environment or browser capture boundary. A 2017 issue reported a 16,384-pixel ceiling in the reporter’s setup; that is historical user evidence, not a documented limit that applies to every current Chrome or Chromium build (Puppeteer issue #359).
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →If you confirm a ceiling and need one continuous raster image, capture overlapping vertical segments and stitch them. If the goal is a complete page document rather than one image, PDF output may be a better fit. Do not assume the historical 16,384-pixel figure is your browser’s limit without reproducing it.
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.
Check the Puppeteer and Chromium pairing
When dimensions change after an upgrade or a switch to a separately installed browser, record the Puppeteer package version, await browser.version(), the executable path, viewport dimensions, and deviceScaleFactor. If you set executablePath, verify that the selected Chromium is supported by the installed Puppeteer version rather than assuming any locally installed browser is interchangeable.
A 2023 issue compared Puppeteer 18.1.0 and 21.6.0 with Node 20.3.1 on Linux and Chromium 119; maintainer discussion identified an unsupported browser pairing as relevant context. It does not establish that current deviceScaleFactor behavior is generally broken (Puppeteer issue #11514).
Also compare the configured scale with window.devicePixelRatio and the saved file’s pixel dimensions. A mismatch between CSS height and image height can be a scale difference rather than a clipped document. Avoid changing the scale and viewport simultaneously: change one variable at a time so you can identify which setting affects the result.
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
Use the fix that matches the cause
| Observed result | Check | Next step |
|---|---|---|
| Only viewport-height image | fullPage missing, overridden, or constrained by clip |
Pass fullPage: true to the final screenshot call and remove unintended clipping. |
| Correct document height but absent or blank lower content | Page-specific readiness, lazy loading, or nested scrolling | Wait for the relevant content, scroll to trigger lazy loading, and inspect the actual scroll container. |
| Repeated maximum image height | Possible browser or environment capture boundary | Test a shorter page; if confirmed, capture overlapping segments or use PDF when a raster image is not required. |
| Shifted elements or changed apparent height | Viewport-dependent CSS, fixed/sticky layout, or late content changes | Keep viewport and readiness consistent; inspect viewport units and layout behavior. |
| Dimensions change after browser switch or upgrade | Puppeteer/Chromium compatibility, executable, viewport, and device scale | Verify the supported browser pairing and compare CSS dimensions with output pixels. |
Or skip the browser setup
If you need a screenshot without managing a local Puppeteer browser, ScreenshotNeo is a website screenshot API and MCP server. A single GET request can return an image or PDF; its capture flow accepts cookie or consent banners and removes supported consent platforms, newsletter popups, and chat widgets before capture. Those cleanup steps can be turned off. Bot checks/CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and the response identifies the page verdict and billing status. Its MCP server provides take_screenshot, get_page_info, and capture_pdf for AI agents.
For example, this cURL call saves a WebP screenshot of Stripe; replace the URL and provide your API key:
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. The free plan includes 1,000 screenshots per month without a card; paid plans start at $5 for 3,000. Sign up for free.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Common troubleshooting mistakes
Waiting only for load or network idle
Those conditions may occur before client-side rendering, lazy images, or application data are ready. Wait for the specific content your capture needs.
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.
Treating a historical issue as a current universal limit
Issue reports document behavior in the reporter’s environment. The cited 16,384-pixel observation is from 2017 and should prompt a test, not be treated as a current Chromium specification.
Changing captureBeyondViewport to force a full-page capture
It is not a synonym for fullPage. First ensure the documented full-page option reaches the screenshot call and rule out clipping.
Using a separately installed Chromium without checking compatibility
Record the browser Puppeteer actually launches and confirm the pairing is supported. An unsupported pairing can complicate diagnosis of dimensions and screenshot behavior.
FAQ
Does fullPage: true guarantee every part of a site is visible?
No. It requests a full-page screenshot, but it does not guarantee that dynamic or lazy content has rendered, or that content inside an independent scrolling panel is exposed. A 2020 site-specific report described top-only or blank areas with Puppeteer 1.20.0; it illustrates the symptom but does not establish a universal cause (Puppeteer issue #5318).
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →What height should I compare against: CSS pixels or image pixels?
Compare the document’s rendered CSS height with the saved image’s raster-pixel height while accounting for the capture’s device scale. Also check viewport dimensions and the actual browser version; the two height values need not match one-to-one.
Should I use a PDF instead of a screenshot?
Use PDF when the requirement is a complete page document and a single raster image is unnecessary. If the consumer specifically needs one tall image, verify whether the browser can capture it or use overlapping segments and stitch them.
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.




