Built for developers. Loved by teams.
From a single invoice to 10,000 batch PDFs — Typsetter handles the rendering so you can focus on your product.
Six powerful capabilities that cover every PDF automation use case, from instant on-demand rendering to scheduled monthly reports.
Typsetter is built on Typst, a compiled typesetting engine written in Rust. Unlike HTML-to-PDF tools that spin up a headless browser, Typst compiles your template directly to a PDF binary. The result: sub-500ms renders for typical documents, with no cold-start penalty and no memory leak from browser processes. In internal benchmarks, Typsetter renders an invoice in 340ms on average. Puppeteer clocks in at 4.2s. wkhtmltopdf at 2.8s. That difference compounds at scale.
Design templates without writing a single line of code using the drag-and-drop visual builder. Place text blocks, images, tables, and signature fields precisely where you want them. When you need more control, switch to the integrated Typst code editor with syntax highlighting and live preview that re-renders on every keystroke. Template versioning means every save creates a snapshot you can roll back to instantly. New accounts start with access to 31 professionally designed starter templates spanning invoices, contracts, certificates, reports, and more.
Generate thousands of PDFs in a single operation. Upload a CSV file with one row per document, map column headers to template variables in a visual column-mapping UI, and submit the job. Typsetter processes up to 10,000 rows asynchronously, showing real-time progress via the dashboard or via polling the job status endpoint. When the batch completes, download a single ZIP archive containing all PDFs, or have the ZIP delivered to a webhook URL automatically. Error rows are flagged individually so you get maximum yield from every batch. CSV auto-detection handles delimiters and character encodings without configuration.
Automate recurring documents with cron-based schedules you define directly in the dashboard. Set a schedule to run daily at 07:00 UTC, every Monday, on the first of each month, or any arbitrary cron expression. Timezone support means schedules fire at the right local time for your business. Each schedule is linked to a template and a data source — you can supply static JSON, a webhook that fetches live data, or a connected Google Sheet. When a schedule fires and a PDF is produced, Typsetter emails the result to configured recipients, posts to a webhook, or saves to your document history. Failed runs retry automatically with exponential backoff, and full execution logs are available for debugging.
Turn any template into a public-facing form with a shareable URL. End users fill out fields in a clean, branded form interface — no Typsetter account required, no API key exposed. Each form field maps directly to a template variable, with configurable validation rules (required, max length, regex, numeric range). On submission, the PDF is generated instantly and either downloaded by the user or sent to a configurable email address. Use webhook triggers to push form submissions into your own system. For monetized document generation, connect a Stripe product so users pay before the PDF is released. Forms can be embedded in any website with a single iframe snippet.
Every significant action in Typsetter emits a real-time webhook event to your configured endpoint. Listen for job.completed when a PDF is ready, batch.done when a CSV batch finishes, usage.alert when you approach your plan limit, and schedule.run after a scheduled generation fires. Webhook payloads are signed with an HMAC-SHA256 signature so you can verify authenticity server-side. Failed deliveries are retried up to 5 times with exponential backoff. The event log in the dashboard preserves 30 days of event history with full request and response bodies, making debugging integrations straightforward. Multiple endpoints can be registered, each with an independent event filter.
Everything you need to evaluate Typsetter for production use. SLAs, limits, and output specifications.
| Specification | Value |
|---|---|
| Rendering engine | Typst (compiled, Rust-based) |
| Output formats | PDF (all plans), PNG (all plans) |
| Template language | Typst + Tera (Jinja2-like variables) |
| Average render time | 340ms (p50), <500ms (p95) — 1-page document |
| Max render timeout | 30 seconds (configurable per request) |
| Max batch size | 10,000 rows per batch job |
| Max template size | 512KB source, unlimited embedded assets via URL |
| API response format | Binary PDF stream, or JSON job ID for async |
| API authentication | Bearer token (API key) — scoped read/write keys available |
| Rate limits | Free: 10 req/min • Starter: 60 req/min • Pro+: 300 req/min |
| API uptime SLA | 99.9% target uptime — all paid plans |
| Webhook retry policy | Up to 5 attempts, exponential backoff, 30-day log |
| Data residency | EU — Frankfurt (Hetzner) |
| API specification | OpenAPI 3.1 — interactive docs at /v1/docs |
Typst is a modern typesetting language designed from the ground up to compile documents fast. It is the core reason Typsetter is 8× faster than alternatives.
HTML and CSS were designed for interactive web pages, not for printed documents. Rendering engines like wkhtmltopdf and Puppeteer have to run a full browser layout engine to convert them to PDF, which is slow, memory-hungry, and produces output that shifts based on browser version. Typst knows it is generating a document from the start — pagination, hyphenation, and typography are first-class citizens. The output is byte-for-byte deterministic across runs and platforms.
LaTeX has been the gold standard for academic and technical documents for decades. But it was designed in the 1980s, and the compilation model was not designed for real-time API usage. A LaTeX compile can take multiple passes (pdflatex, bibtex, pdflatex again), taking 5–30 seconds for complex documents. Typst compiles in a single pass with an incremental engine. It also has modern, readable syntax and error messages that actually tell you what went wrong — a far cry from LaTeX's famously cryptic output.
Markdown is easy to write but limited in styling capability. Converting Markdown to PDF (via Pandoc or other tools) requires external templates and produces inconsistent layout results. Typst supports the same lightweight authoring experience as Markdown but adds full scripting, functions, custom layouts, and precise typographic control. You can write a Typst template once and render it with unlimited data variations programmatically.
Typsetter adds Tera templating on top of Typst. Before Typst sees your template, the Tera engine substitutes {{ variable }} placeholders with values from your JSON request body. This means you write templates once using familiar Jinja2-style syntax, and Typsetter handles secure escaping, type coercion, and rendering. The result is a safe, fast, API-friendly PDF generation pipeline that requires no knowledge of Typst internals to use.
Every template is fully customizable — change fonts, colors, logo, and layout through the editor. Use as-is or fork to build your own.
100 PDFs/month on the free plan. Upgrade when you're ready. Cancel anytime.