Set the screenshot option fullPage: true on the screenshot call. In Playwright and Puppeteer, this requests a capture of the full scrollable page; without it, the documented default is a viewport screenshot. The option captures the page as rendered, so make sure content that depends on scrolling or interaction has loaded before you take the shot.
Capture the full page with Playwright
After navigating to the page, pass fullPage: true to page.screenshot():
await page.screenshot({ path: 'full-page.png', fullPage: true });
Playwright defines this as capturing the full scrollable page rather than only the visible viewport. The option defaults to false. See the Playwright screenshots guide and Page API.
Complete minimal example
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await page.screenshot({ path: 'full-page.png', fullPage: true });
await browser.close();
})();
Replace the URL with the page you need. The example navigates before capturing, but a page that loads more content only after scrolling, interaction, or additional waiting may need those actions before the screenshot.
PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minute#1 Best Overall
Capture the full page with Puppeteer
Puppeteer uses the same option and also documents false as the default:
await page.screenshot({ path: 'full-page.png', fullPage: true });
Complete minimal example
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await page.screenshot({ path: 'full-page.png', fullPage: true });
await browser.close();
})();
Consult Puppeteer’s Page.screenshot() API, ScreenshotOptions, and screenshots guide for the API details.
Rank #2
Make sure the page state is ready to capture
fullPage controls capture extent; it does not guarantee that every site-specific element or later-loaded item has appeared. If the page uses lazy-loaded images or content that appears after scrolling, interaction, or a delay, first bring the page to the intended state and allow the relevant content to load. Then inspect the output to confirm it is present.
The Puppeteer guide demonstrates navigating before capture, but the reviewed API references do not promise that all content requiring later scrolling or interaction will automatically load. Plan for the behavior of the page you are capturing.
Rank #3
Full page, clipping, and image scale are different controls
- Full page: use
fullPage: truewhen you want the full scrollable page. - Clipping: use a clipping rectangle when you want only a defined region. Playwright’s
clipuses x/y coordinates, width, and height; Puppeteer also exposesclip. A clip is not the same as a full-page request. - Pixel scale: Playwright’s
scalecan be"device"for device pixels or"css"for CSS pixels. Choose based on the output dimensions and intended use; this changes pixel sizing, not the page extent.
Puppeteer documents captureBeyondViewport behavior alongside clipping. Consult its ScreenshotOptions reference when adjusting those related controls.
Troubleshoot a screenshot that shows only the viewport
- Check the option location: pass
fullPage: trueto the screenshot call itself, not just to navigation or page setup. - Check spelling and library: use the option name supported by the installed Playwright or Puppeteer package.
- Check the installed version: compare your package version with its corresponding API documentation if the option appears ineffective.
- Check page state: if the bottom of the page is absent or blank, verify that its content had loaded before capture; full-page capture does not itself guarantee lazy-loaded or interactive content.
- Use a clip only for a region: if you need a bounded area rather than the entire scrollable page, configure
clipinstead of relying on full-page capture.
Or skip the browser setup
ScreenshotNeo offers a one-request screenshot API. The example below requests a full-page WebP capture; see the ScreenshotNeo documentation for its API options.
curl -G "https://api.screenshotneo.com/v1/shot"
-d access_key=YOUR_API_KEY
--data-urlencode url=https://example.com
-d full_page=true
-o shot.webp
ScreenshotNeo accepts cookie or consent banners like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each of these steps can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and responses identify the page verdict and billing status in headers. Its MCP server lets AI agents use screenshot tools, and the Free plan includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots.
Sign up for ScreenshotNeo’s free plan to get 1,000 screenshots a month with no card.
Free tools Windows power users keep installed
One-click scans. No signup required.
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.

