Deckle
Now in public beta

HTML in. Pixel-perfect PDFs out.

Generate invoices, reports, and certificates from HTML, React, or templates. One API call, milliseconds.

1,000 PDFs/month free. No credit card required.

typescript
import { Deckle } from 'deckle';

const client = new Deckle(process.env.DECKLE_API_KEY!);

const pdf = await client.generate({
  html: '<h1>Invoice #1042</h1><p>Total: $69.98</p>',
  options: { format: 'A4' }
});

console.log(pdf.url);
// → https://cdn.getdeckle.dev/gen_abc123.pdf
json
{
  "id": "gen_abc123",
  "status": "completed",
  "url": "https://cdn.getdeckle.dev/gen_abc123.pdf",
  "pages": 1,
  "file_size": 24531,
  "generation_time_ms": 287
}

Three steps to your first PDF

No headless browsers to manage. No complex setup. Just your content and one API call.

01

Write Your Template

Use HTML, React components, or Handlebars templates. Design exactly the PDF you want with the tools you already know.

02

Call the API

One POST request with your content. We handle browser rendering, fonts, page layout, and storage.

03

Get Your PDF

Receive a pixel-perfect PDF back in milliseconds. A CDN URL, ready to download, email, or embed.

Everything you need

From simple HTML-to-PDF to batch processing and form filling. One API for every PDF workflow.

HTML & React Rendering

Send raw HTML or React JSX. Playwright renders it with pixel-perfect fidelity, just like a browser.

Template Engine

Handlebars templates with variables, loops, and conditionals. Store and version them via API.

Batch Generation

Generate hundreds of PDFs asynchronously. Queue-based processing with webhook callbacks.

PDF Tools

Merge, split, fill forms, add visual signature annotations, and convert to PDF/A. One API for the full PDF workflow.

QR Codes & Barcodes

Drop {{qr:data}} or {{barcode:data}} placeholders in your HTML. We render inline SVGs automatically.

Headers & Footers

Dynamic page numbers, dates, and custom content in headers and footers across every page.

Multi-Cloud Storage

Store generated PDFs in Cloudflare R2, AWS S3, or Google Cloud Storage. Your choice.

Self-Hostable

Run the entire stack on your own infrastructure with Docker Compose. Full control, zero vendor lock-in.

Works with your stack

Send HTML, React components, or use stored templates. Pick the approach that fits your workflow.

typescript
import { Deckle } from 'deckle';

const client = new Deckle(process.env.DECKLE_API_KEY!);

const pdf = await client.generate({
  html: `
    <h1>Invoice #1042</h1>
    <p>Billed to: Acme Corp</p>
    <table>
      <tr><td>Widget Pro</td><td>$49.99</td></tr>
      <tr><td>Support Plan</td><td>$19.99</td></tr>
    </table>
    <p><strong>Total: $69.98</strong></p>
  `,
  options: { format: 'A4', margin: '20mm' }
});

console.log(pdf.url); // https://cdn.getdeckle.dev/gen_abc123.pdf

Your language. Your framework.

First-class SDKs for every major language, plus a REST API for everything else.

T
TypeScript
npm i deckle
P
Python
pip install deckle
G
Go
go get github.com/Yoshyaes/deckle/packages/sdk-go
R
Ruby
gem install deckle
R
React
npm i @deckle/react-pdf
Next.jsExpressFastAPIDjangoRails

Why developers choose Deckle

Stop maintaining headless browsers. Start shipping PDFs.

FeatureDecklePuppeteer DIYwkhtmltopdfPrince XML
Setup Time5 minutes30+ minutes15 minutes1 hour
MaintenanceZeroHigh (browser updates)MediumLow
React SupportYesManualNoNo
Template EngineBuilt-inDIYNoNo
Batch ProcessingBuilt-in queueDIYNoNo
PDF Tools (merge, split)YesNoNoNo
Multi-language SDKsTS, Python, Go, RubyJS onlyCLICLI + Java
Self-hostableYesYesYesYes

From the blog

View all posts

Start generating PDFs for free

No credit card required. Upgrade when you need more volume.

Free Tier
$0
per month, forever
  • 1,000 PDFs per month
  • All PDF generation features
  • All SDK languages
  • Template engine access
  • PDF tools (merge, split, forms, PDF/A)
  • Community support
Get Your API Key

Need more? Plans start at $29/month for 10,000 PDFs.

Ready to build?

Get your API key and generate your first PDF in under 5 minutes.