How to take a full-page screenshot in Chromium
Capture a whole page in Chromium with DevTools, understand when node and command-line captures differ, and automate screenshots with ScreenshotNeo.
Short answer: Chromium DevTools supports full-page screenshots. Use its full-page capture capability when you need the whole document as an image. Use Capture node screenshot when you only need one element, even if it extends below the visible viewport. Chromium Headless offers a command-line screenshot flag, but the documented example does not establish that it captures the entire document.
Choose the capture that matches your goal
| Need | Use | What to know |
|---|---|---|
| The whole page as an image | DevTools full-page screenshot | Documented capability; exact controls can vary by Chromium build. |
| One long component or element | Elements panel → right-click the node → Capture node screenshot | Captures the full node, including content below the fold. |
| Command-line image capture | Headless Chromium --screenshot |
Useful for automation; the documented basic flag does not guarantee full-document capture. |
| A paginated document | Headless Chromium --print-to-pdf |
Produces a PDF, not a raster screenshot. |
Capture the full page in DevTools
Chrome for Developers lists full-page screenshot capture as a DevTools capability. Its available text summary does not specify the current click-by-click command-menu sequence or a keyboard shortcut. Those controls may differ by installed Chromium version, so use the DevTools screenshot controls in your build and verify that the selected mode is full-page before saving.
- Open the page you want to capture in Chromium.
- Open DevTools.
- Find the screenshot capture controls and choose the full-page option offered by your installed build.
- Save the resulting image and inspect its top, bottom, and any lazy-loaded sections.
Do not rely on an undocumented shortcut or menu label from another version. If you cannot find the full-page mode, update or consult documentation for that Chromium build, or use the node capture or automation options below when they fit.
Capture one element beyond the viewport
When the target is a specific long element rather than the entire page, use the documented node screenshot workflow:
- Open DevTools and select the Elements panel.
- Locate the element in the DOM tree.
- Right-click it and choose Capture node screenshot.
This captures the full node, including content below the viewport. It is useful for a long article body, table, or component. It does not capture the rest of the page, and nested or clipped content may still be constrained by the page’s layout and rendering.
Use Chromium Headless from the command line
For a basic command-line screenshot, the Chromium Headless reference documents --screenshot and recommends using it with --window-size. Run this from a shell where the Chromium executable is available:
chromium --headless --window-size=1440,1000 --screenshot https://example.com
The command saves screenshot.png in the current working directory. Replace chromium with your executable name if your installation uses a different one. This basic command captures a screenshot, but the cited Headless documentation does not say it captures the full document. A tall window is not proof of full-page capture; check the output dimensions and content.
When a PDF is acceptable instead of an image, use:
chromium --headless --print-to-pdf https://example.com
This writes output.pdf. It is a print-style document output, not a full-page PNG, JPEG, or WebP screenshot.
Check the result and handle page edge cases
- Lazy-loaded images: Some sites load images only as they approach the viewport. Scroll through the page before capturing, or use an automation tool that supports loading lazy content.
- Infinite scroll: A page may have no stable end. Decide what content range you need; a capture tool cannot infer where an endlessly growing page should stop.
- Sticky headers: Full-page stitching or capture behavior can affect fixed elements. Inspect the output for repeated, overlapping, or missing headers.
- Animations and delayed content: Wait for the page to settle before capture. A transient state can leave placeholders or partially rendered elements in the image.
- Very tall documents: Large captures consume memory and may be slow or exceed browser or image dimension limits. Capture a specific node or split the content when a single image is impractical.
- Authentication and consent: The browser session must have access to the intended content. Check login state and any consent flow before capturing.
Troubleshooting
| Symptom | Likely cause | What to do |
|---|---|---|
| Only the visible viewport appears | A viewport screenshot mode or basic Headless screenshot was used. | Select the full-page DevTools mode. For CLI, do not assume --window-size expands the capture to the full document. |
| Capture node screenshot is missing page sections | The selected DOM node is not the parent of all desired content. | Select the correct containing node, or use whole-page capture. |
| Images or sections are blank | Lazy loading, delayed scripts, blocked requests, or an incomplete page load. | Scroll to trigger lazy loads, wait for content, and inspect the page before capturing. |
| Headless command cannot find Chromium | The executable is not installed or is named differently. | Install Chromium or use the correct executable path/name for your environment. |
| PDF appears instead of an image | --print-to-pdf was used. |
Use a screenshot workflow when you need raster image output. |
| Output is huge, clipped, or slow | The document is exceptionally tall or resource-heavy. | Capture a smaller element or range, reduce unnecessary page content, or use an automated capture service with suitable options. |
Performance, reliability, and cost
DevTools is convenient for occasional manual captures and has no separate screenshot-service charge. Headless Chromium is useful in scripts and CI, but you are responsible for browser installation, page readiness, retries, and output validation. A full document can take longer and use more memory than a viewport image, especially when it contains many images or scripts. For repeatable jobs, set a clear readiness condition and retain failure logs so a blank or partial result is not mistaken for success.
Or skip the browser setup
ScreenshotNeo is a website screenshot API and MCP server from ScreenshotNeo. One GET request returns an image or PDF; see the API documentation. This example captures a full-page WebP:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -d full_page=true -o shot.webp
import requests
r = requests.get(
"https://api.screenshotneo.com/v1/shot",
params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com", "full_page": "true"},
timeout=90,
)
r.raise_for_status()
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({
access_key: 'YOUR_API_KEY',
url: 'https://stripe.com',
full_page: 'true'
});
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot request failed: ${res.status}`);
await Bun.write('shot.webp', res);
ScreenshotNeo accepts cookie banners before capture and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each step can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are never billed, and response headers report the page verdict and billing status. Its MCP server gives AI agents tools for screenshots, page information, and PDF capture. The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 shots. Create a free account and get 1,000 screenshots a month with no card.
FAQ
Does a full-page screenshot include content below the fold?
Yes, that is the purpose of the full-page capture mode. Confirm the saved output includes the bottom of the document.
Can I capture just a long element?
Yes. In Elements, right-click the node and choose Capture node screenshot to capture the full node including below-the-fold content.
Is a PDF the same as a full-page screenshot?
No. Headless --print-to-pdf creates a paginated PDF document. Use an image capture feature when you need one raster image.
Does the documented Headless screenshot command guarantee a full-page image?
No. The documented --screenshot and --window-size flags describe screenshot output, but do not establish full-document capture.


