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

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

A white screenshot from Chrome DevTools Protocol (CDP) does not point to one universal bug. First compare a capture with and without clip, then check the clip’s device-independent-pixel coordinates, dimensions, scale, viewport and scroll state. If both captures are white, investigate page readiness and background composition—including transparent canvas pixels—before changing capture parameters.

Why a CDP screenshot can look white

Page.captureScreenshot accepts several separate capture settings. A clip selects a rectangular area; it does not guarantee that the rectangle corresponds to the coordinates you intended or that the page has finished rendering. The protocol defines clip coordinates in device-independent pixels (DIP), and Chromium rejects a clip with zero width or height. Chromium also needs a live render view to capture. See the CDP Page domain and the Chromium Page protocol handler.

There is a separate issue when the image contains transparency. A transparent canvas pixel does not itself contain the color of the CSS background behind it; the screenshot’s final appearance depends on how the content and frame background are composed. A Chrome DevTools MCP issue opened January 21, 2026 describes a transparent canvas over a dark CSS container appearing white in a screenshot. The report identifies Chrome 143.x on Windows 10, but it is one reported case—not proof that every white capture, Chrome version, or operating system has the same cause.

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

Use the diagnostic order below rather than treating “white” as a diagnosis. A clipped-only failure points toward geometry or capture-path differences. If the unclipped capture is also white, inspect the rendered page and background composition.

Diagnose the failure in a controlled order

1. Confirm the target and wait for the content

Check that your CDP session is attached to the intended page target and that the page has a live render view. Navigation completion alone may not mean that a chart, canvas, or asynchronously loaded application has finished drawing. Wait for an application-specific ready condition where possible, such as a visible selector or a rendering-complete signal from your app.

For each test, record the Chrome version, target and session, command arguments, viewport dimensions, device scale factor, and decoded output dimensions. Protocol Monitor can show the parameters sent with a command and let you send commands directly; its usage is described on the CDP Protocol landing page.

2. Validate the clip rectangle and coordinate space

Inspect every clip field: x, y, width, height, and scale. Width and height must be nonzero. The protocol’s Page.Viewport describes clip geometry in DIP, so do not blindly substitute physical output-image pixels. Compare the clip against the page’s active viewport and any device-metrics emulation.

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

If the rectangle came from a DOM measurement, verify whether it is viewport-relative or document-relative. Scrolling may change the origin you need; viewport emulation and device scale can also make assumptions about output pixels misleading. Recalculate the rectangle consistently, then try a small, known-visible region. The correct conversion depends on the client and page state.

3. Compare clipped and unclipped captures

Keep the target page, readiness condition, format, and other settings constant. Capture once without clip, then capture a small, valid rectangle that clearly covers visible content.

  • Unclipped is correct; clipped is white or wrong: prioritize clip bounds, coordinate origin, DIP-versus-output-pixel assumptions, scale, viewport size, scroll state, and beyond-viewport behavior.
  • Both are white: inspect what the page has rendered, transparent surfaces, the frame background, and target readiness. A clip-specific explanation is less likely to account for both results.

This comparison is an isolation heuristic, not a guarantee that every failure will separate cleanly. The protocol exposes clip as a capture argument, and Chromium uses a distinct full-page sizing branch for a particular un-clipped capture mode; those differences make a controlled comparison useful.

4. Inspect transparent canvas and background composition

Check the canvas’s transparency and the computed backgrounds of the canvas and its ancestors. A transparent canvas pixel is not a painted copy of its container’s CSS color. If the frame’s default background is absent or transparent, a capture may not produce the visual base color you expect.

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

As a diagnostic, you can set a default frame background before capturing:

{
  "method": "Emulation.setDefaultBackgroundColorOverride",
  "params": {
    "color": { "r": 15, "g": 23, "b": 42, "a": 1 }
  }
}

Use the color your page actually needs; the RGBA values here illustrate the protocol shape and are not a recommended universal background. The CDP Emulation domain documents this override as the frame’s default background when content does not specify one. It is not documented as a way to force an element’s CSS background behind every transparent canvas. Check whether it changes your result, then clear the override by calling Emulation.setDefaultBackgroundColorOverride with no color parameter.

5. Check capture mode and viewport state

The protocol describes fromSurface as defaulting to true and captureBeyondViewport as defaulting to false; both parameters are marked experimental in the protocol definition. Chromium’s current implementation takes its automatic full-page sizing branch when the capture is from the surface, beyond-viewport capture is enabled, and no clip is supplied. With a clip present, it validates the clip dimensions and captures through the clipped-region path instead.

