Recommended Free Tools
Direct fix: install the wkhtmltopdf package that contains the wkhtmltoimage executable, confirm the executable is visible in the same environment as your application, or give IMGKit its full path. Installing the Python imgkit wrapper alone does not install that binary.
Fix the error in a few minutes
- Check discovery in the environment that runs your program. On Linux or macOS, run
which wkhtmltoimage. On Windows, runwhere wkhtmltoimage. - If the command prints no path, install a wkhtmltopdf distribution package for your operating system and CPU architecture. That distribution supplies
wkhtmltoimage. - If a path is printed but IMGKit still fails, pass the exact path explicitly with
imgkit.config(wkhtmltoimage='...'). - Run the executable directly with
wkhtmltoimage --version. If it starts but rendering fails, you have a dependency, font, input, or runtime problem rather than a “not found” problem.
IMGKit documents PATH-based discovery with which on Unix-like systems and where on Windows, while also supporting a custom executable path. See the IMGKit package documentation.
Why IMGKit says the executable is missing
There are two separate pieces:
imgkit: a Python wrapper that builds a command and launches it.wkhtmltoimage: the native command-line renderer that creates PNG, JPEG, or other image output.
pip install imgkit installs only the wrapper. It does not place the native renderer on your machine or in your container. The wrapper searches the process PATH unless you configure another location. A shell on your laptop can therefore find the program while a worker, service, virtual environment, container, or serverless function cannot.
Find the path in the same runtime as your application
Linux and macOS
which wkhtmltoimage
wkhtmltoimage --version
A successful first command returns an absolute path such as /usr/bin/wkhtmltoimage. An empty result means the shell cannot discover it. Test the exact account and environment used by the application; a service can have a different PATH from your interactive terminal.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →#1 Best Overall
- High-speed USB 3.0 performance of up to 150MB/s(1) [(1) Write to drive up to 15x faster than standard USB 2.0 drives (4MB/s); varies by drive capacity. Up to 150MB/s read speed. USB 3.0 port required. Based on internal testing; performance may be lower depending on host device, usage conditions, and other factors; 1MB=1,000,000 bytes]
- Transfer a full-length movie in less than 30 seconds(2) [(2) Based on 1.2GB MPEG-4 video transfer with USB 3.0 host device. Results may vary based on host device, file attributes and other factors]
- Transfer to drive up to 15 times faster than standard USB 2.0 drives(1)
- Sleek, durable metal casing
- Easy-to-use password protection for your private files(3) [(3)Password protection uses 128-bit AES encryption and is supported by Windows 7, Windows 8, Windows 10, and Mac OS X v10.9 plus; Software download required for Mac, visit the SanDisk SecureAccess support page]
Windows
where wkhtmltoimage
wkhtmltoimage.exe --version
Use the path ending in wkhtmltoimage.exe. If where finds nothing, install the Windows package or add the directory containing the executable to the service’s PATH.
Inspect from Python
import shutil
path = shutil.which("wkhtmltoimage")
print(path or "not found")
This checks discovery from Python, which is useful when a virtual environment or process manager modifies PATH.
Install the renderer for your operating system
| Platform | Documented route | Important qualification |
|---|---|---|
| Debian or Ubuntu | sudo apt-get install wkhtmltopdf |
Distribution builds may have reduced functionality because they can be compiled without wkhtmltopdf’s patched Qt. |
| macOS | brew install --cask wkhtmltopdf |
Confirm that Homebrew’s installation directory is on the PATH used by your application. |
| Windows | Use the Windows installer from the official downloads page. | Point IMGKit at the actual wkhtmltoimage.exe if the installer directory is not on PATH. |
| Other Linux distributions | Download the package matching the distribution and architecture from the official downloads page. | Do not assume a package built for another distribution, libc, or CPU architecture will run correctly. |
The downloads page lists packages for Windows, macOS, Debian, Ubuntu, AlmaLinux, CentOS, Amazon Linux, openSUSE, and Arch for particular releases. It identifies the 0.12.6 stable series as released June 11, 2020, so verify the current platform-specific package before deployment rather than copying an old URL or assuming every build is equivalent.
Tell IMGKit exactly where wkhtmltoimage is
Linux or macOS configuration
import imgkit
config = imgkit.config(wkhtmltoimage="/opt/bin/wkhtmltoimage")
imgkit.from_url("https://example.com", "example.png", config=config)
Replace /opt/bin/wkhtmltoimage with the path printed by which. The file must be executable by the account running your application.
Free tools Windows power users keep installed
One-click scans. No signup required.
Rank #2
- USB-C 2-in-1 storage OTG: The Lexar JumpDrive Dual Drive D40E features USB Type-A and Type-C connectors in a slim, portable form factor for easy device compatibility
- Transfer speeds up to 100MB/s: Based on internal testing, performance may vary depending upon the host device, interface, and usage conditions. 1MB=1,000,000 bytes
- Plug and Play: Widely compatible with USB Type-C smartphones, tablets, laptops, Macs, and traditional Type-A devices, no software installation required. The 360° swivel design allows for easy switching between connectors without the hassle of losing a cap
- Durable & Compact: The Lexar D40E USB memory stick features a metal enclosure, withstands temperatures from 0° to 50° C (32°F to 122°F), and is lightweight at 26g with dimensions of 70.4 x 16.9 x 11.7mm
- Security & Warranty: Securely protects files using an advanced security software solution with 256-bit AES encryption. Backed by a Lexar 3-year limited warranty
Windows configuration
import imgkit
config = imgkit.config(
wkhtmltoimage=r"C:Program Fileswkhtmltopdfbinwkhtmltoimage.exe"
)
imgkit.from_url("https://example.com", "example.png", config=config)
Use a raw Python string or escape backslashes. A path to the directory is not enough; the value must name the executable itself.
Verify the configured path before a capture
from pathlib import Path
binary = Path("/opt/bin/wkhtmltoimage")
if not binary.is_file():
raise FileNotFoundError(f"Missing renderer: {binary}")
This catches an incorrect mount or deployment path before IMGKit constructs a longer command.
Make the binary survive containers and serverless deployment
A successful installation on a development workstation, or in a Docker build stage that is discarded, does not put the executable in the deployed process. Ensure the final image or function bundle contains the binary, its required shared libraries, font configuration, and fonts.
Container checklist
- Install the package in the final runtime image, not only an intermediate builder image.
- Confirm the executable exists with
which wkhtmltoimageinside a running container. - Run
wkhtmltoimage --versionas the same non-root user that executes the application. - Check that the image’s distribution and CPU architecture match the package you installed.
- If PATH is intentionally minimal, use the absolute path in
imgkit.config.
Functions-as-a-service
The wkhtmltopdf project describes bundling a distribution-specific package with its libraries, configuration, and fonts. Its Lambda example uses an Amazon Linux 2 package and sets FONTCONFIG_PATH=/opt/fonts. Treat that as an example for that package and runtime, not a universal recipe for every provider. Build and test the function in an environment compatible with the provider’s operating system and architecture.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Rank #3
- GOOD VALUE PACKAGE - 1 Pack 32GB Memory Stick USB 2.0 Flash Drives with great cost performance and high quality.
- BIG CAPACITY - The available capacity: 29.10GB-29.8GB, You can save the data of movies, music, photos, designs, programs, manuals, handouts in a high speed.Good performance in digital data storing, transferring and sharing with families, friends, workmates, clients and machines.
- EASY TO USE & PLUG AND WORK - Support windows 7 / 8 / 10 / Vista / XP / 2000 / ME / NT Linux and Mac OS, Compatible with USB2.0 and below.
- TWISTTURN DESIGN & EASY CARRY - The metal clip rotates 360° round the ABS plastic body which with rubber oil skin feeling finish. The capless design can avoid lossing of cap, and providing efficient protection to the USB port.
- WARRANTY & SUPPORT - SIMMAX logo is laser printed on the USB connector surface, our products are of good quality and we promise that any problem about the product within one year since you buy.
Anecdotal Vercel reports show that an installation step can appear to succeed while the deployed runtime still raises OSError: No wkhtmltoimage executable found: "command not found". The discussion does not establish a confirmed provider-wide fix; use it as a reminder to inspect the final runtime rather than the build log alone: Vercel discussion 8268.
Separate “not found” from Xvfb and rendering failures
No wkhtmltoimage executable found
IMGKit cannot locate the renderer. Correct installation, PATH, permissions, or the explicit path.
No xvfb executable found
This is a different missing executable. IMGKit exposes an optional Xvfb setting for some headless server arrangements. Do not install Xvfb merely because wkhtmltoimage is missing. The wkhtmltopdf project describes its tools as headless and says they do not require a display service; follow the requirements of your particular setup. See the project overview.
The command starts, then exits with an error
Run the command IMGKit reports directly, substituting a simple URL and output file. This reveals missing shared libraries, font configuration, a bad option, a network problem, or a segmentation fault that the wrapper cannot explain. IMGKit’s README recommends inspecting the underlying command for this class of failure: IMGKit README.
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 errorsRank #4
- Lightweight and convenient: Lexar JumpDrive A30E (USB Type-A) boasts a slim, portable design for easy device compatibility; lightweight at 7.41 g
- Transfer speeds up to 100 MB/s: 10x faster than standard USB 2.0 drives; Based on internal testing, performance may vary depending upon the host device, interface, and usage conditions
- Wide compatibility: Compatible with tablets, laptops, Macs, and traditional Type-A devices, no software installation required; Reliably stores photos, videos & files
- Compact: Features a push-button retractor and a lanyard loop for on-the-go use
- Enhanced security: Lexar DataShield protects files, easily creates a password-protected safe with auto-encryption; Files deleted from the safe are securely erased and can't be recovered
/opt/bin/wkhtmltoimage https://example.com /tmp/example.png
Check libraries, fonts, architecture, and Qt support
- Libraries: even static-looking distributions can depend on system packages, font configuration, and FreeType-related components. An executable that is present can still fail to start when those dependencies are absent.
- Fonts: missing fonts or an incorrect
FONTCONFIG_PATHcan produce blank text, substitution, or failed rendering. Bundle the font configuration required by the selected package. - Architecture: match x86_64, ARM, and the operating system ABI. A binary compiled for another architecture is not fixed by adding it to PATH.
- Alpine Linux: the downloads page notes musl compatibility limitations. Prefer a package built for the actual base distribution or use a compatible runtime rather than forcing a glibc-oriented build.
- Patched Qt: some Debian and Ubuntu repository builds omit the project’s patched Qt and therefore have reduced functionality. If your options require patched-Qt behavior, verify the build before standardizing it.
Use the project’s package notes at wkhtmltopdf.org/downloads to choose by distribution, release, and architecture instead of copying a binary from an unrelated machine.
Security and operational precautions
The official project warns: “Do not use wkhtmltopdf with any untrusted HTML – be sure to sanitize any user-supplied HTML/JS, otherwise it can lead to complete takeover of the server it is running on!” Treat HTML, JavaScript, URLs, cookies, and headers supplied by users as untrusted input. Isolate the renderer, restrict outbound access where practical, and sanitize content before passing it to wkhtmltoimage.
For reliability, log the resolved executable path, version output, exit status, stderr, and the URL or template identifier (without secrets). Keep the binary and its fonts in the same release artifact so a rollback does not silently change rendering behavior.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Or skip the browser setup
If your goal is simply to obtain a dependable website screenshot rather than maintain wkhtmltoimage, ScreenshotNeo provides a website screenshot API and MCP server. One request returns a PNG, JPEG, WebP, or PDF without installing a browser binary.
Best Value
- Large Capacity and Fast Transmission : The USB flash drives available in 5 mixed colors, it's great for you to classify and store different files; The reading and writing speed of the USB 2.0 memory stick can reach more than 12MB/s and 5MB/s to ensure high-speed data transmission
- Retractable and Portable Design :The pen drive features a retractable connector for you to extend it from the body easily at the push of a thumb; The capless design eliminates the hassle of losing usb drive caps; Compact size and lanyard hole is convenient for you to attach to your keychain and carry everywhere
- Plug and Play : No need to install any software, just simply plug the memory stick into the port of your USB-compatible devices such as computer, laptop to start data storage or transmission; Thumb shape and non-slip sliding switch is convenient for you to hold and plug
- Wide Compatibility : Supports Windows 7/8/10 / Vista / XP / 2000 / ME / NT /Linux, Mac OS and TV, car, audio device with USB port.; 5 pcs 64GB thumb drives meet your most needs of daily storage for photos, music, videos and files
- What You Get : 5 Pack 64GB USB 2.0 Flash Thumb Drives (Mixed Colors: Black Red Blue Green Purple) and Technical Support; NOTE: The default format system of the 64GB usb stick is exFAT
cURL (see the ScreenshotNeo API documentation):
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Python:
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
Node.js:
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
Before capture, ScreenshotNeo accepts cookie or consent banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each cleanup step can be disabled. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers identify the page verdict and billing status. Its MCP server exposes take_screenshot, get_page_info, and capture_pdf for Claude, Cursor, and other MCP clients. The Free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000 screenshots. Create a free ScreenshotNeo account.
FAQ
Do I need the full wkhtmltopdf program to obtain wkhtmltoimage?
The project distributes the image renderer through its wkhtmltopdf platform packages. Use the package appropriate for your operating system, then verify that it places wkhtmltoimage where your runtime can execute it.
Why can a binary be present but still unusable?
Presence only proves that the file exists. The selected build may require libraries, font configuration, or an ABI and architecture your runtime does not provide, and some distribution builds differ in patched-Qt functionality.
Is the 0.12.6 package guaranteed to be current for every platform?
No. The downloads page labels 0.12.6 as its stable series with a June 11, 2020 release date, but package availability and compatibility are platform-specific. Check that page before each deployment.
Frequently Asked Questions
Can I solve the error by changing only Python’s import or virtual environment?
No. The import controls the wrapper, while discovery still depends on a native executable and the operating-system environment visible to the running process.
What should I preserve when moving a working installation to production?
Preserve the exact package family, architecture, executable path, shared libraries, font configuration, and fonts; then run the version and a real capture in the final runtime.
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.

