How to Take a Screenshot of a Whole Page in Google Chrome
Capture an entire webpage in Chrome with DevTools, troubleshoot missing content, and automate reliable full-page screenshots.
Use Chrome DevTools’ built-in command: open DevTools, open the Device Toolbar, open More options, then choose Capture a full size screenshot. This captures the page beyond the visible viewport. The similarly named Capture screenshot command captures only what is currently visible. Chrome documents both commands in the Device Toolbar screenshot menu.
Capture a whole webpage in Chrome
- Open the webpage in Google Chrome on a desktop computer.
- Open Chrome DevTools for that page.
- Open the Device Toolbar in DevTools.
- Open the Device Toolbar’s More options menu.
- Select Capture a full size screenshot.
- Find the downloaded image in Chrome’s normal download location.
Chrome creates one image containing content outside the current viewport. Before sharing or publishing it, inspect the result for missing sections, repeated elements, clipped sticky headers, and content that loaded only after scrolling. See the Chrome DevTools device-mode documentation for the current menu location and related capture commands.
Full-size capture versus a normal screenshot
| Command | What it captures | Use it when |
|---|---|---|
| Capture screenshot | The visible viewport | You need the current screen or a single view |
| Capture a full size screenshot | The full page, including content outside the viewport | You need a complete article, landing page, report, or documentation page |
If your image contains only the area currently on screen, you selected the viewport command. Open the Device Toolbar’s More options menu again and select the full-size command.
Prepare the page before capturing
A full-page screenshot records the rendered page at capture time. Preparation makes the result more predictable.
- Wait for the page to finish loading. Check that fonts, images, charts, and other important content have appeared.
- Close obstructing UI. Dismiss cookie notices, newsletter dialogs, chat launchers, and account prompts when possible.
- Choose a stable viewport. Device Toolbar settings affect responsive layout, line wrapping, navigation menus, and image sizes.
- Stop motion when accuracy matters. Pause videos, carousels, rotating banners, and animations if the page allows it.
- Scroll through long pages first. Some sites load images or sections only after they approach the viewport.
- Check authentication and permissions. Make sure the page is showing the intended signed-in state and that browser prompts are not covering content.
Why content can be missing or repeated
Full-page capture works from the page Chrome has rendered. A page that looks complete at the top may still use lazy loading, virtualized lists, infinite scrolling, or client-side navigation.
Lazy-loaded images
Images may load only when they approach the viewport. Scroll through the page before capturing and wait for them to appear. If the site never renders them outside a scrolling region, Chrome may not include them in the final image.
Virtualized and infinite-scroll content
Feeds and tables sometimes keep only nearby rows in the DOM while replacing earlier rows as you scroll. A full-page command cannot reliably capture items the page does not keep rendered at the same time. Infinite-scroll pages also have no fixed end, so decide where the capture should stop and use a dedicated export or print view when available.
Sticky headers and fixed widgets
Elements positioned with position: fixed or position: sticky can appear repeatedly or overlap content in a stitched full-page image. Close floating widgets and compare the final image with the page before relying on it.
Nested scroll containers
If the content is inside a panel with its own scrollbar, the browser page may be short even though the panel is long. Scroll the panel itself, use the application’s export function, or capture the panel with a tool that supports element-level screenshots.
Quality checklist
- Does the image include the header, main content, footer, and intended sidebars?
- Are images, fonts, icons, and charts present?
- Did a cookie banner, chat widget, or modal cover important content?
- Are any sections duplicated at stitch boundaries?
- Did an animation or rotating advertisement change during capture?
- Is the output readable at its actual pixel dimensions?
- Does the image contain private or authenticated information that should be removed?
Common problems and fixes
| Problem | Likely cause | Fix |
|---|---|---|
| Only the visible area was saved | The viewport command was selected | Use Device Toolbar → More options → Capture a full size screenshot. |
| The bottom of the page is blank | Content had not loaded, or it is lazy-loaded | Wait, scroll through the page, then capture again. |
| Rows or cards are missing | The page uses virtualization or infinite scrolling | Use the site’s export/print view or a capture service that renders the required state. |
| A cookie notice covers the page | The consent dialog is still open | Accept or dismiss it before capture, subject to your privacy requirements. |
| A chat bubble appears on every section | A fixed widget is rendered above the page | Close it, hide it with the site’s controls, or use custom CSS in an automated capture workflow. |
| The layout is unexpectedly narrow or wide | Device Toolbar viewport or device preset changed responsive breakpoints | Select the intended viewport dimensions and verify the page before capturing. |
| Text or images look clipped | Sticky elements, transforms, or unusual overflow rules | Try the page’s print view, remove obstructing UI, or capture the relevant element separately. |
| The downloaded file is hard to find | Chrome used its configured download directory | Open Chrome’s downloads page and use the file’s “Show in folder” action. |
Extensions: when they help and what to check
You do not need an extension for a basic one-off capture. A Chrome Web Store extension can add a toolbar button, shortcut, annotation, or export workflow. GoFullPage and FullPageShot are examples listed in the Chrome Web Store; their listings describe their own features and update histories, not independent performance tests.
Before installing one, review:
- Permission scope and whether page contents leave the browser
- Support for full-page, viewport, and selected-element capture
- Behavior on lazy-loaded, virtualized, and infinite-scroll pages
- PNG, JPEG, PDF, annotation, and editing options
- Maintenance history and the date of the latest update
- Privacy disclosures and handling of authenticated pages
Dynamic pages can defeat any DOM-based extension. Treat the store listing as the publisher’s disclosure and inspect the finished image.
Automating whole-page screenshots
DevTools is ideal for occasional manual work. Repeated captures need a controlled browser workflow or an API. An automated workflow should define the URL, viewport, wait condition, authentication, cookie state, output format, and failure handling. For long pages, allow enough time for fonts and lazy images to render, and record whether the result is complete before publishing it.
Or skip the browser setup
ScreenshotNeo is a website screenshot API and MCP server. One GET request returns a PNG, JPEG, WebP, or PDF. Its capture flow accepts cookie and consent banners like a visitor, then removes more than 60 known consent platforms along with newsletter popups and chat widgets before the shot. Each step can be turned off.
Only clean shots are billed. Bot checks and CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing, and 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.
See the ScreenshotNeo API documentation for the full option set, including full-page capture with lazy images loaded, CSS-selector element capture, dark mode, device presets and custom viewports, retina scale, PDF paper sizes and page ranges, custom CSS and JavaScript, pre-capture clicks, selector waits, delays, network-idle waits, request blocking, headers, cookies, user agents, Authorization, timezone, geolocation, transparent backgrounds, resizing, TTL-based caching, signed image links, asynchronous jobs with signed webhooks, bulk capture of up to 100 URLs per call, usage data, and the OpenAPI specification.
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)
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}`);
Replace the target URL with the page you need and keep your access key out of client-side code and public repositories. For repeated jobs, use caching with a TTL you choose, asynchronous jobs and signed webhooks, or bulk capture when the same workflow covers many URLs. The Free plan includes 1,000 shots per month without a card. Starter is $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 available on every plan.
Cookie banners, popups, and chat widgets are removed before the shot; bot checks, blank pages, and failed loads are never billed; an MCP server lets AI agents take screenshots; and 1,000 screenshots a month are free with no card. Create a free ScreenshotNeo account.
Performance, reliability, and cost notes
- Manual capture: DevTools has no service charge, but your time and local browser resources limit throughput.
- Long pages: More rendered content means larger images and longer capture times. Wait for network activity and lazy content before judging a failure.
- Repeatability: Keep viewport, device scale, timezone, geolocation, cookies, user agent, and wait conditions consistent when comparing screenshots.
- Privacy: Avoid sending credentials or private URLs to tools that do not explain their data handling. Use a dedicated test account for authenticated captures where possible.
- API cost: ScreenshotNeo bills only clean shots; cache hits and listed failure states are not billed. Select a plan based on successful captures, and use TTL caching for unchanged pages.
FAQ
Can Chrome capture a whole page without an extension?
Yes. Chrome DevTools includes Capture a full size screenshot in the Device Toolbar’s More options menu.
Why does Chrome capture only what I can see?
That happens when Capture screenshot is used. Choose Capture a full size screenshot for off-screen content.
Can I capture an infinite-scroll feed as one complete image?
Not reliably. Infinite-scroll and virtualized interfaces may not keep every item rendered. Use an export, print view, or a workflow designed for that application.
What format does DevTools save?
Use the downloaded image Chrome produces, then convert it if your publishing workflow requires another format. ScreenshotNeo can return PNG, JPEG, WebP, or PDF.
How do I capture the same page regularly?
Use a scripted browser or an API and fix the viewport, wait conditions, authentication state, and output settings. For an API workflow, ScreenshotNeo supports caching, asynchronous jobs, webhooks, and bulk capture.


