BlogScreenshots on your device
How to Capture a Full Webpage in Chrome Without Scrolling
Capture an entire webpage in Chrome with DevTools, troubleshoot dynamic pages, and automate full-page screenshots when needed.
Fastest desktop method: open the page in Chrome, open DevTools, enable the Device Toolbar, open the device-mode More options menu, and choose Capture a full size screenshot. Chrome captures content beyond the visible viewport, so you do not need to scroll manually. The separate Capture screenshot command captures only the current viewport.
Chrome documents this workflow in its Device Mode screenshot guide. The exact menu position and keyboard shortcuts can change between Chrome releases, but the command name remains the useful thing to look for.
Capture a full webpage in Chrome
- Open the webpage you want to save in desktop Chrome.
- Open DevTools. Use More tools > Developer tools, or the DevTools shortcut for your operating system.
- Turn on the Device Toolbar by selecting its phone-and-tablet icon. This switches DevTools into device mode.
- Open the device-mode More options menu. It is the three-dot menu in the device toolbar, not the main Chrome menu.
- Select Capture a full size screenshot.
- Chrome downloads the resulting image, normally as a PNG, to your configured Downloads folder.
To capture only what is currently visible, choose Capture screenshot instead. That command is useful for a viewport image, but it does not include the rest of a long document.
When the command is missing
Make sure DevTools is open and the Device Toolbar is enabled. The full-size command appears in the device-mode menu, not in the ordinary page context menu. If your Chrome version uses slightly different labels, look for a menu item containing full size or screenshot.
What Chrome captures, and what it cannot guarantee
A full-size capture uses the page rendered by Chrome and extends the image beyond the current viewport. It is a good fit for documentation pages, marketing pages, articles, and other content that already exists in the document.
It is not a guarantee that every live interface will appear exactly as a human scrolling through it would see it. Virtualized lists and infinite-scroll feeds may create or remove DOM content as you scroll. If content is only requested after interaction, it may not exist when the capture is made. Inspect the resulting image for missing sections.
Very long pages may be scaled into one image. The result can be technically complete but difficult to read at normal zoom. For a readable deliverable, capture a selected section, export a PDF, or split the page into several images.
Pages that commonly need extra care
- Infinite scroll: there may be no finite “entire page.” Scroll until the feed stops loading, then capture, or save sections separately.
- Virtualized tables and feeds: rows outside the viewport can be removed from the DOM, so they may not appear in a single DOM-based image.
- Lazy-loaded images: images may be blank until they approach the viewport. Check the output and allow the page to finish loading before capture.
- Animations and video: the screenshot records one instant. Pause motion or wait for the desired state.
- Cookie dialogs and chat widgets: dismiss or hide them before capture if they cover content.
- Authenticated pages: capture only while the correct account and session are active, and treat the downloaded image as sensitive data.
Desktop workflow checklist
- Wait for the page title, main content, and images to finish loading.
- Dismiss consent dialogs, login prompts, and overlays that obscure the page.
- Decide whether you need the full document or only the current viewport.
- Use Device Toolbar before opening the device-mode menu.
- After download, inspect the top, middle, and bottom of the image for missing content.
- Keep the original URL and capture time with the file when the screenshot is evidence or documentation.
Android scrolling screenshots
Desktop DevTools is different from a scrolling screenshot on a phone. Google’s Android Help documentation says Android 12 and later support scrolling screenshots on most screens that allow scrolling.
- Open the page or app on the Android device.
- Take a normal screenshot using the device’s screenshot button combination.
- Tap Capture more.
- Use the crop guides to include the additional content, then save.
Manufacturers can change the button labels and controls. If Capture more is unavailable, that screen may not support scrolling capture, or the phone may use a different implementation.
Optional Chrome extensions
An extension can add a toolbar button or keyboard shortcut for repeated captures. FullPageShot’s Chrome Web Store listing describes a one-click full-page PNG workflow and says it requests the debugger and downloads permissions. GoFullPage is another listed option whose changelog documents fixes for long-page and site-specific capture behavior.
These are convenience options, not a universal fix for dynamic pages. Review the current store listing, permissions, update history, and privacy statement before installing an extension. An extension that captures a page needs access to page content, so use one that fits your security requirements.
Automating a full-page capture with Chrome DevTools Protocol
If you need repeatable captures in a build job, use a browser automation library that drives Chrome DevTools Protocol. The following Node.js example uses Playwright. It opens a URL, waits for the page to settle, and writes a full-page PNG.
import { chromium } from 'playwright';
const browser = await chromium.launch({ headless: true });
const page = await browser.newPage({ viewport: { width: 1440, height: 900 }, deviceScaleFactor: 1 });
await page.goto('https://example.com', { waitUntil: 'networkidle' });
await page.screenshot({ path: 'full-page.png', fullPage: true });
await browser.close();
Install Playwright with npm install playwright. For pages with lazy content, wait for a known selector or scroll in controlled steps before taking the screenshot. A network-idle event alone does not prove that an infinite feed is complete.
Capture one element instead of the whole document
const article = page.locator('main article');
await article.screenshot({ path: 'article.png' });
Element capture is often more readable than shrinking a very long document into one image.
Or skip the browser setup
ScreenshotNeo provides a website screenshot API when you need a repeatable request instead of local DevTools. Its API accepts one GET request and returns a PNG, JPEG, WebP, or PDF. 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://example.com -o shot.webp
Python
import requests
r = requests.get(
"https://api.screenshotneo.com/v1/shot",
params={"access_key": "YOUR_API_KEY", "url": "https://example.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://example.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const buffer = Buffer.from(await res.arrayBuffer());
await import('node:fs/promises').then(fs => fs.writeFile('shot.webp', buffer));
ScreenshotNeo can load lazy images for full-page captures, capture a CSS-selected element, set a viewport or device preset, use retina scale, apply dark mode, wait for a selector, delay, or network idle, and run custom CSS or JavaScript. You can also hide selectors, click an element before capture, block ads, trackers, requests, or resource types, provide headers, cookies, a user agent, or Authorization, and set timezone or geolocation. The API supports image resizing, transparent backgrounds, cache TTLs, signed links, asynchronous jobs with signed webhooks, bulk capture for up to 100 URLs per call, PDF options, HTML/CSS-to-image, and a usage API.
Before capture, ScreenshotNeo accepts cookie and consent banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each cleanup step can be disabled. Bot checks and CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed. The response identifies the result with X-Page-Verdict and X-Billed headers. An MCP server provides take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients.
Free usage includes 1,000 screenshots per month with 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 to get started.
Screenshot reliability, performance, and cost
Local Chrome
- Cost: there is no API charge, but the capture uses your computer’s CPU, memory, disk, and network.
- Performance: shorter pages and cached assets finish faster. Very tall pages require more memory and can produce large files.
- Reliability: results depend on your Chrome profile, login state, extensions, network, viewport, and page timing.
- Privacy: the image stays in your local Downloads folder unless another tool or sync service uploads it.
Automation or ScreenshotNeo
- Wait for a selector or a defined page state instead of using an arbitrary short delay.
- Set a fixed viewport and device scale when comparing screenshots over time.
- Retry transient navigation failures, but inspect the final image and response status.
- Use caching with a chosen TTL for repeated, unchanged URLs.
- For large batches, use ScreenshotNeo’s bulk endpoint and monitor usage through its usage API.
- Remember that only clean ScreenshotNeo captures are billed; failed loads, blank pages, bot checks, timeouts, and cache hits are not.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| Only the visible viewport is saved | The normal screenshot command was selected. | Enable Device Toolbar, open its More options menu, and choose Capture a full size screenshot. |
| The full-size option is not visible | DevTools is open without device mode, or the wrong three-dot menu is open. | Turn on the phone-and-tablet Device Toolbar, then open the device-mode menu. |
| Sections are missing | The page uses virtualization, infinite scroll, or interaction-triggered loading. | Load the content first, capture known sections separately, or use automation that scrolls in controlled steps. |
| Images are blank | Lazy loading has not completed. | Wait for the images or a stable selector, scroll through the page once, then capture again. |
| The result is unreadably tall | The entire page was scaled into one image. | Capture an element or section, use a PDF, or split the page into multiple images. |
| A popup covers the page | A consent, newsletter, or chat overlay remains open. | Dismiss it manually, hide the selector in automation, or use ScreenshotNeo’s cleanup options. |
| The Android Capture more button is absent | The screen does not support scrolling screenshots, or the manufacturer uses another control. | Check the device documentation and try the built-in scrolling screenshot control for that model. |
| ScreenshotNeo returns a non-clean result | The page may be blocked by a bot check, blank, timed out, or failed to load. | Inspect X-Page-Verdict and X-Billed, then adjust headers, cookies, user agent, waits, or blocking rules. |
FAQ
How do I take a full-page screenshot in Chrome without scrolling?
Use DevTools Device Toolbar, open the device-mode More options menu, and select Capture a full size screenshot.
Does Chrome’s full-size screenshot include content below the fold?
Yes. The command is designed to capture the full page, including content outside the current viewport.
Can I capture a page that loads forever?
There may be no finite page to capture. Infinite-scroll and virtualized interfaces need a stopping rule or separate section captures.
Is an extension required?
No. Desktop Chrome includes the DevTools command. Extensions are optional for a toolbar button or shortcut workflow.
What is the best approach for scheduled screenshots?
Use browser automation for full control over sessions and page actions, or use ScreenshotNeo for an API request, cleanup of common overlays, response verdict headers, batching, caching, PDFs, and MCP access.


