Comparison
PDFops vs PDFMonkey
PDFMonkey is a hosted PDF generator with an HTML+Liquid templating dashboard, priced from €5/mo (Starter, 300 docs, ~€0.017/doc) up to €300/mo (Premium, 60,000 docs, €0.005/doc), with overage only available on the €60/mo Pro+ tier and above. PDFops is a hosted form-fill + merge API for edge runtimes with a free keyed tier (250 requests/month) and paid tiers from $16/mo — plus 100 keyless requests per IP per month to try it with no signup at all. The two are different operations — this page covers the case where fixed-layout template-fill is the actual need.
Important clarification about "AcroForm" in PDFMonkey vs PDFops. PDFMonkey has a feature called PDF Forms that generates empty fillable AcroForm PDFs from an HTML template — markers in the template become form fields, and a human (or another tool) fills them later in Acrobat. PDFops does the opposite: it takes an already-existing AcroForm PDF plus a JSON of field values and returns the filled PDF. PDFMonkey can't fill an existing AcroForm with data; PDFops can't render HTML to create one. The migration story below reflects that.
The honest framing
If your templates need real templating-engine semantics — PDFMonkey still fits better. PDFops doesn't run a templating engine; it fills existing AcroForm fields with values you pass in. PDFMonkey's Liquid support is genuinely deep: tags (if, unless, case, for, tablerow), snippets / partials, custom filters (barcode, entities, in_time_zone), and a custom-JavaScript hook (Chart.js graphs, Day.js date formatting). If your template uses any of those, PDFops isn't an option.
If your templates are fixed-layout with variable fields (invoices, receipts, contracts, statements — most billing PDFs in production fall here), the wedge flips. The AcroForm + HTTP API path removes the Chromium-render-per-document cost; your code does the formatting it would do anyway. The migration is meaningful work though: you don't have AcroForm templates lying around (you have HTML+Liquid). You'd rebuild each template as a PDF-with-AcroForm-fields once, then keep using the new shape.
Side-by-side
| PDFops | PDFMonkey | |
|---|---|---|
| Primitive | Fills existing AcroForm fields with data; merges PDFs | Renders HTML+Liquid → PDF; can also emit empty fillable AcroForms from a template |
| Fill existing AcroForm with data | Yes (core endpoint) | No — PDF Forms feature emits empty forms, doesn't fill them |
| PDF merge | Yes (core endpoint) | No — not in the documents API |
| Pricing model | Subscription tiers: Indie $16/mo (4,000 req), Pro $79/mo (25,000 req) | Tiered subscription; overage only above €60/mo (else buy boost packs) |
| Per-document price | ~$0.004 (Indie) → ~$0.003 (Pro) | €0.017 (Starter €5/mo) → €0.005 (Premium €300/mo); overage €0.006/doc on Pro+ tier |
| Free tier | 250/mo with a free key (no card); 100 req/month/IP keyless | 20 docs/mo, 1-day retention, 30s timeout |
| Auth model | X-API-Key (free key, emailed); keyless anonymous calls allowed for trial | API key required |
| Template authoring | Acrobat / Preview / LibreOffice Draw / pdftk (any AcroForm-aware editor) | Web dashboard with HTML+Liquid+SCSS editor |
| Template engine | None (field-name → value) | Liquid v4 + custom JS + Chart.js + barcode/in_time_zone filters |
| Per-request timeout | ~30s edge default | Tier-gated: 30s Free / 2min Pro / 3min Pro+ / 5min Premium |
| Rendering engine | pdf-lib (V8-isolate-compatible) | Chromium (Engine v5 = Chrome 133, May 2025) |
| Hosting substrate | Vercel Edge (globally distributed) | Headless Chromium pipeline; signed S3 URLs (1h TTL) for download |
| First-party SDKs | HTTP-native (no SDK; curl/fetch) | Ruby only (officially) |
| Dashboard / UI | Usage dashboard (tier, quota, reset date); no template UI | Yes (template editor + live preview + document gallery) |
| Best for | Fixed-layout fill + merge at scale on edge stacks | Templates with computed layouts; no-code/low-code ops (Make, Zapier, Glide, n8n) |
Pricing verified at pdfmonkey.io/pricing and PDF Forms docs as of 2026-05-19.
Try the migration in 30 seconds
If your invoice template has fixed positions for customer name + total (or you want to start from one — grab a sample invoice-template.pdf), the call shape is:
curl -X POST https://pdfops.dev/api/fill-form \
-F "pdf=@invoice-template.pdf" \
-F 'fields={"customer_name":"Acme Co","total":"$1,250.00"}' \
-o filled.pdf
You get a filled PDF back. No API key or signup needed for the first 100 calls per IP each month — or run the same call in the browser via the playground. The full reference for the endpoint is in the fill-form docs, with per-language versions of the call in the Python, Node.js, and JavaScript guides.
Frequently asked
Is PDFops a drop-in replacement for PDFMonkey?
No — different operations entirely. PDFMonkey renders HTML+Liquid to a new PDF (and can emit empty fillable AcroForm fields from markers in the template). PDFops fills an existing AcroForm PDF with data and returns the result. Your PDFMonkey templates are HTML+Liquid, not AcroForm — migration means rebuilding each template once as a PDF with AcroForm fields, then sending field values via /api/fill-form.
How does PDFops pricing compare to PDFMonkey?
PDFMonkey runs €5/mo (Starter, 300 docs, €0.017/doc) up to €300/mo (Premium, 60k docs, €0.005/doc); overage only on Pro+ (€60/mo+) at €0.006/doc. PDFops is subscription tiers too, but cheaper per document: free keyed tier (250/mo, no card), Indie $16/mo for 4,000 (~$0.004/doc), Pro $79/mo for 25,000 (~$0.003/doc). No tier gates per-request timeout (PDFMonkey caps at 30s on Free, 5min on Premium).
Does PDFops support template variables and computed values like Liquid?
Not directly. PDFMonkey's Liquid is genuinely deep — loops, conditionals, snippets/partials, custom filters (barcode, in_time_zone), and a custom-JavaScript hook for Chart.js graphs. If your template uses those, PDFMonkey fits better than PDFops. PDFops handles fixed-layout fill where the variation is the data, not the layout.
Can I migrate my PDFMonkey templates to PDFops?
If your template is fundamentally a fixed layout with variable fields: (1) Recreate the layout as a PDF template in Acrobat / Preview / LibreOffice Draw with AcroForm fields where the variables go (you can't import your HTML+Liquid template; this is the migration cost). (2) Name the fields to match the JSON keys you'll send — the free form-field inspector confirms the names came out right. (3) POST template + JSON to /api/fill-form. (4) Get the filled PDF back. Liquid loops / conditionals / Chart.js graphs need to move into the calling code or stay on PDFMonkey.
Does PDFops have a dashboard like PDFMonkey?
Yes — pdfops.dev/dashboard shows your tier, quota, usage, and reset date for any API key. There's no template-management UI: PDFops is API-first, templates live in your repo or object storage, and the API is stateless.
Move when ready
If the fixed-layout template-fill primitive matches your usage, grab a free API key (250 req/mo) at /pricing — email in, key out, no card. Indie ($16/mo, 4,000 req) and Pro ($79/mo, 25,000 req) are live when you outgrow it.
← PDFops home · Blog · Docs