Compare · self-hosted Puppeteer
A Puppeteer alternative for generating PDFs
Puppeteer is a genuinely great library, and page.pdf() produces exactly the output you want. The rendering was never the problem — the operations are. You inherit a Chrome process: a few hundred megabytes of RAM per page, browsers that leak if a render throws before close(), concurrency you have to cap yourself, and a binary to patch on every release.
That burden lands hardest in the places PDFs are usually generated: containers that now need a hundred-plus shared libraries, serverless functions fighting a size limit, and queue workers quietly OOMing at 3am.
This API is headless Chrome — the same engine, the same fidelity — with the process management already solved. If you're using Puppeteer purely to turn HTML into a document, it's one HTTP call instead.
01Rendral vs self-hosted Puppeteer
self-hosted Puppeteer pricing at a glance: Free (open source) — you pay in servers and operations.
| Feature | self-hosted Puppeteer | Rendral |
|---|---|---|
| Rendering engine | Headless Chrome | Headless Chrome — identical |
| Who runs the browser | You | We do |
| Memory per render | ~200–400MB in your process | None on your side |
| Container image | Chrome plus system libraries | Nothing added |
| Concurrency control | You build a pool | Built in, with rate-limit headers |
| Serverless friendly | Fights the size limit | One fetch call |
| Screenshots, OG images, merge | Build each yourself | Same key, ready |
02Why teams switch
- Same Chrome rendering, without owning the process lifecycle.
- No 50MB layer in Lambda and no Chrome in your Docker image.
- A warm pool and concurrency caps you didn't have to build.
- Idempotency keys, so a retried job can't produce a duplicate charge.
Frequently asked
Is the output actually the same?
Yes — this runs headless Chrome, the same engine Puppeteer drives. Fidelity is identical; what changes is who operates the browser.
When should I keep Puppeteer instead?
When you need real browser automation: multi-step flows, logging into a session, scraping, or end-to-end tests. Puppeteer is the right tool for driving a browser. This is for turning HTML into a document.
What does migrating look like?
Replace launch/newPage/setContent/pdf with a single POST carrying the HTML you were passing to setContent. The options map closely — format, margin, printBackground, headers and footers.
Can I still control headers, footers and margins?
Yes. The same knobs are exposed as options, including custom header and footer HTML and per-side margins.
Related
Reports PDF API
Turn dashboards, analytics and charts into shareable PDF reports via API.
Compare vs wkhtmltopdf
How wkhtmltopdf and Rendral differ on pricing, features, and setup.
PDFs in Java
A step-by-step guide to generating PDFs from Java.
A free tier, five endpoints, and SDKs for Node and Python.