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

PDFopsPDFMonkey
PrimitiveFills existing AcroForm fields with data; merges PDFsRenders HTML+Liquid → PDF; can also emit empty fillable AcroForms from a template
Fill existing AcroForm with dataYes (core endpoint)No — PDF Forms feature emits empty forms, doesn't fill them
PDF mergeYes (core endpoint)No — not in the documents API
Pricing modelSubscription 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 tier250/mo with a free key (no card); 100 req/month/IP keyless20 docs/mo, 1-day retention, 30s timeout
Auth modelX-API-Key (free key, emailed); keyless anonymous calls allowed for trialAPI key required
Template authoringAcrobat / Preview / LibreOffice Draw / pdftk (any AcroForm-aware editor)Web dashboard with HTML+Liquid+SCSS editor
Template engineNone (field-name → value)Liquid v4 + custom JS + Chart.js + barcode/in_time_zone filters
Per-request timeout~30s edge defaultTier-gated: 30s Free / 2min Pro / 3min Pro+ / 5min Premium
Rendering enginepdf-lib (V8-isolate-compatible)Chromium (Engine v5 = Chrome 133, May 2025)
Hosting substrateVercel Edge (globally distributed)Headless Chromium pipeline; signed S3 URLs (1h TTL) for download
First-party SDKsHTTP-native (no SDK; curl/fetch)Ruby only (officially)
Dashboard / UIUsage dashboard (tier, quota, reset date); no template UIYes (template editor + live preview + document gallery)
Best forFixed-layout fill + merge at scale on edge stacksTemplates 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.