The wkhtmltopdf alternative to pick depends on who you want running the renderer. If your team already runs browser services, headless Chromium through Puppeteer or Playwright gives you full control in code. If your documents lean on print CSS, WeasyPrint and Prince read it well. If you'd rather not run or patch a PDF engine at all, a hosted PDF API such as thirds.ai takes your HTML and sends back the PDF. Whatever you pick, convert one document first and compare it with the old output, because a new engine can change page breaks and fonts even when the HTML stays the same.
Read the setup prompt
Help me follow https://thirds.ai/blog/wkhtmltopdf-alternative-html-to-pdf in ChatGPT or Claude. Read its linked thirds.ai docs before giving steps. Keep API keys and webhook secrets out of chat. Compare wkhtmltopdf and a hosted PDF API using one document I already make. Ask for sample HTML and the page breaks and fonts I need to keep. Help me check both outputs. Before spending credits, tell me the cost and wait for my approval.
With thirds.ai, the PDF you get back looks like a designer laid it out, in your own brand. You turn the HTML you already have into a saved template, or start from one in our gallery. The renderer and its security patches stop being your job, because thirds.ai runs it for you, and your app, a teammate in the editor, or ChatGPT or Claude can all make the next invoice from the same saved design.
Is wkhtmltopdf deprecated?
Yes, wkhtmltopdf is no longer maintained. GitHub shows its main repository as archived and read-only since 2 January 2023, and the last release is still 0.12.6, from June 2020. The maintainer's status page says the Qt WebKit engine inside it stopped getting development after 2012. We checked both pages on 2 October 2026.
An archived tool doesn't stop working the day it's archived. It does stop getting security fixes, and a renderer that opens HTML is exactly the kind of software that needs them. That's the real reason to move.
Which wkhtmltopdf alternative fits your project?
Each wkhtmltopdf alternative trades control for upkeep. Running a browser yourself gives you the most control and the most to maintain, while a hosted service takes the upkeep away and adds tools around the PDF, such as an editor and saved templates. A print engine sits between them when paged output matters most.
| Alternative | What you get | Who runs it |
|---|---|---|
| Headless Chromium with Puppeteer or Playwright | Open-source libraries that drive a real browser and print the page to PDF | You |
| WeasyPrint | A free Python engine for printed pages, with no browser engine inside | You |
| Prince | A commercial engine built around paged media, sold under a licence | You, with a paid licence |
| A hosted PDF API, such as thirds.ai | A service that runs the renderer, keeps your templates, and returns the PDF | The service |
Puppeteer and Playwright. Both print a page with one call. The Puppeteer PDF guide (version 25.12.0, read on 2 October 2026) shows Page.pdf() and notes that it waits for fonts to load by default. You get a current browser engine, so your HTML comes out the way Chrome shows it today. The cost is everything around the browser. Our Puppeteer and Playwright comparison lists the browser, security, and upgrade work you take on, and self-hosted Puppeteer against a PDF API helps you put a monthly number on it.
WeasyPrint. It's free under the BSD licence, needs Python 3.10 or newer, and its documentation says it isn't built on a full rendering engine like WebKit or Gecko (read on 2 October 2026). That keeps it light and focused on printed pages, and it means a layout that depends on a browser quirk can come out differently.
Prince. It's built for long, print-grade documents. Its paged media guide covers running page headers and footers, footnotes, and control over page breaks (read on 2 October 2026). On its purchase page, checked on 2 October 2026, a desktop licence is USD 495 and a server licence is USD 3,800 (vendor prices). You can also get Prince as a service through DocRaptor, which our DocRaptor comparison covers.
A hosted PDF API. We think this fits most teams who used wkhtmltopdf for repeat documents such as invoices and reports. That's our judgment. You send HTML or fill a saved template, and the service keeps the engine patched and scaled. thirds.ai uses a pinned Chromium, so your PDF matches what Chrome shows, and the same saved template can be filled in the editor, from ChatGPT or Claude, or for a whole spreadsheet at once. The ranked list of HTML to PDF APIs compares the hosted options side by side.
Is wkhtmltopdf safe to use?
wkhtmltopdf isn't safe with HTML you don't fully control. Its own status page says not to use it with any untrusted HTML, because user-supplied HTML or JavaScript can lead to a complete takeover of the server (checked 2 October 2026). If your PDFs hold anything a customer typed, such as a name, an address, or a note, that warning covers you.
A hosted renderer moves that risk off your servers and into a sandbox built for it. thirds.ai runs every PDF under hard time, memory, and size limits, so one bad document can't take the service down. Your logos and pictures live as private account files, so the HTML you send holds no secrets.
How to make it
Start with one document, and start from the easiest path for you. The Client invoice template below gives you a finished invoice design to test the new engine with, so your first comparison doesn't depend on your own CSS.

In the studio, click Use this template, open the Data tab, and type your business, your client, and the line items. Click Export, then Save and export PDF. Open the PDF next to your old wkhtmltopdf file and compare the pages. To start from the HTML you already give wkhtmltopdf, open Use your HTML, paste it, and export the same way. How to make a template you can reuse walks through the rest of the editor.
If you work in ChatGPT or Claude, connect thirds.ai and give the assistant your current invoice HTML and your brand colours. Ask it for a template that matches your old layout, then ask for an invoice in plain words. When your records sit in a spreadsheet, paste the rows into Batches and get one PDF for each row in a ZIP, which is a quick way to remake a month of invoices for a side-by-side check.
Your app swaps the local command for one HTTPS request. Where you ran wkhtmltopdf --page-size A4 invoice.html invoice.pdf, you now read the file in your code and send its text to POST /v1/pdf. The migration guide maps every common option, including margins, orientation, headers and footers, and JavaScript settings, and names the options with no match. The quickstart shows the request in curl, Node, and Python. A free account gets 50 PDFs a month, enough to test the whole migration before you pay.
{
"html": "<!doctype html><html lang='en'><body><h1>Invoice 1042</h1><p>Total: USD 120.00</p></body></html>",
"pdf": {
"format": "A4",
"margins": {
"top": "10mm",
"right": "10mm",
"bottom": "10mm",
"left": "10mm"
},
"print_background": true
}
}
Compare the old and new PDF at the same zoom, and look hardest at the page breaks and the longest item name. When the first document matches, move on to the next one.
What is the best alternative to PDF?
Keep PDF when the reader needs fixed pages to print, sign, or store. Use a web page when the content should adapt to the screen, or a PNG, JPEG, or WebP when you need one picture, such as a social card or an ad. The format isn't what broke, though. If your PDFs look wrong, change the renderer and keep the document. thirds.ai makes all four formats from the same template, so one invoice design can also give you a matching receipt image. Open the HTML to PDF page to see the whole flow.


