Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Chrome can capture an HTML document as a PNG directly from DevTools. Use Capture screenshot for the visible viewport, Capture a full size screenshot for the entire rendered page, or Capture node screenshot for one DOM element. For repeatable builds, use the Chrome DevTools Protocol or headless Chrome. This guide explains each workflow, its limits, automation options, and a browser-free alternative.

Choose the right capture method

Need Best method Result
Only what is visible DevTools Capture screenshot The current viewport at its current dimensions
The complete page DevTools Capture a full size screenshot The rendered page, including content outside the viewport
One card, section, or component Elements panel, Capture node screenshot A screenshot of one selected DOM node
Tests, CI, or an application Chrome DevTools Protocol Page.captureScreenshot Image bytes returned to your program
A shell command that writes a file Headless Chrome --screenshot screenshot.png in the working directory

The correct choice depends on whether you need the viewport, the whole document, a single element, or a repeatable automated artifact.

Capture the visible HTML viewport in Chrome

  1. Open the HTML document in Chrome and wait until it has reached the rendered state you want to preserve. If content is still loading, the screenshot can reflect that incomplete state.
  2. Open DevTools with F12, Ctrl+Shift+I on Windows/Linux, or ⌘+Option+I on macOS.
  3. Open the DevTools command menu. You can use Ctrl+Shift+P on Windows/Linux or ⌘+Shift+P on macOS.
  4. Type screenshot and select Capture screenshot.
  5. Chrome saves the image to its normal Downloads location.

This captures the page as displayed in the current viewport. To control what is visible first, resize the browser or enable the device toolbar and choose the viewport dimensions you need. A viewport capture is useful for reproducing a user-facing screen, but it does not include content below the fold.

Capture a full-page screenshot

  1. Load the document and allow its layout, fonts, images, and scripts to settle.
  2. Open DevTools and the command menu.
  3. Search for screenshot.
  4. Select Capture a full size screenshot.
  5. Open the downloaded image and check the top, bottom, lazy-loaded sections, and any fixed elements.

Chrome describes this command as capturing the whole page, including content that is not currently visible in the viewport. The output is still dependent on the page: unusually long documents, sticky headers, animations, lazy loading, and cross-origin embedded resources can produce results that need visual checking. There is no universal limit matrix that guarantees identical behavior for every site.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Make the page ready before capturing

  • Scroll through pages that load images only when they approach the viewport, or otherwise trigger the loading behavior your page requires.
  • Pause animations and carousels if a deterministic frame matters.
  • Dismiss overlays that are part of your local test state.
  • Confirm that web fonts and remote images have finished loading.
  • Use the device toolbar when a particular viewport width or device profile is part of the requirement.

Capture one HTML element

Chrome can export an individual DOM node rather than the entire page.

#1 Best Overall
Samsung 14" Galaxy Chromebook Go Laptop PC Computer, Intel Celeron N4500 Processor, 4GB RAM, 64GB Storage, ChromeOS, XE340XDA-KA2US, Student Laptop, Silver
  • SLIM. LIGHTWEIGHT. READY TO GO: The all-new slim design is perfect for busy lives on the go.
  • SKILLFULLY DESIGNED. MILITARY TOUGH: Built with premium craftsmanship to withstand the occasional drop or ding.
  • ALL-DAY, ALL-IN-ONE CHARGING: Power through your school day – and beyond – with a long-lasting 12-hour battery.¹
  • 3X FASTER THAN THE PREVIOUS GENERATION OF WIFI: Crush your schoolwork in record time with Wi-Fi that’s three times faster than the previous generation of Wi-Fi.
  • YOUR PHONE AND CHROMEBOOK WORK BETTER TOGETHER: Easily transfer files between devices, and control your phone right from your Chromebook.
  1. Open DevTools and select the Elements panel.
  2. Use the element picker, or expand the DOM tree, and select the component you want.
  3. Right-click the target node.
  4. Choose Capture node screenshot.
  5. Chrome saves the node image to Downloads.

This is appropriate for a product card, chart, article section, or other component. The selected node must have a rendered size. If it is hidden, clipped, collapsed, or dependent on hover or focus, reproduce the required state before opening the context menu. Chrome’s DevTools documentation explicitly supports screenshotting an individual node in the DOM tree with Capture node screenshot.

