DocSpring vs PDFShift
Compare converting HTML you already have with sending data to a stored template.
Our take
PDFShift is a good, inexpensive HTML and URL to PDF converter. It renders with Chromium, starts at $9 a month, can write output straight to your S3 bucket, and offers a BAA. If your application already produces the HTML and you just need a PDF back, it is hard to fault.
It stops there. Template storage exists, but no loop or condition syntax is documented and there are no versions, so in practice you send finished HTML every time. It cannot fill an existing PDF, has no forms or signatures, no US region, and its credits count file size rather than documents, so image-heavy PDFs cost more than you expect. Choose PDFShift for pure conversion at low cost. Choose DocSpring when the template should live outside your code, when you fill PDF forms, or when the workflow continues into data collection and signing.
Converting an existing HTML view
PDFShift fits applications that already produce HTML or expose a page URL and want a PDF rendering API. It also has stored templates, although they hold plain HTML rather than a template language. DocSpring stores HTML/CSS and Liquid templates and accepts JSON data; it also fills existing PDFs.
The integration boundary is different. With a web-page converter, your application owns the layout, asset access, and timing of JavaScript. With a DocSpring template, the layout and schema live with the PDF service. Choose where you want those responsibilities to sit.
Choose DocSpring for reusable document templates
Your application sends structured data to a managed PDF or HTML template. You also need existing-PDF filling, embedded forms, or signing without maintaining a separate document layout for each workflow.
Choose PDFShift for HTML and URL conversion
Your application already has a working HTML view, or you need to render a URL with conversion options. Test pages with authentication, web fonts, and delayed content before committing to the integration.
Feature comparison
Follow the feature links for details in DocSpring's documentation. Sources for each PDFShift cell are listed at the end of the page.
Scroll the table sideways to see both products.
| What you need | DocSpring | PDFShift |
|---|---|---|
| Templates | ||
| Fill an existing PDF | Yes Overlay fields on your PDF. Import existing form fields or place your own. | No No PDF form filling. Converts HTML and URLs only. |
| Visual document design | No Use an existing PDF or write HTML/CSS. The field editor does not design the document layout. | No No visual designer. Prepare the HTML and CSS yourself or point the API at a URL. |
| HTML to PDF | Yes HTML/CSS and Liquid templates, with code editors and a PDF preview. | Yes: Chromium Converts HTML or a URL to PDF or images with headers, footers, watermarks, and encryption. |
| Repeat a list of items | Yes Liquid loops create growing tables in HTML templates. Fields on an uploaded PDF can address array items without changing the page layout. | Conditions apply: In your app No template syntax for loops. Render repeated rows into the HTML in your application. |
| Conditional content | Yes Show or require PDF fields with conditional rules. Use Liquid conditions for HTML content. | Conditions apply: In your app No conditional syntax. Resolve optional content before sending the HTML. |
| Template versioning | Yes Edit drafts, publish numbered versions, and pin API requests to a version. | No Updating a stored template overwrites it. There is no version history or pinning. |
| Editable PDF output | Yes Keep text and checkbox fields editable, or flatten the filled content. | No No fillable form output. HTML inputs are flattened into static content. |
| HTML rendering engine | Yes: Chromium Browser-based rendering of HTML/CSS templates. | Yes: Chromium Renders with Chromium. A request header selects the Chromium version. |
| HTML template language | Yes: Liquid Store template logic with the layout and supply JSON data when generating a document. | Conditions apply: Stored HTML Templates store HTML by slug, but no variable, loop, or condition syntax is documented. |
| API integration | ||
| Synchronous generation | Yes Use sync.api.docspring.com to receive submission JSON and a PDF download URL in one request. | Yes The default response is the PDF bytes, or JSON with a temporary URL when a filename is set. |
| Asynchronous generation | Yes Send wait=false to return immediately. Receive a webhook or check the submission status later. | Conditions apply: Paid plans Passing a webhook queues the conversion. Asynchronous responses are listed as a paid-plan feature. |
| Webhooks | Yes Receive notifications about PDF generation and Data Request events. | Conditions apply: Paid plans A POST carries the result URL on success or an error on failure. |
| Batch PDF generation | Yes Generate up to 50 PDFs in a request with different templates and data. | Conditions apply: Paid plans Send an array of up to 50 sources for parallel conversion with a webhook for results. |
| Combine PDFs | Yes Combine generated PDFs and other PDF files into one document. | No No merge endpoint. Each request converts one source. |
| Integrations | ||
| AWS S3 | Yes Automatically upload generated PDFs to your own S3 bucket. | Conditions apply: Paid plans Writes output directly to your S3 bucket, with Google Cloud Storage and Cloudflare R2 also supported. |
| Zapier | Yes: Beta Generate PDFs and start signing workflows through the beta integration. | No No Zapier app. PDFShift's guide calls the REST API through an API by Zapier action. |
| n8n | Yes Community node for PDF generation and signing workflows. | Yes: Community node PDFShift publishes an n8n community node on npm for PDF and image conversion. |
| Make.com | Coming soon DocSpring integration is planned. | No No Make app. Use a generic HTTP module. |
| Pipedream | Coming soon DocSpring integration is planned. | No No Pipedream app. Call the API from a code step. |
| Forms and e-signatures | ||
| Embed the template editor | Yes Embed the PDF field editor and choose which controls your users can access. | No No template editor exists to embed. |
| Collect data with forms | Yes Generate web forms from your PDF template fields, or let people fill in the PDF visually. | No No hosted data collection. |
| Electronic signatures | Yes Data Requests support ESIGN/UETA signing workflows. Your app supplies authentication details and sends notifications. | No No e-signature workflow. |
| Embedded signing | Yes Show the signing form in your app with a one-time authentication token. | No No signing feature. |
| Security and deployment | ||
| SOC 2 Type II | Yes Completed audit. Request the report through our Trust Portal. | No No SOC 2 report is published. Its legal pages cover GDPR, a DPA, HIPAA, and a BAA. |
| GDPR compliance | Yes GDPR compliant. Our Trust Portal lists security controls and policies. | Yes GDPR page and a published DPA. Conversion runs in OVH data centers in France, and the DPA places files stored through the filename option on AWS S3 in Paris. |
| HIPAA compliance | Yes HIPAA compliant. Sign a BAA before submitting protected health information; contact [email protected]. | Yes: With BAA A BAA is offered. HIPAA mode disables PDFShift-side storage, so stored output must go to your own bucket. |
| ISO 27001 | No Not certified. DocSpring's security controls are audited under SOC 2 Type II. | No No ISO 27001 certification is published. |
| Automatic document deletion | Yes Set an expiry per template for submission data, generated PDFs, and uploaded images. | Yes Documents are processed in memory by default. Using a filename or webhook keeps the file for 2 days. |
| US and EU hosting | Yes Choose the US or EU service region. | Conditions apply: EU only Conversion runs in France and stored files are kept on AWS S3 in Paris. There is no US region or region selection. |
| Self-hosting | Yes: Enterprise Self-hosted enterprise licenses are available. | Not published No self-hosted option is published. PDFShift is offered only as a hosted API. |
"Not published" means the vendor's public materials do not say either way, usually because it is handled on request. A dedicated integration is different from connecting an API through a generic HTTP action. Plan requirements and product boundaries are noted in the cells.
Turn a billing record into an invoice PDF
An invoice with a customer name and a variable number of line items can use either API. Decide whether your application will send finished HTML or data for a stored template.
In DocSpring
Create an HTML/CSS template with a Liquid loop for line items. Send the customer and items as JSON to the template submission endpoint. The synchronous response includes a PDF download URL.
Publish a new template version after testing changes, and pin a version when an application release needs a fixed layout.
In PDFShift
Render the invoice HTML in your application and send it as the source of a conversion request. Configure page size, margins, headers, and asset access for the invoice.
A standard conversion returns binary PDF data. Use the webhook flow for background conversion on a paid plan, and set an S3 destination if you want the file written to your bucket.
Generate the invoice with a DocSpring template
Save this Liquid markup in an HTML template and define the customer_name and items fields in its schema. The request sends data independently of the layout.
<h1>Invoice for {{ customer_name | escape }}</h1>
<table>
<tr><th>Description</th><th>Amount (USD)</th></tr>
{% for item in items %}
<tr>
<td>{{ item.description | escape }}</td>
<td>{{ item.amount | currency }}</td>
</tr>
{% endfor %}
</table>
curl --fail-with-body \
"https://sync.api.docspring.com/api/v1/templates/${DOCSPRING_TEMPLATE_ID}/submissions" \
--user "${DOCSPRING_TEST_TOKEN_ID}:${DOCSPRING_TEST_TOKEN_SECRET}" \
--header 'Content-Type: application/json' \
--data '{
"test": true,
"data": {
"customer_name": "Mira Patel",
"items": [
{ "description": "Annual inspection", "amount": 120 },
{ "description": "Replacement filter", "amount": 35 }
]
}
}'
Set the environment variables to your template ID and test API credentials. Accounts in our EU region send requests to sync.api-eu.docspring.com instead. The response includes a download URL for a watermarked PDF. See the request and response guide.
Test an invoice with large images as well as many rows. A document can be short in pages but large in bytes, which affects PDFShift credit usage and download time.
Credits by file size against a flat per-PDF price
DocSpring
The Starter plan is $49 per month for 50 live PDFs, then 25c per additional PDF. Larger plans lower the per-PDF price. Every plan includes unlimited templates, users, and watermarked test PDFs, and there is a free trial with no card required.
See all DocSpring plansPDFShift
PDFShift's free plan includes 50 credits a month with a 15 MB file limit. Starter is $9 per month for 500 credits, then $24 for 2,500, $39 for 5,000, and $99 for 25,000. Overage is 4 cents per credit on Starter and falls with volume, but has to be switched on. Webhooks, batch, and S3 delivery need a paid plan.
One credit covers a document up to 5 MB, rounded up per document. PDFShift's own example is a 14 MB PDF costing 3 credits, so estimate from real output files rather than page counts.
PDFShift pricing pageAt 12 MB each, 1,000 PDFs use 3,000 PDFShift credits and need the $39 plan. At 2 MB each they use 1,000 credits on the $24 plan. DocSpring's 1,000-PDF plan counts them as 1,000 PDFs either way and includes the template, form filling, forms, and signing features PDFShift does not have.
Moving a PDFShift integration to DocSpring
Collect the HTML, stylesheets, fonts, and conversion options used by your current request. Convert variable values and repeated sections to Liquid so DocSpring can store the template. A URL conversion is not a drop-in match for a template ID plus JSON.
Move header, footer, margin, and page-size settings into the DocSpring template. Test pages that depend on JavaScript or authenticated resources; do not assume the same timing or asset access rules apply.
Replace binary-response handling with the submission download URL. For asynchronous work, save the DocSpring submission ID and handle completion through webhooks or status checks. Both services render with Chromium, so the output should be close once you set the font, background, and page margins that DocSpring's normalize.css and default styles would otherwise supply.
Questions about PDFShift alternatives
Does PDFShift have stored templates?
Yes, but they store plain HTML. There is no documented syntax for variables, loops, or conditions, so most integrations render the HTML in the application and send it each time. DocSpring templates use Liquid and a JSON schema.
Can I use PDFShift for HIPAA workflows?
Yes. PDFShift offers a BAA and a HIPAA request mode that disables its own storage, so you must supply your own S3 destination. DocSpring also supports HIPAA workflows with a signed BAA. Review the full data path for either service.
Will my PDFs look the same after switching?
Usually, once the page settings match. Both services render with Chromium, but DocSpring adds normalize.css and default styles for the font, background, and page margins. Set those explicitly, and check custom fonts, header and footer settings, and any PDFShift-specific options such as watermarks or encryption that need equivalents in DocSpring.
About this comparison
We reviewed DocSpring's documentation and implementation alongside PDFShift's published product, API, pricing, and security information. Prices and plan limits were checked on the review date shown at the top of the page. The workflows describe documented behavior; they are not performance benchmarks. Features and plans can change after the review date.
Sources
- PDFShift API documentation
- PDFShift pricing
- PDFShift GDPR and legal pages
- PDFShift HIPAA page
- PDFShift S3 delivery documentation
- PDFShift DPA (processing and storage locations)
- PDFShift subprocessors
- PDFShift Zapier setup guide
- PDFShift Make setup guide
- PDFShift n8n community node on npm
Spotted something that needs correcting? Send us the detail and a source.
Related comparisons
Product names, logos, and brands are the property of their respective owners and are used here for identification and comparison only. Their use does not imply any affiliation with or endorsement by those companies.
Try a stored HTML template in DocSpring
Upload a PDF or create an HTML template, then send a test request.