Rendral

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.

Featureself-hosted PuppeteerRendral
Rendering engineHeadless ChromeHeadless Chrome — identical
Who runs the browserYouWe do
Memory per render~200–400MB in your processNone on your side
Container imageChrome plus system librariesNothing added
Concurrency controlYou build a poolBuilt in, with rate-limit headers
Serverless friendlyFights the size limitOne fetch call
Screenshots, OG images, mergeBuild each yourselfSame 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

Start rendering in minutes.

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