Automate capture with the Chrome DevTools Protocol

For a test suite, build pipeline, or service, use the DevTools Protocol instead of a person operating the menu. The Page.captureScreenshot method returns base64-encoded image data. It supports png, jpeg, and webp, and includes captureBeyondViewport for captures beyond the current viewport.

Protocol request shape

{"id":1,"method":"Page.captureScreenshot","params":{"format":"png","captureBeyondViewport":true}}

Your client must connect to a running Chrome debugging endpoint, navigate to the document, wait for the desired rendered state, send this command, decode the returned base64 value, and write the bytes to disk. The protocol gives you repeatability, but you still need to define readiness: a navigation event alone may occur before application data, fonts, or lazy images are ready.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Choosing a format

  • PNG: lossless and usually the safest choice for text, diagrams, and UI screenshots.
  • JPEG: smaller for photographic content, but compression can soften text and introduce artifacts.
  • WebP: supports a compact modern output when your downstream system accepts it.

Use headless Chrome from a shell

Headless Chrome includes a --screenshot flag. This documented example writes screenshot.png to the current working directory:

Rank #2
HP Chromebook 14 Laptop, Intel Celeron N4120, 4 GB RAM, 64 GB eMMC, 14" HD Display, Chrome OS, Thin Design, 4K Graphics, Long Battery Life, Ash Gray Keyboard (14a-na0226nr, 2022, Mineral Silver)
  • FOR HOME, WORK, & SCHOOL – With an Intel processor, 14-inch display, custom-tuned stereo speakers, and long battery life, this Chromebook laptop lets you knock out any assignment or binge-watch your favorite shows..Voltage:5.0 volts
  • HD DISPLAY, PORTABLE DESIGN – See every bit of detail on this micro-edge, anti-glare, 14-inch HD (1366 x 768) display (1); easily take this thin and lightweight laptop PC from room to room, on trips, or in a backpack.
  • ALL-DAY PERFORMANCE – Reliably tackle all your assignments at once with the quad-core, Intel Celeron N4120—the perfect processor for performance, power consumption, and value (2).
  • 4K READY – Smoothly stream 4K content and play your favorite next-gen games with Intel UHD Graphics 600 (3) (4).
  • MEMORY AND STORAGE – Enjoy a boost to your system’s performance with 4 GB of RAM while saving more of your favorite memories with 64 GB of reliable flash-based eMMC storage (5).
chrome --headless --screenshot https://example.com

Set the capture dimensions with --window-size:

chrome --headless --window-size=1280,1696 --screenshot https://example.com

Replace chrome with the executable name or full path used by your operating system. The command is convenient for scripts, but it does not by itself guarantee that application data, lazy content, or web fonts are ready. For a controlled workflow, pair headless Chrome with a readiness strategy through the DevTools Protocol or an automation framework.

Common problems and fixes

The screenshot stops at the viewport

You selected Capture screenshot, which intentionally captures only the visible area. Run the command again and choose Capture a full size screenshot, or use captureBeyondViewport in the protocol.

Images or text are missing

The capture happened before resources finished loading, or lazy loading was never triggered. Wait for the network and layout to settle, scroll through the document when necessary, and verify the downloaded file rather than assuming the page was complete.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A sticky header appears repeatedly or covers content

Fixed and sticky positioning is page-dependent during full-page capture. Inspect the resulting image. If the header is not wanted, temporarily adjust the page’s CSS in DevTools or hide the relevant selector before capturing; if it is required, accept that the output represents the page’s rendered behavior.

The element command is unavailable

Make sure you right-clicked a selected node in the Elements panel, not a source file or the page itself. The node also needs a rendered box; hidden or detached nodes cannot produce a useful image.

The headless command cannot find Chrome

Use the installed executable’s full path, confirm that Chrome is installed, and check that the command-line flags are being passed to Chrome rather than to a wrapper script.

A cross-origin frame or image is blank

Embedded resources can have page- and policy-dependent behavior. Confirm that the resource is available in the normal browser view, inspect console and network errors, and test the final image. Do not treat a successful navigation as proof that every embedded resource was captured.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The output changes between runs

Animations, rotating content, time-dependent data, responsive breakpoints, fonts, network timing, and personalization can all alter pixels. Fix the viewport, wait for a defined ready condition, disable motion where appropriate, and use the same browser environment for comparisons.

