Rendral

Compare · WeasyPrint

A WeasyPrint alternative for HTML to PDF

WeasyPrint is a well-built, genuinely good open-source renderer, and its paged-media support is strong. But it implements its own CSS engine rather than embedding a browser — so support is a subset, and JavaScript isn't executed at all. If your template is charted, scripted, or leans on newer layout features, you find out at render time.

It also isn't dependency-free: it relies on native libraries such as Pango and its stack, which is a recurring source of install friction in slim containers and on Windows.

This renders on current headless Chrome — the same engine your designers preview in — with nothing to install. If your HTML looks right in a browser, it looks right as a PDF.

01Rendral vs WeasyPrint

WeasyPrint pricing at a glance: Free (open source) — you run it and its native dependencies.

FeatureWeasyPrintRendral
Rendering engineOwn CSS implementationHeadless Chrome
JavaScriptNot executedExecuted before capture
Native dependenciesPango and friendsNone
Modern CSS coverageA subsetWhatever Chrome supports
Who runs itYouHosted
Screenshots, OG images, mergeNot includedSame key

02Why teams switch

  • Charts and any JS-rendered content work, because the page actually runs.
  • No native libraries to install, pin, or debug in a slim image.
  • The PDF matches the browser preview, because it is the browser.
  • Screenshots, OG images, merge and watermark on the same API key.

Frequently asked

Is WeasyPrint bad?

Not at all — it's a solid project with excellent paged-media support, and if your templates are static HTML and CSS it may be all you need. The tradeoffs are its CSS subset, no JavaScript, and the native dependencies.

My template renders a chart with JavaScript. Will it work?

Not in WeasyPrint, which doesn't execute scripts. Here the page runs before capture, so a chart drawn client-side appears in the output.

How hard is migrating?

Usually a small change: replace the HTML(string=…).write_pdf() call with a POST carrying the same HTML. Page size and margins map to options.

Do I lose control over margins and page size?

No. Format, per-side margins, landscape, headers and footers are all exposed as options.

Related

Start rendering in minutes.

A free tier, five endpoints, and SDKs for Node and Python.