webcapture Get a free key

Puppeteer vs wkhtmltopdf

wkhtmltopdf was archived on Jan 2, 2023 and has received no fixes since. Puppeteer drives a maintained Chromium: modern CSS actually applies, JavaScript executes, web fonts load from the page. The comparison ends at support; the migration is mostly deleting the workarounds the old engine forced on you.

Puppeteer vs wkhtmltopdf: what each one is

Puppeteer: Node.js library that drives Chrome. Engine: headless Chromium via the Chrome DevTools Protocol. Ops: your code starts, pools, and crashes with the browser. Cost: free library, your infrastructure. Best for everything still being maintained.

wkhtmltopdf: the archived Qt WebKit command-line converter. Engine: WebKit-era, frozen in 2023. Ops: a native binary you build or fetch, no longer receiving fixes. Cost: free, unmaintained. Best for legacy environments pinned to very old Linux where a Chrome dependency cannot fit, and even there, plan the exit.

Puppeteer vs wkhtmltopdf at a glance

AspectPuppeteerwkhtmltopdf
EngineChromiumWebKit (archived)
Hostingyour Node processyour host's binary
JavaScriptexecutedpartial, era-frozen
Web fontsloaded from CSSinstalled on the server
Modern CSSyesno reliable flexbox or grid
Ops burdenbrowser lifecycle in codeunmaintained binary drift
Cost basisinfra onlyfree, unsupported
Best formaintained productsnothing new

A maintained engine against an archived one; support decides this comparison.

The verdict: when each one wins

Puppeteer wins: everything still being maintained; for flag-by-flag migration see the Python migration guide and its sibling languages.

wkhtmltopdf wins: only legacy environments pinned to old Linux that cannot carry a Chrome dependency, and even there, plan the exit.

Neither wins: anyone starting fresh has no reason to adopt an archived binary; if operating Chromium yourself is the concern, that is the hosted route (webcapture, same Chromium as Puppeteer, per-document pricing at our published pricing).

How this connects

Migrating either way, the flag table on the alternatives hub maps each old flag to its browser equivalent.

Wider than this pair: the capability matrix reads eight vendors across fourteen rows, each cell sourced from the vendor's own docs.

Going deeper: the formatting guide walks the breakages the old engine causes and the settings that fix them, the open-source comparison prices the free routes against hosted ones, and the webcapture product page states engine, pricing, and a curl quick start.

Frequently asked questions

Should I migrate from wkhtmltopdf to Puppeteer?

Yes, if the output still matters. wkhtmltopdf was archived on Jan 2, 2023 and its WebKit engine predates flexbox and grid; Puppeteer drives a maintained Chromium that applies both. The side-by-side table above is the short version.

Is Puppeteer a drop-in replacement for wkhtmltopdf?

Close to a rename, not a drop-in: page size, orientation, margins, and print background each map to one option on the print call. What changes is the engine underneath, so tuned templates deserve a visual check before cutover.

What breaks first in a wkhtmltopdf migration?

Two things: the smart-shrinking workarounds, which have no counterpart in Chromium and should be deleted rather than ported, and server-installed fonts, which the page's own web fonts replace. The formatting guide covers both.


More comparisons: Gotenberg vs Puppeteer, Gotenberg vs WeasyPrint, Gotenberg vs LibreOffice, webcapture vs PDFShift.

Method

Checked 2026-09-11: the wkhtmltopdf repository archive banner (Jan 2, 2023, read-only) and current Puppeteer documentation.

Render your first page in seconds

Mint a key, POST a URL, and the finished document comes back in the same response; pass ?wait=false for a job ticket with poll and download URLs. The first 50 renders a month are free, and there is no credit card. Not ready for a key? The free URL to PDF tool renders public pages without one.