Compared
PDFShift alternative with screenshots on the same key
PDFShift is a good PDF API, and at 2,000 small documents a month it costs about what we do. The differences are credits versus renders, screenshots from the same key, and a price gap that opens from 5,000 documents up. If you only make small PDFs and PDFShift has never let you down, there is no urgent reason to move.
Who this page is for
Your credits ran out in the third week of the month. Or you found that a long report with embedded images costs several credits, because PDFShift charges one credit per 5 MB of output and your 14 MB catalogue is three. Or your app now needs a screenshot next to the PDF, and you would rather not sign up for a second vendor with a second bill.
If none of that is you, PDFShift is fine, and this page will say so more than once.
What each one gives you
Both are the same shape: POST a URL or HTML, get a PDF. Both run Chrome. Both have headers and footers, margins, page formats, print media and a sandbox for development. The differences are at the edges, and the edges are where the bill and the second use case live.
| PDFShift | RenderBadger | |
|---|---|---|
| Unit of billing | A credit per document, per 5 MB of output | A render, whatever the size |
| Screenshots | No | Yes, same key, same options |
| Free tier | 50 credits a month, 15 MB files, 30 s timeout | 100 renders a month, no card, no watermark |
| Overage | $0.04 to $0.001 per credit, by plan | $0.01 per render, every plan |
| Async | Paid plans | Starter and up |
| Webhooks | Yes | Yes, signed, with retries |
| Output | Bytes, or a hosted link on request | Bytes, or a signed URL with retention by plan |
| Timeout | 30 s free, up to 15 min paid | 30 s sync, longer with async |
| Idempotency | No | Idempotency-Key header |
| Delivery to your S3 | Yes | Not yet |
| Encryption and watermarks | Yes | Not yet |
| Track record | Since 2018 | Since 2026 |
Pricing at 2,000 and 10,000 renders
PDFShift sells credits. A credit is one document up to 5 MB, so for invoices and receipts one document is one credit and the table below holds. For large reports, divide the PDFShift column by the number of 5 MB chunks in your output. Annual billing on PDFShift is ten months for twelve.
| Documents a month | PDFShift | RenderBadger |
|---|---|---|
| 2,000 | Boost, $24 monthly or $20 on annual, with 2,500 credits | Starter, $19 |
| 10,000 | Business, $99, with 25,000 credits; or Growth at $39 plus 5,000 overage at $0.025, $164 | Pro, $49 |
At 2,000 it is a wash. A few dollars either way, and PDFShift's Starter at $9 for 500 credits is cheaper than anything we sell if that is all you need. Pick on features at that volume, not price. From 5,000 documents a month the gap opens: PDFShift's next step up is $99, and its overage on the cheaper plans is two to four times ours.
Prices checked October 26, 2026. Both in US dollars.
Where PDFShift is the better choice
Three things we do not have today. PDFShift can encrypt a PDF and stamp a watermark on it, which matters for contracts and paid downloads. It can deliver straight into your S3 bucket, so your app never handles the bytes. And its paid timeouts run to fifteen minutes, for the report that genuinely takes that long. Those are on our list, but a list is not a feature. There is also the entry price: $9 a month for 500 documents, with no equivalent here. And eight years in production is worth something when the documents are invoices.
Switching
The request bodies are close enough that a switch is mostly renaming. Here is the same invoice on both.
curl -X POST https://api.pdfshift.io/v3/convert/pdf \
-u "api:$PDFSHIFT_KEY" \
-H "Content-Type: application/json" \
-d '{
"source": "<h1>Invoice #42</h1>...",
"format": "A4",
"margin": "20mm",
"use_print": true,
"footer": { "source": "<p>{{page}} of {{total}}</p>", "height": "15mm" },
"sandbox": false
}' -o invoice.pdf
curl -X POST https://renderbadger.sh/v1/pdf \
-H "Authorization: Bearer $RENDERBADGER_KEY" \
-H "Content-Type: application/json" \
-d '{
"html": "<h1>Invoice #42</h1>...",
"format": "A4",
"margin": "20mm",
"footerTemplate": "<p><span class=pageNumber></span> of <span class=totalPages></span></p>"
}' -o invoice.pdf
The renames, in full:
| PDFShift | RenderBadger | Note |
|---|---|---|
| source | url or html | We take two fields so there is no guessing whether a string is a URL. |
| use_print | emulateMedia: "print" | Print media is our default for PDFs, so you can drop it. |
| header, footer | headerTemplate, footerTemplate | Chrome templates with pageNumber and totalPages classes instead of {{page}} and {{total}}. Set a margin so they have room. |
| delay | waitFor | A CSS selector or a number of milliseconds. |
| zoom | scale | Same meaning, 0.1 to 2. |
| sandbox: true | a Free key | Free renders are real, unwatermarked and capped at 100 a month. |
| filename | output: "url" | Returns a job with a signed URL instead of the bytes. |
| webhook | async: true, webhookUrl | Signed POST on completion, Starter and up. |
| encryption, watermark, s3_destination | none yet | If you use these, stay on PDFShift for now. |
The full option list is in the docs.
Try it on your own invoice
The free plan is 100 renders a month, no card, and the key is live the moment you create it.