ScreenshotNeo

BlogScreenshots on your device

How to Capture an Entire Scrolling Window

Capture a whole webpage beyond the visible screen with Edge, Firefox, Chrome, iPhone, or ScreenshotNeo, plus fixes for common full-page failures.

By the ScreenshotNeo team1 October 20267 min read

For a webpage, use the browser’s full-page screenshot command. Microsoft Edge calls it Capture full page, Firefox calls it Save full page, and Chrome exposes Capture a full size screenshot in DevTools. On iPhone, take a screenshot, open its preview, and tap Full Page for a Safari webpage.

These tools capture content below the visible viewport. They do not provide one universal way to capture every scrollable pane inside every desktop application. If you need repeatable, automated captures, ScreenshotNeo can render a URL as one full-page image or PDF without running a browser locally.

What “entire scrolling window” means

A full-page browser capture combines the webpage’s off-screen content into one image. It is different from a normal screenshot, which records only the current viewport. Native browser tools are designed primarily for webpages; a document editor, chat client, terminal, or other desktop app may contain nested scrolling regions that the browser commands cannot see.

Target Best starting method What it captures
Webpage in Edge Ctrl+Shift+S → Capture full page The page beyond the viewport
Webpage in Firefox Screenshot interface → Save full page The complete page, with download or clipboard output
Webpage in Chrome DevTools device mode → Capture a full size screenshot The full document, including content below the fold
Safari webpage on iPhone Screenshot preview → Full Page The complete Safari webpage
Scrollable pane in a desktop app App-specific or dedicated scrolling capture utility Depends on the app and pane; no universal built-in method is established

Microsoft Edge: capture a full page

  1. Open the webpage you want to capture.
  2. Press Ctrl+Shift+S, or open the Edge menu and choose Screenshot. Edge also exposes Screenshot from a webpage’s right-click menu.
  3. Choose Capture full page.
  4. In the preview overlay, copy the result or save it to a file.

Microsoft documents this workflow for content beyond the visible area. Moving content such as GIFs and carousels can remain active during capture, so pause animation or wait for the frame you need before starting. Feature availability and behavior can vary by device, market, and browser version. See Microsoft’s Edge Screenshot documentation.

Firefox: save the full page

  1. Open the page in Firefox.
  2. Open the Firefox screenshot interface from the page actions menu.
  3. Choose Save full page in the upper-right of the screenshot interface.
  4. Download the image or copy it to the clipboard.

If the toolbar button is missing, open Developer Tools settings and enable Take a screenshot of the entire page under Available Toolbox Buttons. Firefox’s Web Console also supports the documented helper :screenshot --fullpage when you need a command-based workflow. Mozilla describes both approaches in its Firefox screenshot guide and Firefox Source Docs.

Chrome: capture a full-size screenshot with DevTools

  1. Open the webpage in Chrome.
  2. Open DevTools with F12, Ctrl+Shift+I (Windows/Linux), or Command+Option+I (macOS).
  3. Turn on device mode by selecting the phone/tablet icon, or press Ctrl+Shift+M (Windows/Linux).
  4. Open the device-mode screenshot options menu.
  5. Select Capture a full size screenshot.

Chrome saves an image containing content outside the current viewport. This is the documented DevTools route from Chrome for Developers. Device mode can change the viewport and user agent, so check those settings if the page’s responsive layout matters.

iPhone: use Full Page for a Safari webpage

  1. Press the Side and Volume Up buttons together. On an iPhone with a Home button, press Home and Side together.
  2. Tap the screenshot thumbnail before it disappears.
  3. Tap Full Page at the top of the preview.
  4. Save or share the resulting full-page document using the available options.

Apple’s instructions use a Safari webpage as the example. The Full Page option is therefore a webpage capture workflow, not a guarantee that every app’s internal scroll area can be exported. See Apple’s iPhone screenshot guide.

When native full-page capture does not work

The target is an app window, not a webpage

Browser commands operate on a document rendered by that browser. A scrollable pane inside a desktop application may be separate from the browser’s document model. Check whether the application has its own “capture scrolling” or export command. If it does not, use a capture utility that explicitly supports that application and pane.

The page is longer than expected

Lazy-loaded images, infinite scrolling, collapsed sections, and content that appears only after interaction can change the page height. Scroll through the page once, expand required sections, and wait for images before capturing. A full-page command cannot include content that the page has not rendered.

Sticky headers or repeated sections appear

Fixed-position navigation may be repeated or overlap content when the browser stitches the page. Try the browser’s current full-page implementation, temporarily collapse the sticky element if the site allows it, or capture a rendered copy through an automated browser where you can apply CSS before the shot.

Animations make the result inconsistent

Carousels, videos, GIFs, and rotating banners can change while the browser scrolls. Pause the animation or capture after the desired frame is visible. Edge specifically notes that moving content can remain active during full-page capture.

Or skip the browser setup

