How to Screenshot a Whole Webpage with Scrolling
Capture an entire webpage beyond the viewport using Firefox, Edge, iPhone, Developer Tools, or ScreenshotNeo’s screenshot API.
A normal screenshot captures only the visible browser window. To save everything below the fold, use a browser’s full-page command: Firefox calls it Save full page, Edge calls it Capture full page, and Safari on iPhone offers Full Page after you take a screenshot. For repeatable, server-side captures, use ScreenshotNeo’s full-page screenshot API.
Choose the right method
| Need | Best option |
|---|---|
| One quick desktop capture | Firefox or Edge built-in full-page capture |
| Capture an individual page element | Firefox Developer Tools |
| Capture a Safari webpage on iPhone | iPhone’s Full Page screenshot option |
| Automated or batch captures | ScreenshotNeo |
Firefox: save the entire page
- Open the webpage in Firefox.
- Right-click an empty area and choose Take Screenshot. You can also press
Ctrl+Shift+Son Windows/Linux orCommand+Shift+Son macOS. - Select Save full page.
- Save or copy the resulting image.
Choose Save visible when you only need the current viewport. Firefox documents the full-page command in its screenshot support guide: Mozilla’s screenshot instructions.
Firefox Developer Tools: capture a page or element
- Open Developer Tools.
- Use the screenshot button in the toolbox. If it is missing, open the toolbox settings and enable it under Available Toolbox Buttons.
- Use the page screenshot command to capture the whole document.
- To capture one component, open the Inspector, right-click the element, and choose Screenshot Node.
This is useful when a full-page image is too large or when you need only a chart, article body, or card. See Firefox Developer Tools screenshot documentation.
Microsoft Edge: capture full page
- Open the webpage in Edge.
- Press
Ctrl+Shift+S, or open Web capture/Screenshot from the browser interface. - Choose Capture full page.
- Use the pen or touch tools if you need markup, then copy or save the capture.
Menu names can vary between Edge versions. Microsoft’s feature guide covers full-page capture and markup: Microsoft Web Capture.
iPhone: save a full Safari webpage
- Open the webpage in Safari.
- Take a regular screenshot.
- Tap the screenshot preview.
- Choose Full Page.
- Crop the result if you need only part of the page, then save it.
Apple documents this workflow for webpages and other supported content in its iPhone screenshot guide. The Full Page option is not guaranteed in every third-party browser or app.
Pages that load content while you scroll
Full-page capture tools must render content below the fold. A page may use lazy-loaded images, infinite scrolling, animations, consent banners, or a login wall. If content appears only after interaction, it may be absent from a browser capture. Before saving, scroll through the page once, wait for images to finish loading, and close overlays that cover content.
- Lazy images: scroll through the document so images have a chance to load.
- Infinite feeds: stop at a defined point; there may be no finite “whole page.”
- Sticky headers: repeated headers can appear in stitched captures.
- Animations: pause them when a stable frame matters.
- Private content: sign in first and avoid sharing captures containing sensitive data.
Or skip the browser setup
ScreenshotNeo captures a full webpage through one GET request, including pages with lazy-loaded images. It also accepts and removes cookie or consent banners, newsletter popups, and chat widgets before the capture. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and the response identifies the result with X-Page-Verdict and X-Billed headers.
Read the ScreenshotNeo API documentation for the available capture options.
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(`${res.status} ${res.statusText}`);
const fs = await import('node:fs/promises');
await fs.writeFile('shot.webp', Buffer.from(await res.arrayBuffer()));
ScreenshotNeo also supports custom viewports and device presets, retina scale, dark mode, CSS-selector element capture, custom CSS and JavaScript, click and wait actions, request blocking, headers, cookies, user agents, authorization, timezone, geolocation, transparent backgrounds, resizing, caching, signed links, asynchronous jobs, webhooks, bulk capture, PDF output, and a usage API.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Only the visible area is saved | The visible-area command was selected. | Choose Firefox Save full page, Edge Capture full page, or iPhone Full Page. |
| Images are missing | They are lazy-loaded below the fold. | Scroll through the page first and wait for loading to finish. |
| A cookie dialog covers the capture | The consent banner remained open. | Dismiss it manually, or use ScreenshotNeo, which handles and removes known consent platforms before capture. |
| The page never finishes | Network requests, scripts, or an infinite feed keep running. | Capture after the needed content is visible, or use a bounded element capture. |
| ScreenshotNeo returns an error | Missing credentials, an invalid URL, or an unavailable page. | Check YOUR_API_KEY, URL encoding, HTTP status, and the response verdict headers. |
| The file cannot be opened | The response is an error document rather than an image. | Check the HTTP status before writing the body and inspect the response headers. |
Performance, reliability, and cost
- Browser captures: large pages take longer and create large files. Crop to an element when a full document is unnecessary.
- Dynamic pages: wait for lazy content and stable layout before capturing.
- Repeatability: use a fixed viewport, timezone, and logged-in state when comparing captures.
- API reliability: set a client timeout, check HTTP status, and record
X-Page-VerdictandX-Billed. - Cost: ScreenshotNeo bills only clean shots. Bot checks, blank pages, timeouts, failed loads, and cache hits cost nothing. The Free plan includes 1,000 shots per month without a card; paid plans start at $5 for 3,000 shots. Yearly billing provides two months free.
FAQ
Is a scrolling screenshot the same as a full-page screenshot?
Yes. Both describe a capture that includes content beyond the current viewport instead of only the visible window.
Can I capture only one section of a long page?
Yes. Firefox Developer Tools can capture an inspected node, and ScreenshotNeo supports capture by CSS selector.
Why does a full-page image look different from the live page?
Responsive breakpoints, lazy loading, animations, personalization, and consent overlays can change what is rendered during capture.
Can I save a long webpage as a PDF?
Yes. ScreenshotNeo supports PDF output with paper size, margins, landscape mode, and page ranges.
Next step
For occasional captures, use your browser’s built-in full-page command. For scheduled, repeatable, or bulk captures, create a free ScreenshotNeo account. You get 1,000 screenshots a month with no card; paid plans start at $5 for 3,000. An MCP server also lets Claude, Cursor, and other MCP clients take screenshots through tools.