Performance, reliability, and operational notes

  • Long pages: image dimensions and memory use grow with page length. A full-page image can be much larger than a viewport image; check that your image pipeline accepts the resulting dimensions.
  • Readiness: define whether “ready” means navigation complete, a selector visible, network idle, or a particular application state. Waiting longer is not always sufficient if the page continues polling.
  • Reproducibility: record viewport size, device scale, browser version, URL, authentication state, and any injected CSS or JavaScript.
  • Security: treat captured pages and debugging endpoints as sensitive when they contain private data, cookies, tokens, or customer information.
  • Validation: inspect representative outputs, especially the bottom of long pages, dynamic widgets, and areas loaded after scrolling.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Or skip the browser setup

ScreenshotNeo is a website screenshot API and MCP server for developers. One GET request returns a PNG, JPEG, WebP, or PDF. It accepts cookie and consent banners like a visitor, then removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each step can be turned off. Only clean shots are billed: bot checks or 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. Its MCP server exposes take_screenshot, get_page_info, and capture_pdf for Claude, Cursor, and other MCP clients.

See the complete parameter reference in the ScreenshotNeo documentation. The same endpoint also supports full-page capture with lazy images loaded, CSS-selector element capture, dark mode, 12 device presets or a custom viewport, retina scale, PDF paper settings and page ranges, HTML/CSS to image, custom CSS and JavaScript, clicks, selector or delay waits, network-idle waits, request and resource blocking, headers, cookies, user agents, Authorization, timezone, geolocation, transparent backgrounds, resizing, configurable-TTL caching, signed image links, asynchronous jobs with signed webhooks, bulk capture for up to 100 URLs per call, a usage API, and an OpenAPI specification.

Rank #4
HP 14" HD Chromebook Laptop for Students, Intel Quad-Core N4120(> N4020), 4GB RAM, 64GB eMMC, WiFi, Webcam, HDMI, USB-A&C, 14 Hours Battery Life, Zoom, Chrome OS, CUE Accessories
  • Intel Celeron N4120: 4 Cores & Threads, 1.1GHz Base Clock, Up to 2.6GHz Boost Clock, 4MB Cache, Intel UHD Graphics 600. The perfect combination of performance, power consumption, and value helps your device handle multitasking smoothly and reliably with four processing cores to divide up the work.
  • 14" HD Display: 14.0-inch diagonal, HD (1366 x 768), micro-edge, anti-glare. See your digital world in a whole new way. Enjoy movies and photos with the great image quality and high-definition detail of 1 million pixels.
  • Memory & Storage: 4 GB LPDDR4x & 64 GB eMMC Storage. Adequate high-bandwidth RAM to smoothly run multiple applications and browser tabs all at once. An embedded multimedia card provides reliable flash-based storage.
  • Ports:2 x USB 3.0 Type-A,1 x USB 3.0 Type-C,1 x HDMI,1 x Headphone Jack
  • Chrome OS: Chromebook is a computer for the way the modern world works, with thousands of apps. Enjoy the seamless simplicity that comes with Google Chrome and Android apps, all integrated into one laptop. It’s fast, simple, and secure.

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}`);

Every feature is available on every plan. The Free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 shots. Yearly billing provides two months free. An MCP server lets AI agents take screenshots without your maintaining a browser setup. Sign up free to get the 1,000 monthly screenshots with no card.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

ScreenshotNeo plans

Plan Price Included shots
Free $0 1,000 per month; no card
Starter $5 3,000
Growth $15 15,000
Pro $39 60,000
Scale $99 250,000
Business $249 1,000,000

Frequently Asked Questions

Can Chrome save a screenshot as a JPEG or WebP?

DevTools’ menu workflow is oriented around a downloaded screenshot, while the DevTools Protocol explicitly supports PNG, JPEG, and WebP through the format parameter.

Can I capture an HTML file opened from my computer?

Yes. Open the file in Chrome and use the same DevTools commands. External fonts, images, scripts, and embedded frames still depend on whether they load successfully in that local-page context.

What is the difference between full-size and node capture?

Full-size capture targets the complete rendered document. Node capture targets one selected DOM element and is useful when the page contains unrelated content.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.