Begin with documented defaults unless your use case requires another mode. If a wrapper or test harness changes device metrics, viewport, scale, or emulation state, log those changes and reset them between experiments. Change one variable at a time. Because these protocol parameters are experimental and implementation details can evolve, verify behavior against the Chrome version actually in use.

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

Minimal CDP payloads to test

Send this command to the intended page target after the relevant content is ready. A clip must have positive dimensions; adjust the rectangle to the page’s coordinates.

{
  "method": "Page.captureScreenshot",
  "params": {
    "format": "png",
    "clip": {
      "x": 0,
      "y": 0,
      "width": 800,
      "height": 600,
      "scale": 1
    }
  }
}

For the baseline, send the same command with the clip property removed. Do not change format or other capture settings between the two tests. To request beyond-viewport capture, the protocol parameter is captureBeyondViewport; however, Chromium’s automatic full-page sizing branch applies only when there is no clip, fromSurface is true, and beyond-viewport capture is enabled. A clipped region should not be assumed to behave like that un-clipped full-page request.

Use the result to choose the next check

Observation Check first What it suggests
Unclipped capture looks right; clipped capture is white or wrong Clip dimensions, coordinate origin, DIP units, scale, viewport, scroll state Clip geometry or a different capture path is plausible.
Both captures show white behind transparent content Canvas transparency, computed backgrounds, frame default background, render readiness Background composition is plausible; one issue report describes a similar symptom.
Command errors immediately Live render view and nonzero clip width and height Chromium checks for a render view and rejects zero-sized clips.
Image changes after a background override Whether page content specifies a background; whether the override was cleared The override affects the default frame background when content does not specify one.

Common errors and fixes

A clip has zero width or height

Chromium rejects zero-sized clip dimensions. Log the serialized CDP request rather than relying only on the values in your application code; rounding or conversion can change a computed rectangle. Ensure both dimensions are positive before sending the command.

The clip is valid but covers the wrong area

A rectangle may be valid and still miss the visible content because it uses the wrong origin, stale scroll position, or a mismatched viewport assumption. Re-measure after scrolling or emulation changes, verify the coordinate unit, and test a small region whose visible contents are known.

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

The page appears ready, but the screenshot is blank or incomplete

Navigation completion is not always application-render completion. Wait for the chart, canvas, or asynchronous content to be ready, then repeat the unchanged capture. Confirm the session is attached to the page you are inspecting and that it has a live render view.

Only transparent areas turn white

Inspect the canvas alpha and the backgrounds around it. Try the default-background override only as a test of frame background behavior, not as a guaranteed fix for CSS composition. Clear it afterward so it does not affect later captures.

Your full-page and clipped tests disagree

That disagreement is not necessarily contradictory: Chromium’s automatic full-page sizing branch requires an un-clipped request with the appropriate surface and beyond-viewport settings. Keep the clip test and full-page test distinct, and record the Chrome version and all capture parameters.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Performance, repeatability, and cost of debugging

The supplied protocol and implementation references establish validation and capture-path behavior, but they do not provide a universal timing figure, success rate, or pixel threshold for diagnosing white screenshots. For repeatable debugging, capture the same ready page with one setting changed at a time, save the raw command and browser version, and inspect the decoded image dimensions as well as its appearance. Avoid repeatedly changing viewport, clip, background, and emulation settings together; that makes it harder to identify which change affected the output.

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

Or skip the browser setup

If you need screenshots rather than CDP-specific control, ScreenshotNeo is a website screenshot API and MCP server. Its one-call endpoint returns PNG, JPEG, WebP, or PDF output:

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

See the ScreenshotNeo API documentation for request options. Before capture, it accepts cookie/consent banners like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each of those steps can be turned off. Bot checks/CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and each response identifies the page verdict and billing status in headers. Its MCP server gives AI agents tools for screenshots, page information, and PDF capture. The free plan includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots.

Sign up free for 1,000 screenshots a month—no card required.

Frequently Asked Questions

Does every white CDP screenshot mean Chrome has a clipping bug?

No. A white result can come from clip geometry, page readiness, target state, or transparent-background composition; compare clipped and unclipped captures to narrow it down.

Free tools Windows power users keep installed

One-click scans. No signup required.

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

Will setting a default background override always reveal the CSS color behind a transparent canvas?

No. The override is documented for the frame’s default background when content does not specify one, not as a general way to place an element’s CSS background behind transparent canvas pixels.

Are CDP screenshot clips specified in physical image pixels?

The protocol describes the clip region in device-independent pixels. Keep that coordinate system distinct from physical output-image dimensions.

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.