Where wkhtmltopdf stands
None of this is opinion; each point is on the project's own record.
Archived
The GitHub repository was archived in January 2023 and the organization marked archived in July 2024. The last release, 0.12.6, shipped in 2020.
Unpatched critical flaw
CVE-2022-35583, a server-side request forgery rated 9.8 critical, remains open. An archived project ships no fixes, so rendering untrusted HTML with it is a standing risk.
A 2012-era engine
The renderer is a WebKit fork from roughly 2012 inside a Qt fork deprecated in 2015: no flexbox, no CSS grid, and JavaScript from the ES5 era.
Side by side
| KimiDoc | wkhtmltopdf | |
|---|---|---|
| Rendering engine | Current Chromium-class print engine | WebKit fork, circa 2012 |
| Flexbox, grid, modern CSS | Full support | Not supported |
| Maintenance | Actively developed | Archived January 2023 |
| Security fixes | Ongoing | None; critical SSRF unpatched |
| Runs on your servers | Yes, licensed per server | Yes |
| Hosted API | Yes, with a free tier | No |
| Templates with data merge | Built in, with sample data and an editor | Assemble the HTML yourself |
| Batch runs | Up to 40,000 documents per job, with retry and a manifest | One process per document |
| Encryption, watermarks, appending pages | Built in | External tools |
| Headers, footers, page numbers | CSS @page margin boxes and counter(page) | Separate HTML files via CLI flags |
When keeping wkhtmltopdf is reasonable
If your documents already render correctly, the input is generated entirely by your own code, and the binary runs isolated from untrusted traffic, wkhtmltopdf is a known quantity and there is no urgency. The risk concentrates where HTML or URLs come from users, and the ceiling shows wherever a design needs CSS written this decade.
Migrating your templates
- Render an existing template unchanged. A current engine renders your HTML more faithfully, not less; most documents come out identical or better. The editor's live preview shows you immediately.
- Map the flags you used. --orientation becomes the landscape option, -T/-B/-L/-R margins become marginsMm, --page-size becomes pageSize or an exact pageSizeMm.
- Replace --header-html and --footer-html with CSS. @page margin boxes repeat on every page and counter(page) / counter(pages) work natively, no separate files.
- Decide where it runs. Start on the hosted API free tier, or ask about a per-server licence and keep every document inside your own network, the reason many teams chose wkhtmltopdf in the first place.
Questions engineers ask
Is wkhtmltopdf still safe to use?
It depends on exposure. The project is archived, so CVE-2022-35583 (a critical server-side request forgery) will not be fixed. Rendering HTML that users can influence is the dangerous case; fully internal input on an isolated host carries less risk.
Will my existing HTML templates work in KimiDoc?
Yes. KimiDoc renders with a current Chromium-class engine, so HTML that renders in wkhtmltopdf renders here, and CSS it never supported (flexbox, grid) starts working. Headers and footers move from CLI flags into CSS @page margin boxes.
Can documents stay on our own servers like with wkhtmltopdf?
Yes. KimiDoc self-hosted runs the identical engine inside your network under a per-server licence, and the data never leaves it. Write to hello@kimidoc.com for the build and a licence.
Is there a free way to try it?
The hosted free tier renders 100 documents a month, and previewing templates in the editor is free and unmetered.
Related comparisons
PDFShift alternative
Documents instead of size-counted credits, self-hosting, and a lower price at every tier until the two meet at 50,000.
DocRaptor alternative
Web-standard rendering at a fraction of the per-document price, with self-hosting DocRaptor does not offer.
PDFBolt alternative
The same generous free tier; at paid volume KimiDoc costs less, bills annually, and can run on your servers.
Puppeteer alternative for PDF
The same Chromium-class output without operating the browser fleet, the queues or the crash recovery.
All comparisons
The full list, kept factual and current.
Try it against a real document
The editor previews are free and unmetered; the free tier renders 100 documents a month through the API.