PDFPipe

Playwright PDF API

Playwright-quality PDF generation, delivered as an API

Playwright is excellent for driving Chromium, but page.pdf() in production means you operate a browser fleet: cold starts, memory growth, crashes under concurrency, and the chromium-only constraint that pdf generation requires. Get the same Chromium rendering over HTTP and skip the operations.

page.pdf() only runs on Chromium, and only well at small scale

Playwright PDF generation is Chromium-only, and scaling it means pooling browsers, recycling them, and bounding concurrency so renders do not time out or crash. That is infrastructure work, not product work.

Call the API instead of launching a browser

JavaScript
// Replace browser.pdf() with one request
const res = await fetch("https://api.pdfpipe.xyz/v1/pdf", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.PDFPIPE_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ html, options: { format: "A4" } }),
});
const pdf = Buffer.from(await res.arrayBuffer());

What moves off your plate

No browser fleet

No launching, pooling, or recycling Chromium instances on the request path.

No crash recovery

Timeouts, tab crashes, and orphaned processes stop being your problem.

Elastic scale

Rendering scales independently of your app and bills per document.

Keep the parts you like

  • Use Playwright for tests and automation, the API for production PDFs.
  • Same modern CSS, web fonts, and accurate page breaks.
  • Send raw HTML, a URL, or a template plus JSON data.
  • Batch endpoint and webhooks for high-volume jobs.

Frequently asked

Can Playwright generate PDFs?

Yes, with page.pdf() on Chromium. It works well for a few documents, but scaling it in production requires browser pooling, recycling, and concurrency control. A PDF API removes that operational layer.

Why is Playwright PDF generation Chromium only?

PDF output relies on the Chromium print pipeline, so Firefox and WebKit are not supported. A rendering API uses a Chromium engine for you, so you do not manage that constraint.

How do I scale Playwright PDF generation?

Run a managed pool of browsers with strict recycling and concurrency limits, or offload rendering to an API that already does this and bills per document.

Is the output identical to Playwright?

It uses the same browser engine, so fonts, CSS, and pagination match what page.pdf() produces.

Related reading

These pages cover related search intents. Pick the one that matches what you are building.

500 free documents a month, flat pricing after that, and a live playground you can try without signing up.