Keep Chromium’s output. Drop Chromium’s infrastructure.

A Puppeteer alternative for PDF generation — for teams done running browser fleets

Nobody chooses to run a headless-browser fleet. You needed PDFs, Puppeteer made beautiful ones on your laptop, and six months later your on-call rotation knows the shape of a Chromium OOM crash by heart. The rendering was never the problem — the infrastructure is.

What you’re actually operating

The same render, as one HTTP call

// Before: your service owns a browser fleet
import puppeteer from 'puppeteer';

const browser = await puppeteer.launch({
  args: ['--no-sandbox', '--disable-dev-shm-usage'], // and 12 more flags
});
const page = await browser.newPage();
await page.setContent(html, { waitUntil: 'networkidle0' });
const pdf = await page.pdf({ format: 'A4', printBackground: true });
await page.close();
// ...plus pooling, recycling, zombie reaping, memory alarms, Chromium upgrades
// After: the fleet is our problem
const res = await fetch('https://api.nippypdf.com/v1/pdf', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.NIPPYPDF_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    html,
    format: 'A4',
    print_background: true,
    wait_until: 'networkidle',
  }),
});
const pdf = Buffer.from(await res.arrayBuffer());

NippyPDF runs a managed pool of current Chromium instances — the same print pipeline as page.pdf() — behind POST /v1/pdf. Memory pressure, browser recycling and crash recovery are our pager, not yours. Pricing is pay-as-you-go at around $0.003/document with 500 documents/month free — compare that with the EC2/Lambda line item your PDF service bills you today.

Try your own template in the live demo, or grab a working sample in Node.js, Python, PHP, Ruby, C# or Go.

FAQ

Will the output differ from my current Puppeteer PDFs?

It should be near-identical: NippyPDF renders with the same engine family — headless Chromium — using the same print pipeline as page.pdf(). Options map one-to-one (format, margins, print backgrounds, wait conditions), so migration is usually mechanical.

When should I keep self-hosting Puppeteer?

Honestly: if you already have a hardened browser pool with monitoring, recycling and capacity headroom, and the ops cost is sunk, keep it. Self-hosting also wins if your HTML must never leave your network. NippyPDF is for the other 90% of teams, whose Puppeteer service exists only because PDFs were needed and nobody wanted to pay 12¢/doc.

What does Puppeteer PDF infrastructure actually cost?

Typical numbers: Chromium wants around 1–2GB of memory per instance under load and roughly a full CPU core per rendering page. On Lambda, that means high-memory functions, ~170–280MB of browser binary in layers or container images, and slow cold starts. The bigger cost is engineering time: OOM pages, zombie processes, memory-leak hunts and Chromium upgrades.

Is NippyPDF available today?

It is pre-launch. The waitlist is open, early-access keys go out in batches, and early signups lock in launch pricing of roughly $0.003 per document with 500 documents/month free.

Ready to hand off the browser fleet? NippyPDF is a managed Chromium rendering core behind a single POST /v1/pdf — no browser fleet, no page-break roulette, around $0.003/document.

Try the live demoJoin the waitlistKeeping Puppeteer for now? Fix the memory leaks →

Get early access to NippyPDF

Pre-launch. Join the waitlist and lock in early-access pricing — we email once, when your key is ready. No spam.