Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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

  1. Check discovery in the environment that runs your program. On Linux or macOS, run which wkhtmltoimage. On Windows, run where wkhtmltoimage.
  2. If the command prints no path, install a wkhtmltopdf distribution package for your operating system and CPU architecture. That distribution supplies wkhtmltoimage.
  3. If a path is printed but IMGKit still fails, pass the exact path explicitly with imgkit.config(wkhtmltoimage='...').
  4. 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#1 Best Overall
SANDISK 128GB Ultra Flair, USB-A Flash Drive, Up to 150MB/s Read Speeds
  • 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #2
Lexar D40E 128GB Dual USB 3.2 Gen 1 Type-C Jump Drive, Champagne Silver
  • 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 wkhtmltoimage inside a running container.
  • Run wkhtmltoimage --version as 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
SIMMAX 32GB Memory Stick USB 2.0 Flash Drives Swivel Thumb Drive Pen Drive (32GB Purple)
  • 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #4
Lexar A30E USB 3.2 Gen 1 Flash Drive 64GB 3-Pack
  • 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_PATH can 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.Support on Ko-Fi

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Best Value
RAOYI 5 Pack 64GB USB Flash Drive, USB 2.0 Memory Stick Thumb Drives Jump Drive Pen Drive for PC Laptop Computer - 64G Multipack
  • 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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

Bestseller No. 1
SANDISK 128GB Ultra Flair, USB-A Flash Drive, Up to 150MB/s Read Speeds
SANDISK 128GB Ultra Flair, USB-A Flash Drive, Up to 150MB/s Read Speeds
Transfer to drive up to 15 times faster than standard USB 2.0 drives(1); Sleek, durable metal casing
$25.36
Bestseller No. 4
Lexar A30E USB 3.2 Gen 1 Flash Drive 64GB 3-Pack
Lexar A30E USB 3.2 Gen 1 Flash Drive 64GB 3-Pack
Compact: Features a push-button retractor and a lanyard loop for on-the-go use
$33.99

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.