Skip to content

HTML in, PDF out.Nothing kept.

A PDF and screenshot API for developers. Send HTML, a URL or a template with JSON; the PDF comes back in the same response.

100 renders a month free. No card needed.

stored: nothing<html> inPDF out
Rendered in memory
Chromium gets your HTML and the PDF goes straight back in the response.
Never written to disk
No file, no database row, no log line with your content. A test fails if that ever changes.
Signed on every response
pagenull-retention: none and an Ed25519 receipt for the exact bytes you got back.

Paste HTML, get the PDF

The same Chromium as the API, in your browser. No sign-up; JavaScript and outside requests are off here.

3.0 of 100 KB

Edit anything and render again (Ctrl+Enter). JavaScript and outside requests are off here; Inter and Source Serif 4 are built in.

PDF
Your PDF appears here. Press “Render PDF”.

Your HTML goes to Chromium in memory and the PDF comes straight back. Neither is written to disk or logged.

What we store: nearly nothing, and never your documents

Invoices, contracts, medical letters and payslips go through PDF APIs. Ours is built so there is nothing to leak: what you send is rendered and forgotten.

Kept

Account data, to run the service
  • Your email address and a password hash
    To log you in.
  • API key hashes and a 12-character prefix
    To check keys and let you tell them apart (pm_live_ plus 4). We can't show a key again.
  • Monthly render counts per account
    For quotas and billing.
  • Request metadata for 30 days
    Key id, time, endpoint, status, size and duration. For your usage page and abuse limits.
  • Templates you save
    Encrypted at rest with AES-256-GCM. Delete them any time.

Never kept

Everything in your documents
  • The HTML you send
    Held in memory while Chromium renders, then dropped.
  • URLs you render
    Not logged, not stored.
  • Template data (the JSON you merge in)
    Used once for the render, never written anywhere.
  • The PDFs and images you get back
    Streamed to you, or uploaded to your own bucket. No copy kept, and no option to keep one.
  • Request bodies in logs
    The logger only accepts metadata fields. Content can't reach it.

The details, including sub-processors and how deletion works, are on privacy & security.

Save the layout once, send JSON for each document

Store a receipt or invoice template with {{variables}}, then render it with each order. The template is encrypted at rest; the order data is used once and dropped.

curl https://api.pagenull.dev/v1/templates/receipt/render \
  -H "Authorization: Bearer $PAGENULL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "data": {
    "shop": "Fieldnote Supply",
    "receiptNo": "R-55821",
    "total": "€42.00",
    "items": [
      {
        "qty": 1,
        "name": "Fineliner set",
        "price": "€12.00"
      }
    ]
  }
}' \
  -o receipt.pdf
Loading preview…

Every option, on one sheet

The parts of a request you'll actually reach for. Pass them in the JSON body.

Source

html
Render this HTML.
url
Load a page instead. Private, loopback and metadata addresses are refused, after every redirect.

Page

format
Paper size, or let a CSS @page rule decide.
width, height
Custom size. "auto" fits one page to the content, for receipts.
margin
In mm, cm, in or px.
pageNumbers
Numbers every page.
headerHtml, footerHtml
Repeated on every page.

Loading

waitFor
Capture once your chart or script has marked itself ready.
javascript, allowNetwork
Turn page scripts off, or block every outside request.

Output

/v1/screenshot
Images of the same HTML or URL.
/v1/invoices
EU e-invoices from JSON, with the EN 16931 XML embedded. Checked with Mustang and veraPDF in our tests.
deliverTo
Upload to your own bucket instead of the response. We keep no copy.
test
Watermarked, free, not counted.

One render is one render

No seats, no template limits, no storage fees. Failed and test renders are free.

Pricing detailsPrices are placeholders
Free
€0
100 renders a month
Starter
€9
3,000 renders a month
Growth
€29
15,000 renders a month
Scale
€79
50,000 renders a month
Volume
€199
200,000 renders a month
Custom
Ask
More than 200,000? Email us

Fair questions

Why not just run Puppeteer myself?

You can, and for a few trusted documents it's fine. The work is in what comes after: font packs for every script, Chromium memory and restarts, timeouts, and blocking pages from reaching your internal network. That's what you pay us to handle.

What if I need to store the PDF?

Store it yourself, where your other records live. Return it in the response, or pass deliverTo with a presigned URL and we upload it straight to your bucket. We keep no copy either way.

How do I debug if you keep nothing?

Each response carries a render id and a pagenull-warnings header that names problems such as missing glyphs, overflowing content or images that failed to load. Use test renders, which are free, while you work on a template.

Your first PDF is one curl command away

Get a free API key