HTML to PDF API
that just works
Send HTML or a URL and get back a PDF rendered by real headless Chrome. Flexbox, grid, web fonts, JavaScript charts and @page CSS all work. One endpoint, no browsers to babysit.
100 PDFs/month free. No credit card.
curl https://pdfloom.dev/v1/pdf \
-H "Authorization: Bearer $PDFLOOM_KEY" \
-H "Content-Type: application/json" \
-d '{"html": "<h1>Invoice #1042</h1><p>Total: $120.00</p>", "format": "A4"}' \
-o invoice.pdf
const res = await fetch("https://pdfloom.dev/v1/pdf", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.PDFLOOM_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ url: "https://example.com", format: "Letter" }),
});
await fs.promises.writeFile("page.pdf", Buffer.from(await res.arrayBuffer()));
import os, requests
r = requests.post(
"https://pdfloom.dev/v1/pdf",
headers={"Authorization": f"Bearer {os.environ['PDFLOOM_KEY']}"},
json={"html": open("report.html").read(), "margin": "20mm"},
)
r.raise_for_status()
open("report.pdf", "wb").write(r.content)
Real Chrome rendering
The same engine as your browser, so the PDF looks like the preview. Modern CSS, SVG, canvas, web fonts and emoji are all supported.
HTML or URL
Post a template you rendered server-side, or point us at a public page. We wait for the network to settle before printing.
Print controls
Paper size, margins, landscape, scale, page ranges, and header/footer templates with page numbers.
Nothing to run
No Puppeteer in your container and no zombie Chrome processes eating memory. One HTTPS call returns the PDF bytes.
Private by default
We don't store your documents. HTML is rendered in an isolated browser context and discarded.
Simple pricing
Flat monthly plans from $9 for 2,000 PDFs. No per-page fees, no credit packs that expire.
Pricing
Free
For trying things out and side projects
- 100 PDFs / month
- HTML and URL rendering
- Headers, footers, page numbers
- Community support
Starter
For apps sending invoices and reports
- 2,000 PDFs / month
- HTML and URL rendering
- Headers, footers, page numbers
- Email support
Pro
For growing products
- 10,000 PDFs / month
- HTML and URL rendering
- Headers, footers, page numbers
- Email support
Scale
For high-volume document pipelines
- 50,000 PDFs / month
- HTML and URL rendering
- Headers, footers, page numbers
- Email support
FAQ
What can I generate with it?
Invoices, receipts, reports, contracts, tickets, certificates, shipping labels, or exports of any web page. If it renders in Chrome, it prints to PDF.
Do you keep my HTML or PDFs?
No. The document is rendered in memory and returned in the response. We log only metadata (time, size, success) for usage counting.
Can I load images, CSS and fonts from my site?
Yes. Any public http(s) asset referenced in your HTML is fetched. Use absolute URLs, or inline them as data URIs.
What happens if I hit my monthly limit?
The API returns HTTP 429 until the next month, or until you upgrade.
Can I cancel anytime?
Yes. Plans are monthly, and you can cancel from the dashboard in two clicks.