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.

If you use Python’s pdfkit wrapper, pass verbose=True to your conversion call to expose wkhtmltopdf’s output. If you run wkhtmltopdf yourself, use --log-level info to show its normal diagnostic messages. Neither setting promises to create a log file: it makes process output available, while saving it depends on how your application or shell captures that output.

First confirm which “PDFKit” you mean. The instructions below focus on Python pdfkit calling wkhtmltopdf, with a separate note for the Ruby gem. The JavaScript PDFKit library is a different project and is not documented as a wkhtmltopdf wrapper.

Identify the PDFKit package and wkhtmltopdf binary

“PDFKit” is not a unique package name. Python pdfkit and Ruby’s PDFKit can act as wrappers around wkhtmltopdf; the JavaScript PDFKit library generates PDF documents directly and is a separate project. Before changing logging settings, verify the language, package, and executable used by the same program environment that is failing.

Check the environment that runs the conversion

A terminal on your workstation may use a different wkhtmltopdf executable from a service, container, scheduled job, or other runtime. Check the resolved executable path and version where the failure occurs, not only in an unrelated local shell. This matters because an option accepted by one build may be rejected by another, and a wrapper may be configured to use a specific binary.

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

For Ruby PDFKit, the project documents configuring wkhtmltopdf to an explicit path when automatic discovery is unsuitable. For Python, inspect the command generated by the wrapper if the executable or arguments are unclear; the Python package documentation recommends that approach when debugging.

Show wkhtmltopdf output from Python pdfkit

Python pdfkit runs wkhtmltopdf quietly by default. Set verbose=True on the conversion call when you need to inspect the converter’s messages:

import pdfkit

pdfkit.from_url(
    "https://example.com",
    "out.pdf",
    verbose=True,
)

This is a minimal conversion example: it asks the wrapper to capture the URL as a PDF and expose wkhtmltopdf output instead of using the normal quiet behavior. Replace the URL and output filename with your own inputs. The package documentation recommends inspecting the resulting output for clues when PDF generation fails or produces an unexpected result.

Use the wrapper output as evidence, not as the whole diagnosis

Read the messages alongside the exact input URL or HTML, the conversion options, and the environment in which the call ran. A generic wrapper exception does not identify every possible cause. The package documentation notes that command failures can have multiple causes, including segmentation faults on some versions.

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

If the wrapper fails or the PDF is wrong, inspect the generated command with the Python package’s PDFKit(...).command() method, then run that command directly. Keep the generated arguments intact for the comparison. If direct execution also fails, the issue is reproducible at the converter level; if it behaves differently, compare the runtime, binary path, arguments, and output capture between the direct and wrapped executions.

Choose a wkhtmltopdf log level for direct runs

When you invoke wkhtmltopdf yourself, its documented --log-level values are none, error, warn, and info. The documented default is info. Use info while investigating ordinary conversion behavior, or select error or warn if you need less output.

wkhtmltopdf --log-level info input.html output.pdf

For an existing URL-based command, the same option can be placed among its arguments, for example:

wkhtmltopdf --log-level info https://example.com out.pdf

The -q / --quiet option is retained for backwards compatibility and is equivalent to --log-level none. It suppresses converter messages, so remove it while diagnosing. If --log-level is rejected, check that installed binary’s --extended-help or --help; supported options can vary by build.

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

Keep output visible while reproducing

Run the command in a context where you can see its process output. If you need a durable record, arrange for the surrounding shell, job runner, service, or application to capture process output. For example, in a shell you can redirect both standard output and standard error to a file:

wkhtmltopdf --log-level info input.html output.pdf > wkhtmltopdf.log 2>&1

This redirection captures the process streams; it does not establish that every wkhtmltopdf build or wrapper sends every diagnostic to one particular stream. When using a wrapper, its runtime and logging configuration determine how output is exposed and persisted. Do not assume that turning on verbosity alone creates a file at a standard location.

Find where logs are stored—or arrange to keep them

