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 text is missing from a PhantomJS screenshot, first check whether the page loaded that text at all. Compare the page’s extracted text with the screenshot, inspect network and JavaScript errors, and then check the fonts visible to the account running PhantomJS. Missing host fonts are one documented cause, but not the only one. PhantomJS development is suspended, so for sites that rely on newer browser behavior, include migration in your troubleshooting decision.
Start by separating missing content from missing rendering
A blank-looking area in an image can mean two different things: the page never supplied the text, or the browser loaded the text but did not render it visibly. Changing fonts cannot fix a failed request or an application script that never inserted the content. Conversely, if the text is present in the page but absent from the pixels, the font environment and rendering path deserve closer attention.
PhantomJS uses WebKit, and its documented capture flow is to open a page and call page.render(). Its older rendering engine may also behave differently from the browser used by the site’s developers. See the PhantomJS screen-capture documentation and the project homepage.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problemsRun a diagnostic capture with logging and a text check
This script records resource requests and JavaScript errors, checks the main-frame text through page.plainText, and saves a screenshot. It deliberately waits for a selector that you choose rather than assuming that page navigation means all application content is ready.
#1 Best Overall
- CRISP CLARITY: This 23.8″ Philips V line monitor delivers crisp Full HD 1920x1080 visuals. Enjoy movies, shows and videos with remarkable detail
- INCREDIBLE CONTRAST: The VA panel produces brighter whites and deeper blacks. You get true-to-life images and more gradients with 16.7 million colors
- THE PERFECT VIEW: The 178/178 degree extra wide viewing angle prevents the shifting of colors when viewed from an offset angle, so you always get consistent colors
- WORK SEAMLESSLY: This sleek monitor is virtually bezel-free on three sides, so the screen looks even bigger for the viewer. This minimalistic design also allows for seamless multi-monitor setups that enhance your workflow and boost productivity
- A BETTER READING EXPERIENCE: For busy office workers, EasyRead mode provides a more paper-like experience for when viewing lengthy documents
Save as diagnose.js and run it with phantomjs diagnose.js https://example.com "body". Replace the URL and selector with the page and content area you are investigating.
var page = require('webpage').create();
var system = require('system');
var address = system.args[1] || 'https://example.com';
var readySelector = system.args[2] || 'body';
var timeoutMs = 15000;
var started = Date.now();
var finished = false;
page.settings.resourceTimeout = timeoutMs;
page.onResourceRequested = function (requestData, networkRequest) {
console.log('REQUEST ' + requestData.method + ' ' + requestData.url);
};
page.onResourceReceived = function (response) {
if (response.stage === 'end') {
console.log('RESPONSE ' + response.status + ' ' + response.url);
}
};
page.onResourceTimeout = function (request) {
console.log('RESOURCE TIMEOUT ' + request.url);
};
page.onResourceError = function (error) {
console.log('RESOURCE ERROR ' + error.errorCode + ' ' + error.url);
};
page.onError = function (message, trace) {
console.log('PAGE ERROR ' + message);
trace.forEach(function (frame) {
console.log(' ' + frame.file + ':' + frame.line);
});
};
function finish(reason) {
if (finished) return;
finished = true;
console.log('FINISH ' + reason + ' after ' + (Date.now() - started) + 'ms');
console.log('TITLE ' + page.title);
console.log('PLAIN TEXT\n' + page.plainText);
page.render('phantomjs-diagnostic.png');
phantom.exit(0);
}
page.open(address, function (status) {
console.log('OPEN ' + status);
if (status !== 'success') {
finish('navigation failed');
return;
}
var poll = setInterval(function () {
var ready = page.evaluate(function (selector) {
var node = document.querySelector(selector);
return !!node && node.textContent.trim().length > 0;
}, readySelector);
if (ready) {
clearInterval(poll);
finish('selector contains text');
} else if (Date.now() - started >= timeoutMs) {
clearInterval(poll);
finish('selector wait timed out');
}
}, 250);
});
The script’s 15-second timeout is an example diagnostic limit, not a universal wait recommendation. Set a selector that represents the text you need. If your page has no useful selector, use a known application-ready condition in the polling function rather than simply increasing an arbitrary delay. PhantomJS documents resource-request logging, error handlers, and the resource timeout setting in its troubleshooting guidance and WebPage settings.
Confirm which PhantomJS binary you are running
Run phantomjs --version and verify the executable path used by your shell, service, container, or job runner. If the machine has multiple PhantomJS installations, the one invoked by the capture pipeline may not be the one you tested interactively. The project’s troubleshooting page flags multiple versions as a possible source of confusion.
Rank #2
- CRISP CLARITY: This 22 inch class (21.5″ viewable) Philips V line monitor delivers crisp Full HD 1920x1080 visuals. Enjoy movies, shows and videos with remarkable detail
- 100HZ FAST REFRESH RATE: 100Hz brings your favorite movies and video games to life. Stream, binge, and play effortlessly
- SMOOTH ACTION WITH ADAPTIVE-SYNC: Adaptive-Sync technology ensures fluid action sequences and rapid response time. Every frame will be rendered smoothly with crystal clarity and without stutter
- INCREDIBLE CONTRAST: The VA panel produces brighter whites and deeper blacks. You get true-to-life images and more gradients with 16.7 million colors
- THE PERFECT VIEW: The 178/178 degree extra wide viewing angle prevents the shifting of colors when viewed from an offset angle, so you always get consistent colors
Read the logs in the right order
OPEN success: navigation completed, but this does not prove that an application’s later asynchronous updates finished.RESOURCE ERRORorRESOURCE TIMEOUT: check the failed URL, network access, DNS, TLS or proxy configuration, and whether the page depends on that resource.PAGE ERROR: inspect the reported script and line. A page error may stop code that would otherwise insert text.- Text in
PLAIN TEXTbut not in the image: investigate fonts, CSS visibility and rendering compatibility. - Text absent from
PLAIN TEXT: investigate navigation, content loading, application scripts or whether the expected text is in a frame or another document.
page.plainText exposes main-frame text without markup; it is a diagnostic signal, not a complete inspection of every frame or every visual element. Its behavior is described in the plainText API documentation.
Check fonts on the machine and account that capture the page
If the expected text appears in page.plainText but not in the screenshot, find the font-family declarations used by the affected element. Then verify that the PhantomJS host has those fonts, or an appropriate fallback, installed and visible to the user account that actually runs the capture. A font available to an interactive desktop user may not be available to a service account or container.
There is a useful but limited precedent: in a 2016 CentOS question titled “PhantomJS screenshots not showing text,” the accepted answer reported that the system had no fonts installed and that adding fonts made the screenshots work. That is an individual environment-specific report, not proof that missing fonts explain every case. See the Stack Overflow report.
Rank #3
- Clear visuals. Fluid motion: A 144Hz refresh rate and 1ms MPRT deliver smooth, tear‑free motion across work, gaming, and streaming for clearer, more fluid viewing.
- Eye comfort: TÜV Rheinland 3‑star* certification reduces harmful blue light while preserving stunning color quality without compromise. *TÜV Rheinland 3-star eye comfort certification.
- Wide viewing angle: Get consistent views across a wide 178° /178° viewing angle.
- In-Plane Switching (IPS): See excellent color accuracy and consistency across wide viewing angles with In-plane Switching (IPS) technology.
- Ultra-thin bezels: Maximize your viewing experience with thin bezels.
A separate comment on a 2017 PhantomJS issue described a Linux PDF problem where installing local TTF files and running fc-cache -fv resolved that reporter’s rasterized-text issue. It concerned PDF output and is another user report, not a universal PhantomJS fix: GitHub issue #10373.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →- Identify the CSS-requested font family and check whether its files exist on the capture host.
- Check font visibility as the same OS account, container image or service that launches PhantomJS.
- Confirm that the page has a usable fallback family if the preferred font cannot load.
- Use the current font-package instructions for your Linux distribution; no one package or installation command is established as correct across Linux systems.
Check timing, JavaScript, and resource settings
PhantomJS’s WebPage settings document JavaScript and image loading as enabled by default, along with resourceTimeout for requests. Check whether your script or deployment overrides those defaults. A disabled JavaScript setting can prevent script-generated content from appearing; a failed stylesheet or font request can change the rendered result even when the text itself is present.
Do not treat page.open completing as proof that a modern web application has finished rendering. The site may still be fetching data, inserting content, or loading fonts. Wait for a page-specific condition—such as a non-empty target element—and log errors while waiting. The official material documents resource and error diagnostics, but does not give a single wait duration appropriate for every site. Relevant references are the settings reference and troubleshooting guidance.
Rank #4
- CURVED FOR ENHANCED ENGAGEMENT: An immersive viewing experience with a curved monitor that wraps more closely around your field of vision; It creates a wider view, enhancing depth perception and minimizing peripheral distraction
- SMOOTH PERFORMANCE FOR SEAMLESS CONTENT: Stay in the action when playing games, watching videos, or working on creative projects; The 100Hz refresh rate reduces lag and motion blur so you don't miss a thing in fast-paced moments¹
- MORE GAMING POWER: Gain the edge with optimizable game settings; Color and image contrast can be adjusted to see scenes more vividly and spot enemies hiding in the dark; Game Mode adjusts any game to fill the screen so you can view every detail²
- KEEP IT EASY ON THE EYES: Care for your eyes and stay comfortable, even during long sessions; Advanced eye comfort technology certified by TÜV reduces eye strain by minimizing blue light and reducing irritating screen flicker²
- INCREASED VERSATILITY: Connect to more; Plug devices straight into your monitor for increased flexibility, making your computing environment even more convenient
When to stop patching PhantomJS
The PhantomJS homepage states: “Important: PhantomJS development is suspended until further notice.” Since PhantomJS uses WebKit and is no longer actively developed, a site that depends on newer CSS, JavaScript, or web-font behavior may expose a compatibility limit rather than a configuration mistake. The project status is documented at phantomjs.org; its capture engine is described in the screen-capture documentation.
If the target is incompatible, compare candidate browser automation approaches against the site and pipeline you actually need. There is no single replacement established by the sources here. Evaluate:
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 reinstallOutdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware match- Site compatibility: whether the engine handles the page’s current JavaScript, CSS and fonts.
- Maintenance status: whether the project continues to receive updates.
- Asynchronous resources: how the tool lets you wait for application content and fonts.
- Pipeline fit: language bindings, deployment requirements, existing tests and capture output needs.
Test a representative failing page and compare its expected text and final image before migrating a larger capture job. Preserve the diagnostic logs so the change distinguishes an engine limitation from a network or application failure.
Best Value
- 【INTEGRATED SPEAKERS】Whether you're at work or in the midst of an intense gaming session, our built-in speakers provide rich and seamless audio, all while keeping your desk clutter-free.
- 【EASY ON THE EYES】 Protect your eyes and enhance your comfort with Blue-Light Shift technology. This feature reduces harmful blue light emissions from your screen, helping to alleviate eye strain during long hours of use and promoting healthier viewing habits.
- 【WIDEN YOUR PERSPECTIVE】Our sleek minimal bezel design ensures undivided attention. The nearly bezel-free display seamlessly connects in a dual monitor arrangement, delivering an unobstructed view that lets you focus on more at once, completely distraction-free.
Common symptoms and fixes
| Symptom | Likely direction | Next action |
|---|---|---|
page.plainText lacks the expected words |
The content may not have loaded or been inserted in the main frame. | Check page.open status, resource logs, page errors and the application-specific ready condition. |
Text is in page.plainText, but absent in the PNG |
Font availability or visual rendering is more suspect. | Check the requested family, host fonts and the account running PhantomJS; then consider engine compatibility. |
| Some pages work but one page does not | The failing page may depend on different resources, scripts or browser behavior. | Compare resource and JavaScript logs for the working and failing pages, then test the failing page in a maintained browser engine. |
| Results differ between shell and scheduled job | The process may use another PhantomJS binary or OS account with a different environment. | Log phantomjs --version and executable path in both contexts; compare font visibility and configuration. |
| Content appears intermittently | A fixed capture point may race with asynchronous page updates or resource loading. | Wait for a meaningful selector or application-ready state, and log timed-out or failed resources. |
Or skip the browser setup
If you need a clean screenshot without maintaining a PhantomJS host, ScreenshotNeo is a website screenshot API and MCP server. A single GET request takes a URL and returns an image or PDF; its capture flow can remove cookie and consent banners, newsletter popups and chat widgets before the shot. Bot checks, blank pages, timeouts, failed loads and cache hits are not billed, and responses identify the page verdict and billing status in headers. Its MCP server exposes screenshot, page-info and PDF-capture tools to AI agents.
Here is the cURL one-call example; replace the URL and use your API key. See the ScreenshotNeo documentation for API options.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000. Sign up for ScreenshotNeo’s free plan.
Frequently asked questions
Does page.plainText prove that text will be visible?
No. It helps establish whether main-frame text exists, but it does not prove that the screenshot rendered it visibly.
Is installing fonts guaranteed to fix PhantomJS text?
No. It fixed particular user-reported Linux cases; missing requests, scripts, timing and engine compatibility can produce similar symptoms.
Is there a universal wait time before calling page.render()?
No. Wait for the content condition your target page requires rather than relying on one delay for every site.
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.

