Last checked: 2026-10-20. Every wkhtmltopdf statement below links to the project's own GitHub repository or website. Rendlet is our product.
Short answer: wkhtmltopdf is free and runs offline, but its GitHub repository was archived by the owner on Jan 2, 2023, and the last release is 0.12.6 from June 10, 2020. Its own status page says it uses Qt 4, which hasn't been supported since 2015, with a WebKit that hasn't been updated since 2012. Rendlet is a hosted API that renders with a current headless Chromium, so you get modern CSS without running a browser yourself. In return you pay per volume above the free plan and send your HTML to our servers.
| wkhtmltopdf | Rendlet | |
|---|---|---|
| What it is | Command-line tool and C library you install and run (LGPL-3.0) | Hosted HTTP API: POST /v1/pdf |
| Maintenance | Repository archived (read-only) since Jan 2, 2023; latest release 0.12.6, June 10, 2020 | Actively developed (see the changelog); a new, small service |
| Rendering engine | Patched QtWebKit on Qt 4; the status page says that WebKit hasn't been updated since 2012 | Headless Chromium (@sparticuz/chromium build) for HTML; JSON templates are drawn with pdf-lib, without a browser |
| Untrusted HTML | The status page says: "Do not use wkhtmltopdf with any untrusted HTML", because it "can lead to complete takeover of the server" | Renders in an isolated serverless function with JavaScript disabled; only data: URIs and public https:// assets load (localhost and private-network IP addresses are blocked) |
| JavaScript in the page | Supported (--enable-javascript, --javascript-delay) | Not supported: JavaScript is disabled. Render your charts or data into the HTML first. |
| Headers, footers, table of contents | Built in (--header-html, --footer-html, toc) | Not built in; use CSS in your HTML. Page size (A4, Letter, Legal, A3, A5), landscape and margins are options. |
| Cost | Free; you run and patch the servers | Free plan: 100 docs/month, up to 10 pages. Paid: $7 (1,000), $19 (5,000), $59 (25,000) per month, hard caps, no overage billing |
| Data location | Stays on your machine | Your HTML is sent to Rendlet (hosted on Vercel); see privacy |
| Chinese text | Uses fonts installed on your server | Noto Sans SC is built in (Latin plus the 6,763 common GB2312 characters) |
| Extras | Can also render images (wkhtmltoimage) | Invoice and itinerary JSON templates, base64 JSON responses for agents, OpenAPI 3.1, an MCP endpoint |
The wkhtmltopdf maintainer also suggests alternatives on the status page: WeasyPrint or Prince for reports from HTML you control, and Puppeteer for pages that use dynamic JavaScript. If you'd rather run Chromium yourself, see Rendlet vs self-hosted Puppeteer.
# before
wkhtmltopdf --page-size A4 -T 15mm -B 15mm -L 15mm -R 15mm invoice.html invoice.pdf
# after (jq builds the JSON body; works as-is with the public sandbox key)
jq -n --rawfile h invoice.html '{html:$h,options:{format:"A4",margin:"15mm"}}' |
curl -s -X POST https://rendlet.com/v1/pdf \
-H "Authorization: Bearer ${RENDLET_API_KEY:-sandbox}" \
-H "Content-Type: application/json" --data-binary @- -o invoice.pdf
Local file references (file://, relative image paths) won't load on Rendlet. Inline images as data: URIs or host them on a public https:// URL.
puppeteer-core and @sparticuz/chromium on Vercel functions.