View all our guides

DocRaptor alternative: PDFShift, tested on the same page

Updated by Cyril Nicodème

We sent one page to DocRaptor and to PDFShift on November 11, 2026: a CSS grid, a flexbox row and a short modern script. DocRaptor stacked the grid into one column and skipped the script. PDFShift printed the page the way Chromium shows it. If your templates are ordinary HTML and CSS, that's the engine you want. It's cheaper too: 5,000 documents a month cost $39 on PDFShift and $149 on DocRaptor.

Will a DocRaptor template look the same on PDFShift?

The test page had a three-column CSS grid, a flexbox row with a 24px gap, a color set with a CSS variable, a print stylesheet, and a script that writes one line using an arrow function. A second copy added an @page rule with a page-number footer. DocRaptor made its PDFs with Prince 15.1, its default engine. Here's what came back:

On the pagePDFShiftDocRaptor
Three-column CSS grid3 columns, 2 rowsStacked in one column
Flexbox rowSide by side, gaps keptSide by side, gaps not visible
Color from a CSS variableAppliedApplied
The script, default settingsRanDidn't run (javascript is off by default)
The script, with JavaScript turned onNot neededjavascript: true: no PDF, error 422, "SyntaxError: Unexpected token '>'". Prince's own JavaScript engine: the script didn't run
Print stylesheetApplied with use_print: trueApplied
@page footer with counter(page)Printed "Page 1 of 1"Printed "Page 1 of 1"
Page 1 of the same test page from PDFShift and from DocRaptorTwo pages side by side. PDFShift: a heading, a grid of three columns and two rows, a row of three separate flex boxes, a colored line, the line the script wrote, and the print stylesheet line. DocRaptor: a heading, the six grid cells stacked in one column, the flex row as one bar, the colored line, an empty space where the script's line should be, and the print stylesheet line.PDFShiftDocRaptorGrid 3 by 2,script ranGrid stacked,script didn't run
Page 1 of the test page, drawn from the two PDFs made on November 11, 2026. Test watermarks left out.

Everything DocRaptor got right came out the same on PDFShift, the @page footer included.

What PDFShift and DocRaptor cost at 500, 5,000 and 40,000 documents

Documents a monthPDFShiftDocRaptor
Free plan50 credits a month, no card5 documents a month, no overage
500$9 for 500Premium, $75 for 1,250
5,000$39 for 5,000Max, $149 for 5,000
40,000$149 for 50,000Silver, $1,000 for 40,000

Monthly prices on November 11, 2026, for the smallest plan that covers the volume without overage. One PDFShift credit covers a document up to 5 MB.

Monthly price of PDFShift and DocRaptor at three volumesBars start at zero dollars. 500 documents a month: PDFShift $9, DocRaptor $75. 5,000 a month: PDFShift $39, DocRaptor $149. 40,000 a month: PDFShift $149, DocRaptor $1,000.500 documents a monthPDFShift $9DocRaptor $755,000 documents a monthPDFShift $39DocRaptor $14940,000 documents a monthPDFShift $149DocRaptor $1,000
Monthly price at each volume.

What changes in your DocRaptor request

PDFShiftReplaces this in DocRaptor
POST https://api.pdfshift.io/v3/convert/pdf, API key in the X-API-Key headerPOST https://api.docraptor.com/docs, API key as the basic-auth user name
source, which takes HTML or a URLdocument_content or document_url
sandbox: truetest: true
Nothing to set: JavaScript runs. disable_javascript: true turns it offjavascript: true, off by default
wait_for: the name of a global function that returns true when the page is ready, or delay for a fixed wait of up to 10 secondsdocraptorJavaScriptFinished()
use_print: true. Without it, PDFShift uses your normal screen CSSprince_options.media, print by default
format (A4 by default) and margin. @page margin boxes still print@page size and margins
webhook: PDFShift posts the result to your URL, and posts an error if the conversion failsasync: true with callback_url
filename keeps the PDF for 2 days and returns its URL, or s3_destination saves it to your own buckethosted: true
PDF, or PNG, JPEG and WEBP images, each from its own endpointtype: "pdf", "xls" or "xlsx"

There's no importer, and you don't need one: change the endpoint and these fields, and your HTML stays as it is. Create a free account and run your own templates through it, starting with any that use prince- CSS properties, because those only work in Prince. Open one in our HTML viewer first to see it at A4 width with its print CSS. If an AI agent makes your documents, connect it to our MCP server and it makes the PDF with one tool call.

Other DocRaptor alternatives, by kind of product

Hosted APIs on a browser engine, like PDFShift: Doppio runs managed Chromium, CustomJS renders with Chromium and works with Make and n8n, Api2Pdf offers Headless Chrome or wkhtmltopdf, PDFgen adds AI-built templates, and AgentGen is built for AI agents. Browserless hosts browsers for your Puppeteer or Playwright code and also has a /pdf endpoint.

Template editors: CraftMyPDF, APITemplate, PDFMonkey and PDF Generator API. You design the document in their editor and send it data, so moving there means building your templates again.

An engine you run yourself: a Prince site license (from around $2,000 a year for startups, with upgrades and support), Gotenberg (Chromium and LibreOffice in a Docker container) or WeasyPrint (a Python library with its own layout engine). For Puppeteer and Playwright, see our Puppeteer alternatives for PDF generation.

Frequently asked questions

Is DocRaptor free?

DocRaptor's Free plan makes 5 documents a month, with no overage. Every DocRaptor account also gets unlimited test documents, which carry a watermark and don't count against the plan. PDFShift's free plan gives you 50 credits a month, and you don't need a card to sign up.

Does PDFShift have test documents like DocRaptor?

Yes. Send sandbox: true and the document uses no credits. It carries a watermark, and you can make up to 10 a minute.

Is DocRaptor HIPAA compliant?

DocRaptor offers HIPAA compliance on its paid plans once you sign its Business Associate Agreement and change a setting on your account. PDFShift handles protected health information when you send is_hipaa: true and sign our BAA. With is_hipaa, a PDF you ask us to save goes to your own S3 bucket, not ours.

Moving a DocRaptor template and something doesn't come out right?
Drop us a line.