ScreenshotNeo captures a URL with one GET request and can return PNG, JPEG, WebP, or PDF. Set full_page when you need the entire rendered document. Its consent step accepts cookie banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets before the shot; each step can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits cost nothing, and the response reports the result with X-Page-Verdict and X-Billed headers. See the ScreenshotNeo documentation for all options.

cURL

curl -G "https://api.screenshotneo.com/v1/shot" \
  -d access_key=YOUR_API_KEY \
  --data-urlencode url=https://stripe.com \
  -d full_page=true \
  -o shot.webp

Python

import requests

r = requests.get(
    "https://api.screenshotneo.com/v1/shot",
    params={
        "access_key": "YOUR_API_KEY",
        "url": "https://stripe.com",
        "full_page": "true",
    },
    timeout=90,
)
r.raise_for_status()
open("shot.webp", "wb").write(r.content)

Node.js

const q = new URLSearchParams({
  access_key: 'YOUR_API_KEY',
  url: 'https://stripe.com',
  full_page: 'true'
});
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const fs = await import('node:fs/promises');
await fs.writeFile('shot.webp', Buffer.from(await res.arrayBuffer()));

You can combine full-page capture with a viewport or device preset, dark mode, retina scale, custom CSS or JavaScript, selector capture, click actions, waits for a selector or network idle, blocked ad or tracker requests, cookies, headers, user agents, timezone, geolocation, image resizing, a chosen cache TTL, signed links, asynchronous jobs with signed webhooks, bulk capture of up to 100 URLs per call, and PDF paper-size, margin, landscape, and page-range options. An OpenAPI specification and familiar parameter names make migration from other screenshot APIs easier. ScreenshotNeo also provides an MCP server with take_screenshot, get_page_info, and capture_pdf for Claude, Cursor, and other MCP clients.

Reliability, performance, and cost notes

  • Wait for the page state you need: use a selector wait, delay, or network-idle wait for JavaScript-rendered content. Waiting too little produces incomplete captures; waiting too long increases latency.
  • Control page growth: infinite-scroll pages may never settle. Prefer a bounded route, a specific element, or a timeout strategy.
  • Reduce unnecessary work: block ads, trackers, or selected resource types when they are not part of the page you need.
  • Choose output deliberately: WebP is usually compact, PNG preserves lossless detail and transparency, JPEG is widely compatible, and PDF is useful for document-like delivery.
  • Cache repeat requests: choose a TTL when the page can be reused. Cache hits are not billed by ScreenshotNeo.
  • Handle failures explicitly: inspect HTTP status and the X-Page-Verdict/X-Billed headers before treating a response as a successful, billable screenshot.
  • Plan capacity: ScreenshotNeo includes 1,000 shots per month free with no card. Paid plans are Starter $5 for 3,000, Growth $15 for 15,000, Pro $39 for 60,000, Scale $99 for 250,000, and Business $249 for 1,000,000; yearly billing gives two months free, and every feature is on every plan.

Troubleshooting checklist

Symptom Likely cause Fix
No full-page option Wrong browser surface, outdated browser, or the feature is unavailable on that device Use the documented browser route, update the browser, or switch to DevTools/another supported browser.
Only the visible viewport is saved Regular screenshot was selected Select Edge’s Capture full page, Firefox’s Save full page, Chrome’s Capture a full size screenshot, or iPhone’s Full Page.
Images are missing Lazy loading has not triggered Scroll once, wait for images, or use an automated capture with a selector/delay/network-idle wait.
Content repeats or overlaps Sticky/fixed elements are being stitched Hide or collapse the fixed element, change the page layout, or capture a rendered page with custom CSS.
Capture stops early Infinite scroll, timeout, or a page error Use a bounded URL or element capture, increase the wait/timeout where supported, and inspect the page for load errors.
ScreenshotNeo response is not an image The page failed, was blocked, blank, timed out, or was a cache hit Read the response status and X-Page-Verdict/X-Billed headers; adjust waits, headers, cookies, or blocking rules.
Animation differs between runs Moving content changed while scrolling Pause the animation, wait for a stable frame, or hide the animated element with CSS.

FAQ

Can I capture an entire desktop window with Chrome’s full-page tool?

No. Chrome’s documented command captures the webpage in the browser’s document, not arbitrary desktop windows or unrelated application panes.

Does full-page mean the page is infinitely tall?

No. The capture includes content rendered for the document at capture time. Infinite-scroll pages need a stopping condition or a bounded target.

Will a full-page screenshot include content hidden behind a collapsed section?

Usually not. Expand the section first, or use a script/click action that opens it before capture.

Can I create a PDF instead of an image?

Yes. Browser print-to-PDF is an option, and ScreenshotNeo’s capture_pdf tool and API support paper size, margins, landscape mode, and page ranges.

Is an automated API useful for one screenshot?

It can be, especially for pages with consent banners, popups, chat widgets, lazy content, or repeatable delivery requirements. ScreenshotNeo handles those browser steps and offers a free tier.

Start with ScreenshotNeo’s free sign-up: 1,000 screenshots a month, no card required.