ScreenshotNeo

BlogHow-to

How to Capture a Whole Webpage by Scrolling

Capture an entire webpage beyond the visible screen using Chrome, Edge, Firefox, iPhone, Android, or an automated screenshot API.

By the ScreenshotNeo team1 October 20268 min read

To capture a whole webpage, use your browser’s full-page screenshot command. Chrome can capture a full-size page from DevTools, Edge has a Capture full page command, and Firefox offers Save full page. On iPhone Safari, take a screenshot and choose Full Page. On Android, use the device’s Scroll capture, Capture more, or Extended screenshot control when available.

A full-page screenshot includes content below the visible viewport in one tall image. The steps below cover desktop browsers, phones, dynamic pages, troubleshooting, and automated captures.

What a whole-page screenshot captures

A normal screenshot records only the pixels currently visible on screen. A whole-page screenshot renders or stitches the page beyond the viewport, including content below the fold. Depending on the browser or tool, the result may be a tall PNG, JPEG, or a PDF.

Full-page capture works best for finite documents such as articles, documentation, invoices, and landing pages. Infinite-scroll feeds, dashboards with live data, and pages that change while you scroll can produce incomplete or unusually tall results.

Capture a full webpage in Google Chrome

  1. Open the webpage in Chrome.
  2. Open DevTools with F12, Ctrl+Shift+I on Windows/Linux, or Command+Option+I on macOS.
  3. Open the DevTools command menu with Ctrl+Shift+P or Command+Shift+P.
  4. Type screenshot.
  5. Select Capture a full size screenshot.
  6. Chrome saves an image containing content that is not currently visible in the viewport. Choose Capture screenshot instead when you only need the visible area.

Chrome documents the distinction between a viewport screenshot and the Capture a full size screenshot command for content outside the current view. See the Chrome DevTools screenshot documentation.

Chrome tips for reliable captures

  • Set the page zoom to 100% if text appears unexpectedly large or small.
  • Close DevTools-docked overlays that cover the page before capturing.
  • Scroll through the page once first when it uses lazy-loaded images.
  • Pause animated content if a precise visual comparison matters.
  • For a specific component, use DevTools’ element inspection and capture the element instead of the entire document.

Capture a full webpage in Microsoft Edge

  1. Open the webpage in Edge.
  2. Press Ctrl+Shift+S, or open the browser menu and choose Screenshot. You can also use the page context menu where available.
  3. Select Capture full page.
  4. Review the result, annotate it if needed, then copy or save it.

Edge describes this feature as capturing an entire webpage in one screenshot, including content extending beyond the screen. See Microsoft’s Web capture documentation.

Capture a full webpage in Firefox

  1. Open the webpage.
  2. Right-click an empty area and choose Take Screenshot. On Windows/Linux use Ctrl+Shift+S; on macOS use Command+Shift+S.
  3. Select Save full page.
  4. Save or copy the resulting image.

Firefox also provides visible-area and selected-region modes. Mozilla’s Take screenshots in Firefox guide describes all three choices.

Enable Firefox’s Developer Tools full-page button

Firefox Developer Tools can expose an optional full-page screenshot button in the toolbox settings. Open Developer Tools, open its settings, enable the screenshot button, and use it when you need a repeatable developer workflow. Firefox’s source documentation covers this option.

Capture a whole webpage on iPhone Safari

  1. Open the webpage in Safari.
  2. Take a screenshot using your iPhone’s button combination.
  3. Tap the screenshot preview before it disappears.
  4. At the top of the editor, select Full Page.
  5. Use the page preview to crop if necessary, then save or share the result.

Safari’s Full Page mode captures beyond the edge of the screen. Apple’s iPhone screenshot guide explains the workflow and supported save options.

Capture a scrolling screenshot on Android

  1. Open the webpage in a browser or supported app.
  2. Take a normal screenshot using your phone’s screenshot shortcut.
  3. Immediately look for Scroll capture, Capture more, Extended screenshot, or a similar button.
  4. Tap the control repeatedly or drag the crop handles until the required content is included.
  5. Save or share the final image.

The exact label and supported apps depend on the phone manufacturer, Android version, and app. Samsung commonly calls the feature Scroll capture. If no extended option appears, the current app or device may not support scrolling screenshots.

Prepare dynamic pages before capturing

A browser can only capture content that has rendered. Modern pages often load images, text, charts, and embedded components as you approach them.

  1. Wait until the initial page load finishes.
  2. Scroll from top to bottom once at a steady pace.
  3. Wait for images, charts, and web fonts to appear.
  4. Return to the top and run the full-page capture.
  5. Inspect the saved image for missing sections, repeated headers, and empty image boxes.

Common dynamic-page problems

Symptom Likely cause What to try
Images are blank Lazy loading has not been triggered Scroll through the page once, wait, then capture again
A cookie banner appears repeatedly The banner is sticky or recreated during stitching Accept or dismiss it before capture; hide it with a browser rule if appropriate
Sticky navigation is duplicated The browser captures the fixed header in multiple viewport segments Temporarily disable the sticky element or use an automated element-aware capture
The image is extremely tall The page uses infinite scroll or continuously appends content Stop loading more items, capture a defined region, or record a short scrolling video
Animated content changes between sections Carousels, ads, or live data update during capture Pause animations, wait for a stable state, or capture a print/PDF representation

When a PDF is better than one tall image

