Rendlet vs self-hosted Puppeteer

Last checked: 2026-10-20 (Puppeteer docs for v25.14.0). Every Puppeteer statement links to the official docs. Rendlet is our product, and it runs Puppeteer under the hood.

Short answer: Puppeteer is free (Apache-2.0) and gives you full control of a real browser. To print PDFs with it, though, you run and maintain Chrome yourself: the installation guide says it downloads Chrome for Testing (about 170 MB on macOS, 282 MB on Linux and 280 MB on Windows) plus a chrome-headless-shell binary. The troubleshooting guide notes that the bundled Chrome is missing shared libraries in Docker. Rendlet wraps that same setup in one HTTP call, with a free plan of 100 documents a month. If you need page JavaScript, logins, URL capture or screenshots, Puppeteer is the better tool.

Side by side

Self-hosted PuppeteerRendlet
What you runA Node.js service plus a Chrome binary, on your servers or in a containerNothing: POST https://rendlet.com/v1/pdf
Browser downloadChrome for Testing: ~170 MB macOS, ~282 MB Linux, ~280 MB Windows, plus chrome-headless-shell (docs)None on your side
Linux and Docker setupYou install Chrome's system libraries; in Docker "the bundled Chrome for Testing that Puppeteer installs is missing the necessary shared library dependencies" (docs)Handled. Rendlet uses puppeteer-core with a serverless Chromium build on Vercel.
Install scriptsPackage managers that block install scripts (pnpm, Yarn Berry, Bun, Deno, and npm under a new RFC) skip the browser download, and launch fails with "Could not find Chrome" (docs)Not applicable
ControlFull: run JavaScript, log in, wait for selectors, capture any URL, take screenshots, set header/footer templatesHTML string or JSON template in, PDF out. JavaScript is disabled, there is no URL mode, and only data: and public https:// assets load.
LimitsYour hardwareSandbox 1 page; Free 10 pages, Starter 50, Pro 200, Scale 500 per document; HTML up to 1–2 MB; 10–120 requests per minute by plan
CostFree software; you pay for the compute and the upkeepFree: 100 docs/month. Paid: $7 (1,000), $19 (5,000), $59 (25,000) per month, hard caps, never billed for overage
Data locationStays in your infrastructureYour HTML is sent to Rendlet (hosted on Vercel); see privacy
ExtrasThe whole Chrome DevTools ProtocolBuilt-in invoice and itinerary JSON templates (no browser needed), Noto Sans SC for Simplified Chinese, base64 responses for agents, OpenAPI 3.1, MCP endpoint

When to self-host Puppeteer

When a hosted API is simpler

The same PDF both ways

// Puppeteer (self-hosted)
import puppeteer from "puppeteer";
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setContent(html, { waitUntil: "networkidle0" });
const pdf = await page.pdf({ format: "A4", margin: { top: "15mm", right: "15mm", bottom: "15mm", left: "15mm" } });
await browser.close();

// Rendlet (hosted): no browser to install
const res = await fetch("https://rendlet.com/v1/pdf", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.RENDLET_API_KEY ?? "sandbox"}`, "Content-Type": "application/json" },
  body: JSON.stringify({ html, options: { format: "A4", margin: "15mm" } }),
});
const pdf2 = Buffer.from(await res.arrayBuffer());

More snippets (curl, Node.js, Python) are on the sandbox page. Moving from wkhtmltopdf instead? See Rendlet vs wkhtmltopdf.

Sources (checked 2026-10-20)

Try it on your own HTML. The sandbox renders a real PDF with no signup (5 a day, 1 page, watermarked). A free key gives 100 documents a month with no watermark.

Open the sandbox →   Get a free key · Pricing