There is no universal wkhtmltopdf or pdfkit log-file path established by the package and command documentation. The documented behavior is about converter output and how the wrapper exposes it, not an automatic log-file destination.

  • Running from a terminal: inspect the visible process output, or redirect the process streams as part of the command.
  • Running through an application or job runner: check where that surrounding system captures process output. The location depends on its configuration.
  • Running through Python pdfkit: enable verbose=True and inspect what the wrapper exposes. Configure the application to persist that output if you need it after the run.
  • Running through Ruby PDFKit: use the installed gem’s configuration and verbosity behavior; do not assume Python’s call syntax or output handling applies.

If no output was captured during the failed run, enabling verbosity later cannot recover those earlier messages. Reproduce the conversion with output enabled and capture it at the process or application boundary.

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

Ruby PDFKit and JavaScript PDFKit are different cases

Ruby PDFKit

The Ruby PDFKit project documents PDFKit.configure, a configuration option for the wkhtmltopdf executable path, and a verbose configuration option. Use the syntax appropriate to the installed gem rather than copying the Python verbose=True argument. If the gem finds the wrong binary, configure the intended path and verify that path in the same runtime that performs the conversion.

JavaScript PDFKit

The JavaScript PDFKit project is a Node/browser library for generating PDF documents directly. Its project description does not identify it as a wkhtmltopdf wrapper. If your application uses that library, wkhtmltopdf’s --log-level options and Python or Ruby wrapper settings are not a reliable guide to its diagnostics. Identify the exact package before searching for a converter log.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshoot common logging problems

No messages appear from Python

Confirm that verbose=True is set on the conversion call that actually runs, and check whether the application captures or suppresses the output. Python pdfkit’s normal behavior is quiet, so a call that omits the option will not expose the converter output in the same way.

The command says an option is unknown

The installed wkhtmltopdf build may not accept the option. Check that executable’s --help or --extended-help, and verify that you queried the binary used by the failing runtime rather than a different installation.

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

The wrapper reports failure but the cause is unclear

Inspect the generated command using the Python wrapper’s PDFKit(...).command() method and run it directly. Preserve its arguments, enable an appropriate log level, and compare direct and wrapper results. A wrapper exception alone may not distinguish converter behavior from wrapper or environment differences.

The PDF is incomplete or visually wrong

Capture the converter output while reproducing the exact input and options. Then compare the direct command with the wrapper-generated command. This isolates whether the same invocation fails outside the wrapper; it does not, by itself, prove a particular cause. Record the PDF result and the diagnostic output rather than relying on the exception text alone.

You cannot find a log file

Do not assume a fixed location. Look at the output destination configured by the application, service, container, or job runner. If none is configured, rerun the job while capturing its process output. Verbose mode and durable logging are separate concerns.

Prepare a useful wkhtmltopdf issue report

The wkhtmltopdf project’s issue-reporting guidance asks for the wkhtmltopdf version, operating system and version, and a detailed description with a test case that reproduces the problem. Include the relevant command and options plus the captured diagnostic output when available. This gives someone investigating the issue a way to distinguish a reproducible converter problem from differences in environment or invocation.

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.
  • Record the executable path and version from the failing runtime.
  • Include the smallest input or URL that still reproduces the result.
  • Include the exact command or wrapper options and the observed output.
  • Describe what you expected and what the generated PDF actually contains.

Or skip the browser setup

If your goal is to inspect a webpage visually rather than diagnose wkhtmltopdf or debug PDF conversion, ScreenshotNeo can return a website screenshot or PDF through one GET request. It is not a wkhtmltopdf log viewer and does not replace the diagnostic workflow above. Its API can be useful when you want a capture without setting up a browser yourself.

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

ScreenshotNeo accepts cookie or consent banners like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each step can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and responses indicate the page verdict and billing status in headers. Its MCP server gives AI agents tools for screenshots, page information, and PDF capture. The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 shots.

Sign up for 1,000 free screenshots a month, with no card.

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.

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