Use a PDF when the result will be printed, searched, or shared as a document. A single PNG is easier to paste into an issue or design review, but it can become difficult to view when the page is very long. Browser print dialogs often provide page breaks, paper-size controls, and selectable text.

For a long app workflow, a short screen recording while scrolling may communicate the sequence more clearly than one tall image. This is especially true for feeds, dashboards, and pages whose content changes continuously.

Automate whole-page screenshots

Built-in browser commands are ideal for one-off captures. Automation is useful when you need the same viewport, wait condition, cookies, authentication, or output format repeatedly. A typical automated flow opens a URL, waits for the page to stabilize, scrolls or triggers lazy loading, and saves a full-page image or PDF.

Automation checklist

  • Choose a fixed viewport width and height.
  • Set the device pixel ratio when comparing visual changes.
  • Wait for a selector, a delay, or network idle instead of guessing when content is ready.
  • Provide authentication headers or cookies for private pages.
  • Disable animations when pixel-level consistency matters.
  • Set a maximum page height for unbounded feeds.
  • Record the URL, timestamp, viewport, and capture result with each artifact.

Or skip the browser setup

ScreenshotNeo turns a URL into a PNG, JPEG, WebP, or PDF with one GET request. Before capture, it accepts cookie and consent banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets. Each cleanup step can be turned off.

Only clean shots are billed. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing, and the response reports the result with X-Page-Verdict and X-Billed headers. ScreenshotNeo also provides an MCP server with take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients.

cURL

curl -G "https://api.screenshotneo.com/v1/shot" \
  -d access_key=YOUR_API_KEY \
  --data-urlencode url=https://stripe.com \
  -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"},
    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'
});

const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot failed: ${res.status}`);
const image = Buffer.from(await res.arrayBuffer());
await import('node:fs/promises').then(fs => fs.writeFile('shot.webp', image));

See the ScreenshotNeo documentation for request options. Relevant controls include full-page capture with lazy images loaded, CSS-selector element capture, dark mode, device presets or custom viewports, retina scale, custom CSS and JavaScript, click actions, selector waits, delays, network-idle waits, ad and tracker blocking, custom headers and cookies, user agents, authorization, timezone and geolocation, transparent backgrounds, image resizing, caching with a chosen TTL, signed image links, asynchronous jobs with signed webhooks, bulk capture of up to 100 URLs per call, usage data, and PDF paper-size, margin, landscape, and page-range controls.

ScreenshotNeo has a free plan with 1,000 screenshots per month and no card. Paid plans start at $5 for 3,000 shots; yearly billing gives two months free, and every feature is available on every plan. Create a free ScreenshotNeo account.

Troubleshooting checklist

The capture includes only the visible viewport

You selected the normal screenshot command instead of the full-page command. In Chrome, use Capture a full size screenshot; in Edge, use Capture full page; in Firefox, use Save full page.

The bottom of the page is missing

The page may load content only after scrolling, or the capture may have timed out. Scroll through the page first, wait for network activity to settle, and capture again. For automated jobs, increase the timeout and use a selector or network-idle wait.

The result contains repeated or missing fixed elements

Sticky headers, chat buttons, and floating consent controls can be rendered in every stitched segment. Dismiss or hide them before capture, or use a capture service that can remove known overlays and hide selectors.

The page is blank or shows a bot-check screen

The site may require JavaScript, block automated browsers, or present a CAPTCHA. Open the page interactively and complete the check where permitted. For production automation, use the site’s supported access method and inspect the capture verdict rather than treating a blank image as success.

The screenshot is too large to share

Crop to the relevant region, reduce the image scale, or export a PDF. Automated tools can resize the output while preserving the chosen viewport and page capture.

Performance, reliability, and cost considerations

  • Page length: Rendering and stitching take longer as the document grows. Set practical limits for unbounded pages.
  • Network conditions: Third-party ads, analytics, fonts, and embeds can delay completion. Blocking unnecessary requests can improve repeatability.
  • Consistency: Use the same viewport, device scale, timezone, locale, cookies, and user agent for comparable captures.
  • Retries: Retry transient network failures with a limit and record the final status. Do not treat an HTTP response alone as proof that the page rendered correctly.
  • Caching: Cache stable pages when freshness is not required. Use a short TTL for frequently changing content.
  • Billing: With ScreenshotNeo, clean shots are billed while bot checks, blank pages, timeouts, failed loads, and cache hits are not billed. The response headers identify the verdict and billing result.

FAQ

Can I capture a full webpage without installing an extension?

Yes. Chrome, Edge, Firefox, iPhone Safari, and many Android devices include built-in full-page or scrolling capture controls.

Why does my full-page screenshot look different from what I saw while scrolling?

Lazy-loaded content, animations, sticky elements, responsive breakpoints, and live data can change during capture. Scroll once to warm the page, pause moving content, and use stable capture settings.

Can a full-page screenshot include content behind a login?

Only if the browser session is authenticated. For repeatable automation, provide the required cookies or authorization headers through a tool that supports them.

Should I use PNG, JPEG, WebP, or PDF?

PNG is useful for sharp interface details, JPEG for smaller photographic images, WebP for efficient web delivery, and PDF for searchable or printable documents.

What is the simplest automated option?

Use ScreenshotNeo’s URL API when you need repeatable full-page captures without managing a browser. It supports image and PDF output, waits, cleanup controls, authentication options, caching, and asynchronous jobs.