Comparison
urltodoc vs running Puppeteer yourself
Puppeteer is excellent software. We use it too. The question is not whether it works — it is whether you want to operate it, in production, on the first of every month.
The forty lines
Launch a browser, open a page, goto, pdf(), close. It works on your laptop in an afternoon, and that is genuinely the right call for an internal script.
The next four thousand
A browser pool, memory ceilings, zombie processes, a font layer in the image, retries for pages that were still loading, and a Chromium upgrade policy nobody volunteered for.
Keep Puppeteer if…
We would rather you not pay us for something you do not need.
You already run a browser fleet for end-to-end tests, and PDFs are a small extra job on infrastructure that exists and has an owner.
Your renders must never leave your network, and a vendor DPA plus regional pinning is not enough for your compliance team.
You need deep browser automation — multi-step flows, form filling, intercepting requests — rather than a document at the end of it.
You render a handful of documents a month and a cron job on one box is genuinely fine.
The migration is one function
Most teams delete more code than they write. The options map almost one to one, so the diff is usually the browser lifecycle disappearing.
Keep your Puppeteer path behind a flag for a week and compare checksums. If a document differs, send it to us — that is a bug we want.
Run both for a week.
Compare the output, then delete the launcher. 100 free credits is enough to test the whole path.