Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →If wkhtmltopdf produces a blank PDF from a JavaScript website, first check whether JavaScript is enabled, look for script and resource errors, and confirm the page’s content is ready before capture. Its --javascript-delay option waits for a fixed time; it does not prove that an application has finished rendering. If the page still fails after you confirm readiness and resource access, the installed Qt WebKit engine may not support what the site needs.
Why a JavaScript website can render as a blank PDF
wkhtmltopdf converts HTML to PDF using Qt WebKit. JavaScript is enabled by default in its documented command-line options, but a website can depend on scripts, browser features, or runtime behavior that the installed WebKit build cannot handle. It can also depend on resources that the machine running the command cannot reach.
A blank PDF alone does not identify which condition occurred. It is a symptom, not a diagnosis. The project describes the tool as a headless renderer using Qt WebKit: wkhtmltopdf project homepage.
Diagnose the failure in order
1. Record the exact environment and command
Capture the output of wkhtmltopdf --version, your operating system and version, the full command, and a small reproducible HTML/JavaScript example if possible. These details help distinguish a site issue from a version- or environment-specific problem; the project asks for version, OS, and a detailed test case when reporting issues: wkhtmltopdf issue tracker.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →#1 Best Overall
- INNOVATIVE CARTRIDGE-FREE PRINTING — No more dealing with lots of tiny ink cartridges; With this wireless document and photo printer each ink bottle set is equivalent to about 90 individual cartridges²
- LESS FREQUENT INK REPLACEMENT — Replacement ink bottles don't have to be changed nearly as often as ink cartridges¹; When you choose this combination printer, scanner and copier you can print up to 4,500 pages black/7,500 color³
- COLOR PRINTING — Up to 2 years of ink in the box4 (and with every replacement ink set) for fewer out-of-ink frustrations
- ZERO CARTRIDGE WASTE — By using an Epson EcoTank printer you can help reduce the amount of cartridge waste ending up in landfills
- HOME PRINTER DESIGNED FOR RELIABILITY — The Epson EcoTank ET-2800 All-in-One Supertank Color Printer creates vivid, detailed prints and documents thanks to Micro Piezo Heat-Free Technology; Fire off 10 ISO pages per minute1 to easily finish large jobs
2. Check JavaScript settings and stderr
JavaScript is on by default, so check whether your command or wrapper explicitly disables it. Add --debug-javascript and inspect stderr for script errors. The command-line manual documents this option alongside --javascript-delay, --run-script, and --window-status: wkhtmltopdf command-line usage.
3. Confirm the page and its dependencies load on the rendering machine
Verify that the expected content exists in the page’s HTML or DOM, and that the rendering machine can access the page’s scripts, stylesheets, fonts, images, API endpoints, cookies, and redirects. A page that works in your desktop browser may behave differently when rendered in a server or container with different network access, credentials, or browser capabilities.
4. Wait for meaningful readiness—not just an arbitrary interval
The manual says --javascript-delay waits for milliseconds for JavaScript to finish and documents a default of 200 milliseconds. This is a time-based wait, not a signal that an application has completed its own rendering. The library setting describes waiting after page load until printing, or until JavaScript calls window.print(): wkhtmltopdf library page settings.
If content appears after a known delay, try a modestly longer value, for example:
wkhtmltopdf --javascript-delay 1500 https://example.com output.pdf
Rank #2
- CARTRIDGE-FREE PRINTING — Print lab-quality photos, graphics and creative projects; Get vibrant colors and sharp text with Epson's high-accuracy printhead and Claria ET Premium 6-color inks
- INK BOTTLES — Save on photos1 and creative projects with affordable in-house printing; All-in-one printer allows you to print 4" x 6" photos for about 4 cents each vs. 40 cents with traditional ink cartridges1
- LESS FREQUENT INK REPLACEMENT — Replacement ink bottles don't have to be changed nearly as often as ink cartridges¹; Printer, scanner and copier lets you print up to 6,200 color pages³
- PRINT FOR LONGER — Up to 2 years of ink in the box² (and with every replacement ink set) for fewer out-of-ink frustrations with this wireless printer
- ZERO CARTRIDGE WASTE — Epson EcoTank printer helps reduce the amount of cartridge waste ending up in landfills; Cartridge-free printer uses high-yield ink bottles; Each replacement ink bottle set is equivalent to about 100 individual ink cartridges⁴
Replace https://example.com with your page and adjust the delay only after observing when its content becomes available. When you control the page, a stronger approach is to set window.status to a known value after the content is ready, then wait for it:
wkhtmltopdf --window-status ready https://example.com output.pdf
The page must actually set window.status = 'ready' at the right point for this to help. Neither option guarantees that the page will render successfully.
5. Check compatibility before changing error handling
If waiting does not help, investigate JavaScript compatibility and runtime errors. Do not treat --load-error-handling ignore as a rendering fix: it changes how load failures are handled, but cannot make missing content or unsupported browser features work.
A historical issue documents a report where increasing the delay still resulted in a white page. That example shows why a longer wait is not a universal remedy; it does not establish the cause of another site’s blank output: wkhtmltopdf issue #2051.
Rank #3
- SET IT UP ONCE AND PRINT WITH CONFIDENCE. No complicated maintenance. Just easy, reliable printing you can count on.
- INK FOR YEARS. NOT MONTHS. Up to 2 years of ink included. Get thousands of pages of cartridge-free printing. More pages, less hassle
- KEEPS PRINTING WELL AFTER COMPETITORS HAVE QUIT. No complex maintenance. Sharper text, richer colors.[2] Only with HP Smart Tank
- PREMIUM SUPPORT - Strong technical expertise to solve issues faster
- THE LAST PRINTER YOU'LL EVER NEED. Enjoy years of refillable, cartridge-free printing.
When to keep wkhtmltopdf—and when to change renderers
Keep troubleshooting wkhtmltopdf when the page appears compatible with its engine and the evidence points to content that loads late or to an accessible resource problem. Move to a modern browser renderer when the page relies on browser APIs the installed Qt WebKit build does not support, or when the same reproducible page remains blank after you have confirmed its resources and readiness.
The project’s status account discusses its dependence on WebKit1 and the historical state of that engine. This is useful context for compatibility decisions, not a formal current end-of-life notice: wkhtmltopdf project status.
Free tools Windows power users keep installed
One-click scans. No signup required.
Use Playwright when you need a browser-specific readiness check
Playwright can generate PDFs with page.pdf() and wait for a selector or other page-specific condition before capture. Its documentation discourages using networkidle as a general readiness signal; prefer checking for the actual content your application needs to render. PDF generation uses print CSS by default, so test styles, headers and footers, fonts, and page breaks against the intended output: Playwright PDF API and Playwright page waiting API.
For example, this Python outline waits for a page-specific selector before saving the PDF:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
page.goto("https://example.com")
page.locator("main article").wait_for()
page.pdf(path="output.pdf")
browser.close()
Rank #4
- Wireless Bluetooth Printer: Portable thermal printer compatible with iPhone, Android phones, iPad and tablet computers via Bluetooth. For smartphones, please download the "Nada Print" App. You can also connect to laptops and computers for printing using a USB-C cable. (Note: Laptops and computers can only be connected via USB and require the installation of a driver first. Bluetooth connection is not supported.)
- No-ink printing: Only supports US Letter and A4 size thermal paper.(Doesn't support regular paper) The no-ink portable thermal printer uses direct thermal technology, requiring no ink, toner or ribbons, making it environmentally friendly, cost-effective and time-saving. The thermal printer package comes with a roll of US Letter thermal printing paper. Note: When installing the paper, remember to switch the paper size switch on APP
- Clear Print: NDYIN N80 portable thermal printer adopts high-definition printing technology, with a 203DPI resolution to provide you with clear printing results. This mobile printer is compatible with roll paper, folded paper and tattoo transfer paper, supporting printing from your mobile phone PDF, Word, pictures and web pages anytime and anywhere. It is recommended to use our NDYIN thermal paper to achieve good printing quality
- Portable wireless printer for travel: The thermal printer is equipped with a built-in 1500mAh rechargeable battery, which can print 160 sheets of 8.5" x 11" thermal paper after being fully charged. It weighs only 1.5 pounds and is compact in size. This ink-free portable printer can be easily carried in a backpack or briefcase! It is perfect for business travel, cars, small offices, construction sites, schools and homes. You can print documents, contracts, invoices and boarding passes anytime and anywhere
- The N80 thermal printer has a wide range of uses. The package includes the N80 printer, a roll of US Letter paper(7m/roll), a user manual, a guide card, a type-C soft cable and a type C adapter. Note: The charging adapter is not included. Special thermal paper is required for use; ordinary paper cannot be used. This ink-free portable thermal printer is suitable for various scenarios such as home, school, travel, office, and outdoor, meeting the printing needs of different groups of people. This tattoo template printer is also compatible with tattoo transfer paper, making it an ideal choice for tattoo art
Replace the example URL and selector with the page and element that indicate your application is ready. This is a migration option, not evidence that every blank wkhtmltopdf page requires Chromium.
Common errors and practical fixes
| Symptom | What to check | Next step |
|---|---|---|
| Blank output with JavaScript errors in stderr | Whether the command disables scripts, and which scripts fail under the installed Qt WebKit build | Correct script or environment errors; if required browser features are unsupported, try a modern browser renderer. |
| Content appears only after the PDF is captured | When the page’s meaningful content becomes available | Test a modestly longer --javascript-delay, or use --window-status with a readiness value your page sets. |
| Images, fonts, styles, or data are missing | Whether the rendering machine can reach each resource and API, and whether authentication, cookies, or redirects are required | Make dependencies accessible to the renderer and verify that the page has loaded them before capture. |
| Longer delays do not change the blank result | Compatibility errors, failed resources, and whether the expected DOM content ever appears | Stop increasing the wait blindly; isolate the failure and consider a modern browser renderer if the page requires unsupported features. |
| Ignoring load errors still yields an empty PDF | Whether the underlying page or a required resource failed to load | Fix the failure rather than suppressing its handling; ignoring it does not supply missing content. |
Or skip the browser setup
If you need a screenshot or PDF without maintaining a local browser-rendering setup, ScreenshotNeo provides a website screenshot API and MCP server. For a PDF, its API accepts a URL and can return PDF output; see the ScreenshotNeo API documentation for request options.
Here is the one-call cURL example for a screenshot (replace the sample target URL and API key):
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
- Cookie or consent banners are accepted and removed before capture, along with known newsletter popups and chat widgets; each step can be turned off.
- Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed. Responses include
X-Page-VerdictandX-Billedheaders. - An MCP server lets AI agents use
take_screenshot,get_page_info, andcapture_pdf. - The free plan includes 1,000 screenshots per month without a card; paid plans start at $5 for 3,000 shots.
Sign up for ScreenshotNeo’s free plan to get 1,000 screenshots a month with no card.
Recommended Free Tools
Frequently Asked Questions
Does wkhtmltopdf run JavaScript by default?
Yes. JavaScript is enabled by default in the documented command-line options, unless your invocation or wrapper disables it.
Does a blank PDF prove that wkhtmltopdf is discontinued?
No. A blank result does not establish that, and the project status account is historical context rather than a formal current end-of-life 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.

