Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.
If PhantomJS writes a blank screenshot, first check whether page.open() returned success. Then confirm the content was ready when capture ran, verify the viewport and clip dimensions, and rule out a transparent background. If those checks pass, inspect network requests and JavaScript errors. PhantomJS development is suspended, so some current sites may also depend on browser features its older engine cannot handle.
Start with the page load status
A file being created does not mean the page loaded successfully. The page.open callback receives success or fail when loading finishes. Follow the Quick Start pattern: log the status and render only on success.
var page = require('webpage').create();
var url = 'https://example.com';
page.open(url, function (status) {
console.log('Status: ' + status);
if (status === 'success') {
page.render('capture.png');
}
phantom.exit();
});
Replace https://example.com with the target URL. If status is fail, changing screenshot dimensions is unlikely to help. Check that the URL is valid and reachable, then investigate TLS, proxy settings, and resource loading. The troubleshooting guide lists network and HTTPS checks below.
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Fix the driver behind crashes, sound loss and screen glitches3Clear out junk files and repair common Windows errorsWait for the content, not just the load callback
A page-load callback and application readiness are different checkpoints. A page can finish its initial load before scripts, asynchronous requests, animations, or lazy content have produced the element you need. The PhantomJS homepage demonstrates a short delay after open; the Quick Start renders in the callback. Neither approach guarantees that an arbitrary modern application is ready.
#1 Best Overall
- 【1080P 60FPS Video Capture Card】 This HDMI game capture card is based on USB3.0 high speed transmission port, input resolution up to 4K@30HZ, output resolution up to 2K@30Hz or 1920×1080@60Hz. Type c and USB interface can meet most of the devices in daily life. Easily meet the online capture, real-time recording, online meetings, live gaming and other functions, so you have a better visual enjoyment. Note: For capture use only; requires capture software to function and is not intended for direct screen casting to a monitor or TV
- 【Ultra Low Latency Screen Sharing】 HDMI capture card is made of good quality aluminum alloy with strong heat dissipation, allowing you to enjoy ultra low latency while live gaming or video recording or live streaming, avoiding blue screens and lag. This HDMI to USBC capture card supports easy recording of good quality audio or HD video and transferring it to your computer or streaming platform, allowing you to record 60 fps HD video directly on your hard drive and real-time preview
- 【Plug and Play, Easy to Carry】 This HDMI 1080P video capture card does not require any additional drivers or external power supply, just plug and play for fast capture. The capture card is small and lightweight, so you can put it in your bag for emergencies, making it very portable for outdoor live streaming. It's also a great way to share content in game recording, video conference, video recorder and online teaching
- 【Wide Compatibility USB Capture Card】 Easily streams to Facebook, Youtube or Twitch. With the connection, this HDMI to USB C/3.0 video capture devices can be working on several Operating Systems and various software: Windows 7/ 8/ 10, Mac OS or above, Linux, Android, Laptop, Xbox One, PS3/PS4/PS5, Camera, DVDs, Set Top Box, Webcame, DSLR, Switch/Switch 2, TV BOX, HDTV, Potplayer/VLC, ZOOM, OBS Studio etc.
- 【Package Content & Note】 1x HD Audio Capture Card , 1x USB 3.0 to USB C Adapter (A-side 3.0, B-side 2.0), 1x user manual. Please note that you need to restart the OBS Studio software after the audio setup is complete, otherwise it will result in no sound output. When using an adapter, if the device is recognized as USB 2.0, try using the other side with the USB-C port. Simply flip the capture card and reconnect it to be recognized as USB 3.0
Prefer a page-specific readiness condition
When possible, wait for a known element or state that indicates the desired content exists. The following is an implementation pattern, not a special PhantomJS readiness guarantee. Adapt the selector, timeout, and polling interval to the page; if the condition never becomes true, log that fact rather than silently treating the image as valid.
var page = require('webpage').create();
var url = 'https://example.com';
var selector = '#main-content';
var attempts = 0;
var maxAttempts = 40;
page.open(url, function (status) {
if (status !== 'success') {
console.log('Page open failed: ' + status);
phantom.exit(1);
return;
}
var timer = setInterval(function () {
attempts++;
var ready = page.evaluate(function (sel) {
return !!document.querySelector(sel);
}, selector);
if (ready) {
clearInterval(timer);
page.render('capture.png');
phantom.exit();
} else if (attempts >= maxAttempts) {
clearInterval(timer);
console.log('Timed out waiting for ' + selector);
phantom.exit(1);
}
}, 250);
});
This example checks for element presence, not whether it is visible, populated, or finished animating. Make the condition match what a correct capture means for your page. A fixed delay can be useful to determine whether timing is involved, but tune it to the target and do not treat it as a universal fix. The official homepage’s example is at phantomjs.org.
Check viewport and clip dimensions
viewportSize sets the headless browser’s viewport; clipRect selects the rectangle to capture. A narrow, misplaced, or zero-sized rectangle can exclude content even when the page rendered normally. The screen-capture documentation describes both settings.
Recommended Free Tools
page.viewportSize = { width: 1280, height: 900 };
// For diagnosis, leave clipRect unset unless you specifically need a crop.
console.log('Viewport: ' + JSON.stringify(page.viewportSize));
console.log('Clip: ' + JSON.stringify(page.clipRect));
- Confirm width and height are positive.
- Check that the target content lies within the viewport or custom clip rectangle.
- Temporarily remove a custom
clipRect. If content appears, correct the crop coordinates and size. - If you set a clip rectangle intentionally, verify its origin as well as its dimensions; a valid-sized crop can still point at an empty part of the page.
Rule out a transparent screenshot
A screenshot that looks empty in an image viewer may have transparent pixels rather than missing page content. The PhantomJS FAQ explains that PhantomJS leaves the page background to the page; if the page sets none, it remains transparent. Check the image’s alpha channel or place it over a contrasting background before concluding that rendering failed.
To test with a white page background, set it after the body exists:
Rank #2
- 【1080P HD High Quality】Capture resolution up to 1080p for video source and it is ideal for all HDMI devices such as PS4, PS3, Xbox One, Xbox 360, Wii U, DVDs, DSLR, Camera, Security Camera and set top box. Note: Video input supports 4K30/60Hz and 1080p120/144Hz. Does not support 4K120Hz/144Hz. Output supports up to 2K30Hz.
- 【Plug and Play】No driver or external power supply required, true PnP. Once plugged in, the device is identified automatically as a webcam. Detect input and adjust output automatically. Won't occupy CPU, optional audio capture. No freeze with correct setting.
- 【Compatible with Multiple Systems】suitable for Windows and Mac OS. High speed USB 3.0 technology and superior low latency technology makes it easier for you to transmit live streaming to Twitch, Youtube, Facebook, Twitter, OBS, Potplayer and VLC.
- 【HDMI LOOP-OUT】Based on the high-speed USB 3.0 technology, it can capture one single channel HD HDMI video signal. There is no delay when you are playing game live.
- 【Support Mic-in for Commentary】Rybozen capture card has microphone input and you can use it to add external commentary when playing a game. Please note: it only accepts 3.5mm TRS standard microphone headset.
page.evaluate(function () {
document.body.bgColor = 'white';
});
The documented snippet changes the body background; exact timing depends on when the page creates its body. If the target deliberately uses transparency, do not force a background in the final capture.
Inspect network requests and JavaScript errors
When status is successful but the expected content is absent, determine whether required resources loaded and whether page scripts failed. PhantomJS does not automatically print every kind of page-side message to the command line.
Log resource requests and errors
The troubleshooting guide recommends logging resource requests. Add handlers before opening the page so you can see what the capture attempts to fetch.
page.onResourceRequested = function (request) {
console.log('Request: ' + request.url);
};
page.onError = function (message, trace) {
console.log('Page error: ' + message);
trace.forEach(function (frame) {
console.log(' ' + frame.file + ':' + frame.line);
});
};
page.onConsoleMessage = function (message) {
console.log('Page console: ' + message);
};
Wire up onConsoleMessage if application logging matters. The Quick Start notes that page console messages, including messages from evaluate(), are not shown by default. Request logging can reveal failed or unexpectedly slow resources; use it to identify a specific cause rather than assuming every request failure explains the blank image.
Check HTTPS and proxy behavior selectively
The troubleshooting guide suggests checking OpenSSL libraries when HTTPS fails while HTTP works. On Windows, it also notes that a default proxy can cause substantial latency and gives --proxy-type=none as a workaround. Use that flag only when the proxy situation is relevant to your environment; it is not a general screenshot fix.
Rank #3
- 【4K HDMI Input, 2K@30Hz Recording】Powered by a true USB 3.0 high-speed interface, the capture card supports up to 4K@30Hz HDMI input and records at 2K@30Hz or 1080P@60Hz. Perfect for gamers, streamers, and professionals who need crisp, smooth video for live streaming, gameplay recording, or online meetings.
- 【Ultra Low Latency Screen Sharing】Built with a premium aluminum alloy shell and advanced chipset for stable heat dissipation, ensuring ultra-low latency transmission. Capture high-quality video and dual-channel audio in real time—no lag, no frame drop—ideal for Twitch, YouTube, or OBS streaming.
- 【Easy Plug and Play, Compact & Portable】No driver or external power required—just plug and play via USB 3.0 or Type-C connection to your Windows or macOS computer. Lightweight and compact design makes it easy to carry for outdoor streaming, live shows, or mobile recording setups.
- 【Wide Compatibility & Multi-Device Support】Compatible with Windows 7 8 10 11, macOS, Linux,Android and supports most popular software such as OBS, Zoom, VLC, Twitch Studio, and more. Works seamlessly with PS4, PS5, Xbox, Switch, DSLR cameras, TV boxes, and other HDMI-output devices for streaming to YouTube, Twitch, etc.
- 【What You Get】Includes: HDMI Capture Card, USB 3.0 to USB-C Adapter, User Manual. Tips: Make sure your tablet’s OTG function is enabled before connecting. Test your HDMI device with a monitor first to confirm video and audio output, then connect to the Video Capture Card for recording.
Verify which PhantomJS executable is running
Run phantomjs --version and check for multiple installations. The troubleshooting guide warns that different installed copies can mean your script is invoking a different binary than expected. Confirm the version in the same environment and path used by the job that creates the screenshot.
There is also a historical X server distinction: the FAQ says PhantomJS 1.4 or earlier needs an X server, with Xvfb as a workaround; from 1.5 onward it is pure headless and does not need X11 or Xvfb. Do not install Xvfb as a universal fix for a current PhantomJS installation. See the FAQ for that version-specific detail.
Know when the browser engine is the limit
The PhantomJS project repository identifies 2.1 as the latest stable release and says development is suspended until further notice. The project homepage describes PhantomJS as QtWebKit-backed. This status does not prove that age caused a particular blank capture, but a site that relies on browser capabilities the engine does not support may not render correctly even after the script, timing, and dimensions are fixed.
If the target site requires newer browser behavior, evaluate a maintained browser automation stack against that site’s requirements and your existing workflow. Consider support status, compatibility with the site’s features, whether readiness can be detected reliably, and how well the tool fits your capture or test pipeline. The sources establish PhantomJS’s suspended status, but do not establish a provider-by-provider comparison.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Or skip the browser setup
For a one-request capture, ScreenshotNeo is a website screenshot API and MCP server. Its API accepts a URL and returns an image or PDF. For example, this cURL request saves a WebP screenshot of Stripe:
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallCrashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteRank #4
- AV TO USB Converter: Capture videos and audios from VHS, VCR, Hi8, DV tapes to a PC, with the help of our USB Video Converter. Save room while digitizing your favorite old memories
- Quality Capture Card: Our USB Video Capture Card converting anolog RCA composite input into HD 720P USB output and capturing audio without any sound card. Advanced signal processing technology provides you with great precision, colors, resolutions, and details.
- Plug and Play: Automatically install the driver once you hook up this RCA to USB Converter to a PC. No external power is needed. User-friendly and easy to operate
- Wide Compatibility: The Video Capture Card can work with video devices with RCA connector or S-Video connector, such as VHS, VCR, Hi8, camcorder, compatible with Windows and Mac OS. Support video formats like NTSC, PAL, and support brightness, contrast, hue, and saturation control
- Note: The Video Converter is used with acquisition software. We recommend OBS Studio or PotPlayer for Windows, and QuickTime Player for Mac. They can be downloaded for free online. Please operate according to the steps in User Manual or contact us if you have any questions
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 documentation for request options. Replace YOUR_API_KEY with your key and change the URL to the page you want to capture. The response includes X-Page-Verdict and X-Billed headers; clean shots are billed, while bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing. Cookie and consent banners, newsletter popups, and chat widgets are removed before capture by default; each cleanup step can be turned off.
Its MCP server exposes take_screenshot, get_page_info, and capture_pdf for AI agents, including Claude, Cursor, and other MCP clients. The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 shots. The same feature set is available on every plan.
Sign up free for 1,000 screenshots a month, with no card required.
Blank screenshot troubleshooting checklist
- Status is fail: check URL syntax, reachability, TLS/OpenSSL, proxy configuration, and resource loading.
- Status is success, but content is missing: wait for a page-specific condition and log when it is reached; do not assume the load callback means an application is ready.
- Only part of the page appears: inspect
viewportSizeand remove or correctclipRect. - The file looks empty in a viewer: inspect its alpha channel and test a background color after the page body exists.
- Expected assets or text are absent: log resource requests, page exceptions, and console messages.
- Results differ between machines: verify the invoked binary with
phantomjs --versionand check for multiple installations. - All script and environment checks pass, but the site still fails: assess whether the site’s required browser features exceed this suspended engine’s capabilities.
Frequently Asked Questions
Does PhantomJS need Xvfb to take screenshots?
Only older versions: the PhantomJS FAQ says 1.4 or earlier needs an X server, while 1.5 and later are pure headless and do not need X11 or Xvfb.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Why does my PhantomJS PNG look blank on a dark background?
It may contain transparent pixels because PhantomJS leaves the page background unset unless the page sets one. Inspect the alpha channel or test a contrasting background.
Is PhantomJS 2.1 still maintained?
The project repository identifies 2.1 as the latest stable release and states that development is suspended until further notice.
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.

