How to Capture an Entire Web Page by Scrolling
Capture content beyond your screen with full-page tools in Firefox, Chrome, iPhone, Android, or a screenshot API.
Short answer: use your platform’s full-page capture control. Firefox offers Save full page, Chrome provides Capture a full size screenshot in DevTools, iPhone shows Full Page after a Safari screenshot, and Android 12+ commonly offers Capture more. Samsung Galaxy phones call the equivalent Scroll Capture. These tools capture content below the visible viewport; a normal screenshot does not.
Choose the right method
| Platform | Control | Typical output | Best for |
|---|---|---|---|
| Firefox desktop | Take Screenshot → Save full page | Image | A quick browser capture |
| Chrome desktop | DevTools → Capture a full size screenshot | Image | Developer workflows and precise viewport emulation |
| iPhone Safari | Screenshot preview → Full Page | PDF in Files | Saving a long page as a document |
| Android 12+ | Screenshot → Capture more | Extended image | Most scrollable apps and pages |
| Samsung Galaxy | Screenshot toolbar → Scroll Capture | Extended image | Galaxy-specific scrolling captures |
| Automation | Screenshot API | PNG, JPEG, WebP, or PDF | Repeatable captures in code or CI |
Controls vary by browser, operating-system version, device manufacturer, page, and app. A full-page image can become extremely tall. If you need pages suitable for printing or sharing as a document, choose a PDF workflow instead.
Firefox desktop: Save full page
- Open the page in Firefox.
- Right-click an empty area and choose Take Screenshot. Mozilla also documents a keyboard shortcut for opening this tool.
- Select Save full page. Choose Save visible only when you want the current viewport.
- Download or copy the result using the controls shown.
Firefox’s documented workflow is a browser screenshot tool, so it captures the page as rendered rather than producing a paginated print document. See Mozilla’s screenshot instructions for the current menu and shortcut details.
Chrome desktop: Capture a full size screenshot in DevTools
- Open the page in Chrome.
- Open DevTools with Ctrl+Shift+I on Windows/Linux or Cmd+Option+I on macOS.
- Open the device emulation controls if they are hidden, then open the DevTools command or screenshot controls.
- Choose Capture a full size screenshot.
- Save the generated image.
This is a DevTools workflow, not the ordinary camera button in Chrome’s toolbar. Chrome documents the option in its device-mode guidance: Simulate mobile devices with device mode.
When Chrome captures the wrong size
- Set the emulated viewport width and device scale before capturing.
- Reload after changing device emulation so responsive layout and fonts settle.
- Close DevTools panels that cover the page if you need an unobstructed result.
- For a document rather than one very tall image, use the browser print dialog and select “Save to PDF.”
iPhone: use Full Page in Safari
- Open the webpage in Safari.
- Take a normal screenshot with your iPhone’s button combination.
- Tap the screenshot preview before it disappears.
- Choose Full Page at the top of the editor.
- Use the page strip or crop controls to select the required content, then save or share it. Apple’s documented webpage example saves the full-page capture as a PDF to Files.
The Full Page tab follows the normal screenshot and is intended for content such as an entire Safari webpage. See Apple’s iPhone screenshot guide.
Android: Capture more
- Open the scrollable page or screen.
- Take a screenshot, commonly by pressing Power and Volume Down together.
- Tap Capture more at the bottom of the screenshot preview.
- Move the crop guides to include the content you need.
- Save the extended capture.
Google’s instructions apply to Android 12 and later on most screens that allow scrolling. Device makers can change the button names, toolbar, and supported apps, so the control may be absent. Read Google’s Android screenshot help.
Samsung Galaxy: Scroll Capture
- Open the page and take a screenshot.
- If the screenshot toolbar is not visible, enable it in the screenshot settings.
- Tap Scroll Capture in the toolbar. Continue tapping or holding the control until the required content is included.
- Save the result.
Samsung notes that available scroll length depends on the content and that Scroll Capture may not be available for every website or app. See Samsung’s screenshot and screen-recording instructions.
What full-page capture can and cannot include
- It includes: content rendered below the current viewport when the platform’s capture tool supports it.
- It may not include: content behind login prompts, blocked pages, unsupported apps, cross-origin embedded viewers, or sections that never render.
- Lazy-loaded and infinite-scroll content: official platform instructions do not guarantee that every lazy image or endlessly appended item will appear. Scroll through the page first, or use an automated capture that explicitly waits for a selector or delay.
- Image versus PDF: a full-page screenshot is one image (or an extended bitmap); an iPhone Full Page capture and browser print workflow can produce a PDF with pages.
Automate a complete-page capture with ScreenshotNeo
For repeated captures, CI jobs, scheduled archives, or pages that need cleanup before capture, ScreenshotNeo provides a GET screenshot API. Its full-page option loads lazy images, and you can also capture one element by CSS selector, set a viewport or device preset, choose PNG/JPEG/WebP or PDF, wait for a selector, delay, or network idle, and supply cookies, headers, a user agent, timezone, or geolocation. The API accepts the parameter names used by other screenshot services, which helps when switching.
See the ScreenshotNeo API documentation for the complete option list.
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(`HTTP ${res.status}`);
const bytes = Buffer.from(await res.arrayBuffer());
require('fs').writeFileSync('shot.webp', bytes);
Useful automation options
| Need | ScreenshotNeo capability |
|---|---|
| Long pages | Full-page capture with lazy images loaded |
| One component | Capture an element by CSS selector |
| Stable rendering | Wait for a selector, a delay, or network idle; run custom JavaScript |
| Clean output | Accepts cookie or consent banners and removes 60+ known consent platforms, newsletter popups, and chat widgets; each step can be disabled |
| Access-controlled pages | Custom headers, cookies, user agent, and Authorization |
| Visual variants | Dark mode, device presets, arbitrary viewport, retina scale, custom CSS, click actions, hidden selectors, timezone, and geolocation |
| Delivery | Image resizing, chosen cache TTL, signed links, asynchronous jobs with signed webhooks, bulk capture for up to 100 URLs per call, usage API, and OpenAPI specification |
Or skip the browser setup
Use the one-call API example above when you need repeatable captures. ScreenshotNeo removes cookie banners, popups, and chat widgets before the shot; bot checks, blank pages, and failed loads are never billed; and response headers identify the page verdict and whether it was billed. Its MCP server provides take_screenshot, get_page_info, and capture_pdf for Claude, Cursor, and other MCP clients. The Free plan includes 1,000 screenshots a month with no card, and paid plans start at $5 for 3,000 shots. Create a free ScreenshotNeo account.
Troubleshooting
The full-page option is missing
Confirm that you are using a supported browser or OS version and a scrollable page. Android’s Capture more is documented for Android 12+ and most scrollable screens; Samsung’s control can be unavailable for particular apps or sites. In Chrome, open DevTools because the full-size command is not the normal toolbar screenshot button.
The capture stops before the bottom
The page may use an infinite scroller, a nested scroll container, or content that appears only after interaction. Scroll the page manually first, switch to the correct scroll container, or automate a wait for a selector or network idle. Device controls can also impose a maximum image length.
Images or fonts are missing
Wait for the page to finish loading, reload after changing viewport settings, and check whether the assets require authentication or are blocked by the browser. For automation, use a selector or delay wait and provide required cookies or headers.
The result is too tall to use
Capture a key element instead of the entire document, resize the output, split the page into sections, or print to PDF when pagination is the real requirement.
ScreenshotNeo returns an unexpected result
Check the URL, credentials, response status, and the X-Page-Verdict and X-Billed headers. A bot check, blank page, timeout, failed load, or cache hit is identified in the response and is not billed as a clean shot. Add a wait condition, supply authentication headers or cookies, disable a problematic cache entry with an appropriate TTL, or use a selector for the intended region.
Performance, reliability, and cost
- Local tools: are convenient for one-off work, but results depend on the current browser, device, viewport, network, and page state.
- Large pages: need more memory and time. Full-page images are often much larger than viewport screenshots; choose WebP or JPEG when lossless PNG is unnecessary.
- Repeatability: set the same viewport, device scale, color scheme, timezone, geolocation, waits, and custom CSS for comparable captures.
- Dynamic content: wait for a meaningful selector or network idle instead of guessing with a long fixed delay.
- API cost: ScreenshotNeo bills only clean shots. Bot checks, blank pages, timeouts, failed loads, and cache hits cost nothing, and the response reports the verdict and billing status. Plans are Free (1,000 shots/month, no card), 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.
FAQ
Is a scrolling screenshot the same as a full-page screenshot?
They describe the same goal: capturing content beyond the visible viewport. “Scrolling screenshot” is common device wording, while “full-page screenshot” is common browser wording.
Can I capture a full page as a PDF?
Yes. iPhone’s Full Page flow can save a webpage capture as a PDF, and browser print dialogs can create paginated PDFs. ScreenshotNeo also supports PDF output with paper size, margins, landscape mode, and page ranges.
Why is my screenshot different from what I see while scrolling?
Responsive breakpoints, lazy loading, animations, consent dialogs, personalization, and login state can change the rendered page. Match the viewport and state, wait for content, and capture after required interactions.
How do I capture only one section?
Use a browser crop when working manually. For automation, select the element by CSS selector; ScreenshotNeo supports element capture.
Can an AI agent take these screenshots?
Yes. ScreenshotNeo includes an MCP server with take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients.


