Quickstart
Fill and merge PDFs in your browser — free, no signup (or one API call)
Most "PDF tasks" are small until they aren't: fill in a form someone emailed you, or staple three PDFs into one before you send them on. You can now do both in your browser at pdfops.dev/playground — drop a file, fill or merge, download. No signup, no upload-to-a-stranger, no watermark. And the moment it stops being a one-off, the exact same operation is a single HTTP call.
Fill a PDF form in the browser
A lot of PDFs are forms — they have real, named input boxes baked in (the technical name is AcroForm fields). A W-9, an invoice template, an intake sheet, a contract with a few blanks. Open one in the playground, and it renders the page and drops an input box onto each field it finds. Type your values, hit Fill PDF, and you get a flattened, filled copy back — the text is in the document, not scribbled on top of it.
No fillable PDF handy? There's a sample invoice one click away,
with customer_name and total fields
ready to go, so you can see the round-trip before you bring your
own. If you drop a PDF that has no form fields, the tool tells
you so plainly instead of failing — that's a scanned or
flat PDF, and filling it is a different (OCR-shaped) problem.
Merge PDFs in the browser
The other small-until-it-isn't task: combining files. Drop two or more PDFs into the Merge tab, drag them into the order you want, and download a single merged document. Pages are concatenated in order; nothing is re-encoded or recompressed, so text stays selectable and quality is untouched.
Everything happens against the PDFops API and nothing is stored — files go up, the result comes back, and that's the end of it. Free during beta: 100 operations per month, no account.
It's the same API underneath
The playground isn't a separate tool bolted on for show — it's
the PDFops API with a friendly front end.
The button labelled "Fill PDF" makes the same
POST /api/fill-form call your code would. Which
means the moment a manual task turns into a repeating one — "we
fill this form for every new customer" — you don't switch
tools, you just move the same call into a script:
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
Merging is the same shape — repeat the pdf field:
curl -X POST https://pdfops.dev/api/merge \
-F "pdf=@cover.pdf" \
-F "pdf=@report.pdf" \
-o merged.pdf
No API key, no signup, 100 requests per IP per month during
beta. The playground even shows you the exact curl for what you
just did — fill out the form by hand once, copy the command,
and you've got the automated version. The
API reference has the full request schema,
the error codes, and the per-field-type details (checkboxes
want "true"/"false", dropdowns want a
valid option, and so on).
Browser or API — which one?
- Use the browser for one-offs and to eyeball whether your template's fields are named the way you think. Filling a single form, merging today's three files, checking that a PDF actually has fillable fields — all faster done by hand than wired up.
- Use the API the second it repeats or needs to happen without you — invoices on every Stripe charge, a filled W-9 per contractor onboarding, monthly statement bundles. Those run great on edge runtimes (Cloudflare Workers, Vercel Edge); the use cases and other posts walk through end-to-end examples.
The nice part is you never have to pick up front. Start in the browser, and when the task graduates to "do this every time," the call you need is the one the playground already showed you.
Try it
Open the playground, click "Load our sample invoice," fill the two fields, and download a filled PDF — about ten seconds, no signup. Then bring your own form, or merge a couple of files you have lying around.
Missing a PDF operation you'd reach for — splitting, stamping, rotating, page extraction? Drop it on the waitlist form; the message field is how the next endpoints get prioritized.