v1 · now in beta

Template in. PDF out.

One HTTP call turns your HTML into a pixel-accurate PDF — rendered by real Chromium, with headers, footers, page numbers and any page size you need. Stop maintaining a headless browser you never wanted to own.

100 free renders / month · no card required

Quickstart
curl -X POST https://pdf.emberkit.dev/v1/render \
  -H 'Authorization: Bearer ek_live_...' \
  -H 'Content-Type: application/json' \
  -o invoice.pdf \
  -d '{
    "templateId": "invoice",
    "data": { "invoice": { "number": "INV-0184", "total": 9200 } }
  }'
What you get

The boring infrastructure, done properly

Running Chromium in production is a job nobody asked for: memory leaks, zombie processes, font packages, cold starts. We keep that, you keep an endpoint.

01

Real Chromium, not an approximation

Every render runs in headless Chrome, so flexbox, grid, web fonts, SVG and CSS print rules behave exactly as they do in your browser. What you design is what gets printed.

02

Handlebars templating built in

Send a template and a JSON payload instead of assembling HTML yourself. Currency, dates, arithmetic and table helpers ship with it — no more toFixed(2) scattered through your codebase.

03

Headers, footers and page numbers

Running blocks with live page numbers, dates and titles, with the page margin reserved for you automatically — the single most common reason a footer silently vanishes.

04

Any page geometry

A4 through A6, Letter, Legal, Tabloid, landscape, or an explicit width and height for receipts, labels and shipping slips. Page ranges and CSS @page sizes supported.

05

Tagged, accessible output

Tagged PDFs by default, with document metadata — title, author, subject, keywords — written into the file rather than left as whatever your HTML happened to say.

06

Diagnostics when it goes wrong

A blank page returns the console errors and the assets that failed to load. Debugging a render should take seconds, not a support thread.

Built for

Anything your product has to hand a human

Invoices and receipts. Statements and contracts. Lab reports, shipping labels, certificates, month-end packs. If it ends up attached to an email, it starts here.

Open the playground
Invoices & receipts
Line items, tax, running totals
Statements
Repeating table headers across pages
Reports
KPI blocks, charts, month-end packs
Certificates
Landscape, full-bleed backgrounds
Labels & slips
Custom page geometry, 80mm rolls
Contracts
Tagged output, page ranges, metadata
Pricing

Priced per render, not per seat

Every plan has the full API. The only thing that changes is how much you render. Prices are in Canadian dollars; Stripe converts and collects local tax at checkout.

Free
CA$0forever

Enough to build against.

  • 100 renders / month
  • Unlimited local PDF tools
  • Local downloads, no cloud save
  • All templates & options
Start free
Starter
CA$5per month

For one product in production.

  • 2,000 renders / month
  • 200 cloud saves / month
  • 30-day document history
  • Email support
Choose Starter
Most popular
Pro
CA$10per month

The one most teams land on.

  • 20,000 renders / month
  • 1,000 cloud saves / month
  • 90-day document history
  • Priority rendering queue
  • Support replies within 12 hours
Choose Pro
Scale
CA$25per month

High volume, predictable cost.

  • 150,000 renders / month
  • 5,000 cloud saves / month
  • 180-day document history
  • Support replies within 12 hours
Choose Scale

Sign up, get a working key in under a minute, and upgrade whenever the free tier stops being enough.

Render your first PDF in the next two minutes

The playground runs the same engine as the API — no key, no signup, nothing to install.

Open the playground