Free tools Windows power users keep installed
One-click scans. No signup required.
A “blank” chromedp screenshot can mean several different things: no bytes were returned, Chrome produced a valid white image, the capture was clipped, or it showed the wrong part of the page. Check the error and output first, then isolate capture mode, page readiness, dimensions, element geometry, and Chrome setup—changing one variable at a time.
First identify what “empty” means
Before changing the browser flags or adding delays, record the result of chromedp.Run and inspect the returned bytes. A capture error, a zero-length byte slice, a decodable but blank image, a clipped image, and an image of the wrong region point to different failure stages.
- Log the returned error and
len(imageBytes). - Save any non-empty output and open it. Determine whether it is blank, cut off, missing only slow content, or focused on the wrong region.
- Keep a minimal reproduction, and record the Go and chromedp versions, Chrome build, operating system, browser mode and flags, screenshot action, viewport dimensions, selector, and readiness condition.
Chromedp issue reports describe all of these distinct outcomes, including explicit capture errors; they are examples from specific environments, not proof of one universal cause (blank or cut-off output, a slow image omitted during loading, a wrong region after scrolling, and a capture error).
Make sure the screenshot action matches the result you want
Chromedp provides separate actions for an element, the current viewport, and a full-page capture. Choosing the wrong one can look like an incomplete or misplaced screenshot even when Chrome successfully captured what it was asked to capture.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Fix the driver behind crashes, sound loss and screen glitches3Repair Windows errors before they cause bigger problems#1 Best Overall
- Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
- Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
- Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
- Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
- 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
| Action | What it captures | Use it when |
|---|---|---|
chromedp.Screenshot |
A matched element, clipped to its bounds. | You need one selector-matched element. |
chromedp.CaptureScreenshot |
The current viewport. | You need the visible browser area. |
chromedp.FullScreenshot |
Content beyond the viewport. | You need a full-page capture. |
Confirm the selector and action first. The current helper implementation calculates a clip from matched nodes for element screenshots. For full screenshots, quality 100 selects PNG; other quality values select JPEG, as documented in the chromedp screenshot implementation. That format choice affects encoding, not whether page content has finished rendering.
For an advanced comparison, Chrome DevTools Protocol Monitor can show commands issued by Chrome’s “Capture node screenshot” flow that chromedp’s helper does not send. Comparing those commands directly may help explain differing behavior, but first verify the action, selector, and output shape.
Wait for the content, not just the element
A selector becoming visible does not prove that its images or other asynchronous content are ready. A report using chromedp v0.7.6 and Chrome 88.0.4324.182 describes an image missing because capture occurred while the page was still loading (issue report). Treat that as a timing lead, not a version-independent diagnosis.
Rank #2
- 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
- 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
- Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
- 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
- What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
- Navigate to the page and wait for the target element to exist and become visible or ready using an appropriate chromedp wait action.
- Check the content that matters. For a regular image, evaluate whether its
completeproperty is true and itsnaturalWidthandnaturalHeightare non-zero. - For client-rendered content, wait for an application-specific ready marker or another condition that reflects the actual content, then capture.
- Compare the saved image before and after the relevant readiness condition. Keep the page, action, viewport, and browser setup unchanged during the comparison.
WaitVisible or WaitReady can establish an element state; neither should be treated as proof that every image, script-driven component, or other page resource has finished. Prefer a condition tied to the captured content over an arbitrary sleep.
Use a minimal Go reproduction
This example captures the current viewport as PNG after navigation. Replace the target URL and tailor the readiness condition to the page. It logs both the run error and byte count and writes any returned bytes so you can distinguish a failed capture from a valid but blank image.
package main
import (
"context"
"fmt"
"os"
"time"
"github.com/chromedp/chromedp"
)
func main() {
ctx, cancel := chromedp.NewContext(context.Background())
defer cancel()
ctx, cancel = context.WithTimeout(ctx, 60*time.Second)
defer cancel()
var imageBytes []byte
err := chromedp.Run(ctx,
chromedp.Navigate("https://example.com"),
chromedp.WaitVisible("body", chromedp.ByQuery),
chromedp.CaptureScreenshot(&imageBytes),
)
fmt.Printf("chromedp.Run error: %v; screenshot bytes: %d\n", err, len(imageBytes))
if len(imageBytes) > 0 {
if writeErr := os.WriteFile("shot.png", imageBytes, 0644); writeErr != nil {
fmt.Printf("write screenshot: %v\n", writeErr)
}
}
}
This uses CaptureScreenshot, so it captures the viewport rather than a selected element or the full page. Replace the wait with a condition for the specific image or application state you need; a visible body alone does not establish that all page content is ready.
Rank #3
- Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
- Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
- Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
- Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
- What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
Reduce unusually large capture dimensions
Temporarily remove oversized EmulateViewport settings and retry with a normal viewport. If a viewport or small element capture works but a full capture fails, the capture extent is a stronger lead than selector readiness.
- A 2022 issue using chromedp v0.8.4 reports blank or cut-off output with an emulated viewport of 7086 by 9448 (issue report).
- A separate 2022 report using chromedp v0.8.1 and Chrome 103.0.5060.134 records an error for a requested image size of 2880 by 20544; that environment reported
max_texture_size_=16384(issue report).
Those dimensions are diagnostic observations from individual setups, not universal Chrome limits. For a very long page, first verify that a viewport capture succeeds, then test a smaller region or element. Do not assume tiled capture is built into chromedp; whether to capture a long page in sections depends on the implementation you choose.
Check the selector, bounds, and scroll position
For an element screenshot, verify immediately before capture that the selector matches the intended node and that its bounds make sense. Inspect its bounding rectangle and whether it is in the expected viewport position. Current chromedp source calculates client rectangles for matching nodes and rounds clip dimensions before capture (implementation).
Rank #4
- Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
- Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
- Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
- Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
- Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
A 2021 report using chromedp v0.7.3 and Chrome 91.0.4472.77 describes capturing another page region after scrolling and raises coordinate-space mismatch as a suspected cause (issue report). That older report does not establish a current library defect. Reproduce with the same page and selector at the top of the page and after scrolling; log the bounds in each case.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Compare headless and headed Chrome
Chromedp’s README says, “By default, Chrome is run in headless mode.” Record the exact Chrome executable or build and flags, then compare a small capture in headed and headless modes if your environment permits. The project README also identifies the chromedp/headless-shell image as an option for headless environments (chromedp README).
An open 2024 issue reports a white page in one headless setup using DisableGPU, but does not establish that the flag is a general cause or fix (issue report). Avoid changing GPU flags blindly: compare controlled runs and preserve the error, versions, and output from each.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Best Value
- 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
- Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
- Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
- HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
- What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
Troubleshooting by symptom
| Observed result | First checks | Next useful comparison |
|---|---|---|
chromedp.Run returns an error |
Record the complete error and whether any bytes were returned. | Retry with a smaller viewport or capture area, then compare the same page and browser setup. |
| Byte slice is empty | Check the run error and whether the screenshot action ran after navigation and the required wait. | Reduce the workflow to navigation, a targeted readiness condition, and one capture action. |
| Bytes exist, but the image is white or blank | Open the image; verify page readiness, browser mode, Chrome build, and flags. | Compare headed with headless if possible, changing only browser mode. |
| Only a slow image or rendered section is missing | Wait for that resource or the application state it depends on. | Compare capture before and after the content-specific readiness check. |
| Image is clipped or cut off | Confirm screenshot action, viewport, and full-page extent. | Retry at a normal viewport and with a smaller capture area. |
| Wrong page region appears after scrolling | Confirm selector and inspect its bounds and viewport position just before capture. | Compare captures at the top of the page and after scrolling. |
Or skip the browser setup
If you need a screenshot without managing Chrome and chromedp, ScreenshotNeo provides a website screenshot API and MCP server. A single GET request returns an image or PDF; see the API documentation.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp
Cookie banners are accepted and removed before capture, along with known consent platforms, newsletter popups, and chat widgets; those steps can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and the response identifies the page verdict and billing status in headers. An MCP server provides take_screenshot, get_page_info, and capture_pdf tools for AI agents. The Free plan includes 1,000 screenshots a month without a card; paid plans start at $5 for 3,000 shots.
Sign up free for 1,000 screenshots a month, with no card required.
Quick Recap
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.

