DocRaptor vs Galley Render
The short version
- DocRaptor renders through Prince, a paged-media engine built for print typography — running headers and footers, footnotes, real page-break control — that neither Galley's Chromium path nor most competitors on this site match.
- It bills per document regardless of page count or complexity and never charges more for a longer file, which usually beats Galley's per-page PDF meter once documents run past a handful of pages.
- Pick Galley if you want a JSON Schema per template, a cache that's free on a hit, and an agent surface; pick DocRaptor if Prince's paged-media output is the reason you're here, or your documents are long.
| Item | DocRaptor | Galley Render |
|---|---|---|
| Free tier | $0 — 5 documents a month, no overage allowed. Unlimited free watermarked test documents on every plan | 5 PDF pages or 5 images a month, plus a keyless trial of 10 PDF pages or 10 images |
| Entry paid | Basic $15/mo — 125 documents | Solo $5/mo — 200 PDF pages or 500 images |
| The unit | One document, any page count or complexity | One PNG or JPG, or one PDF page |
| Overage | 12¢ down to 2.5¢ per extra document, by plan | 1¢ a page and 0.4¢ an image on Starter, Growth and Scale, and 1.5¢ a page and 0.6¢ an image on Solo |
| Engine | Prince — paged media, built for print CSS | Chromium via Playwright |
The effective figures above are our arithmetic on DocRaptor's published plan prices and document counts, not a claim DocRaptor makes.
DocRaptor’s whole pitch rests on one fact: it renders with Prince, a commercial paged-media engine built for print-quality typography, not with a browser. That buys footnotes, cross-references and positioned running elements — CSS Paged Media features Chromium, what Galley renders with, doesn’t implement. (Chromium does render @page margin-box running headers, footers and page counters; what it’s missing against Prince is running(), string-set, footnotes and target-counter.) It also bills per document with no page-count penalty, so once a document runs long, DocRaptor is usually the cheaper choice by a wide margin.
What each one is
Section titled “What each one is”DocRaptor is an HTML-to-PDF (and HTML-to-Excel) API built on Prince. You send HTML and CSS, synchronously or asynchronously, and get back a PDF, with unlimited free watermarked test documents on every plan so you can get the layout right before spending a real one. It publishes hard limits on timeouts and concurrency but, in its own words, does “not impose hard limits on numbers of pages, document complexity, input size, or output size” (except for hosted documents).
Galley Render takes a template name and a JSON payload and returns a signed URL to a PDF, PNG or JPG. Templates are HTML with a Liquid subset and a JSON Schema per version; versions are immutable and content-addressed; identical inputs hit a deterministic cache and cache hits are never billed.
Pricing
Section titled “Pricing”DocRaptor
Section titled “DocRaptor”| Plan | Monthly | Documents/mo | Overage |
|---|---|---|---|
| Free | $0 | 5 | Not allowed |
| Basic | $15 | 125 | 12¢/doc |
| Professional | $29 | 325 | 9¢/doc |
| Premium | $75 | 1,250 | 6¢/doc |
| Max | $149 | 5,000 | 3¢/doc |
| Bronze | $399 | 15,000 | 2.66¢/doc |
| Silver | $1,000 | 40,000 | 2.5¢/doc |
| Enterprise | Contact | Unlimited | Custom |
Document hosting, a separate optional feature, is metered daily at a per-document-per-month rate that falls from 6¢ on Basic to 1.25¢ on Silver; it’s not included with Free. Every plan also gets unlimited watermarked test documents that don’t count against the monthly limit.
Galley Render
Section titled “Galley Render”| Plan | Price | Includes |
|---|---|---|
| Free | $0 | 5 PDF pages or 5 images a month, 3 templates, no watermark. Plus a keyless MCP trial of 10 PDF pages or 10 images |
| Solo | $5/mo | 200 PDF pages or 500 images a month, 10 templates, webhooks, cloud delivery, 30-day retention. Spend cap of $50/mo by default |
| Starter | $19/mo | 2,000 PDF pages or 5,000 images a month, 25 templates, webhooks, cloud delivery, 30-day retention |
| Growth | $79/mo | 12,000 PDF pages or 30,000 images a month, unlimited templates, cloud push, 90-day retention, priority queue |
| Scale | $249/mo | 60,000 PDF pages or 150,000 images a month, dedicated pool, SLA |
Overage is 1.5¢ a page and 0.6¢ an image on Solo, and 1¢ a page and 0.4¢ an image on Starter, Growth and Scale.
The units
Section titled “The units”DocRaptor, from its own pricing page: “We never charge extra for large or complex documents. Our plans are based on monthly usage with easy overages: if you go over your plan limit, it’s a simple per-document price.” One document, any length, is one unit.
Galley bills per PDF page. A 50-page report is 50 billable pages on Galley and one document on DocRaptor — the same asymmetry Galley loses to Carbone over, for the same reason.
Worked scenarios
Section titled “Worked scenarios”1. 100 single-page invoices a month. DocRaptor: 100 documents. Basic covers 125. $15/mo. Galley: 100 pages. Solo covers 200 PDF pages. $5/mo. Galley wins clearly on short documents at modest volume.
2. 300 twenty-page reports a month. DocRaptor: 300 documents. Professional covers 325. $29/mo. Galley: 300 × 20 = 6,000 pages. Starter covers 2,000 PDF pages, plus 4,000 more at 1¢ = $40. $19 + $40 = $59/mo. DocRaptor wins, and the gap widens with every extra page in the report.
3. 1,000 fifty-page contracts a month, using Prince’s paged-media features (running headers, footnotes).
DocRaptor: 1,000 documents. Premium covers 1,250. $75/mo. Galley’s Chromium path can render the running headers, footers and page counters with @page margin boxes, but not the footnotes or cross-references, so this job isn’t fully reproducible on Galley regardless of price.
This is the scenario DocRaptor exists for.
4. The free tiers.
DocRaptor Free: 5 documents a month, no overage allowed at all — the sixth request that month fails until the plan resets or you upgrade. Unlimited watermarked test documents don’t count against it.
Galley Free: 5 PDF pages or 5 images a month, plus a lifetime keyless trial of 10 PDF pages or 10 images with no watermark.
Comparable in size; DocRaptor’s is watermarked on test documents specifically, Galley’s isn’t watermarked at all, and Galley’s stops with a clear quota_exceeded rather than refusing outright.
Feature comparison
Section titled “Feature comparison”Only rows we could source from DocRaptor’s own site and documentation, checked 2026-09-24.
| DocRaptor | Galley Render | |
|---|---|---|
| Engine | Prince — paged media, built for print CSS | Chromium via Playwright |
| Billing unit | One document, any page count or complexity | One PDF page, or one PNG/JPG |
| Output formats | PDF, and XLS/XLSX (“HTML to Excel”) | PDF, PNG, JPG |
| Free test documents | Unlimited on every plan, watermarked, Excel cut to 20 rows, hosted downloads capped at 5 and expire in 1 day | Free tier itself is unwatermarked; no separate “test mode” |
| Generation timeout | 1 minute sync, 10 minutes async | Small jobs return inline; larger ones queue |
| Concurrency | “Simultaneous Request Limit: 30” | Not published on the pages in this comparison; see the render reference |
| Document size limit | None stated, except hosted documents at 100 MB | Not published; large payloads queue rather than returning inline |
| Signed/hosted output URLs | Optional “Document Hosting” add-on, metered separately | Signed URL on every render, no add-on, default one hour |
| MCP server | Not found on the pages we read | Yes, at https://mcp.galleyrender.com/mcp |
| JSON Schema contract per template | Not applicable — DocRaptor has no template store; you send full HTML each call | Yes, per version, with a free validate_data dry run |
| Deterministic render cache, unbilled on a hit | Not found on the pages we read | Yes — SHA-256 of template checksum, canonical data, canonical options and format |
| Template store, versioning | None — HTML is sent per request, not stored | Versioned, immutable, addressable by name@version |
Where DocRaptor is the better choice
Section titled “Where DocRaptor is the better choice”- Print-grade paged media. Prince implements the full CSS Paged Media spec —
running()positioned elements,string-set, footnotes andtarget-countercross-references, plus generated tables of contents. Chromium (what Galley and most browser-based renderers use) renders@pagemargin-box running headers, footers and page counters, but not those four. - Long or complex documents at real volume. Scenario 2 is the ordinary case, not an edge case — per-document pricing beats per-page pricing as soon as documents run past a handful of pages.
- HTML to Excel. DocRaptor converts the same HTML input to XLS/XLSX. Galley has no equivalent output.
- You don’t want a template store. If your HTML is already fully assembled per request, DocRaptor’s model matches that directly.
Where Galley is the better choice
Section titled “Where Galley is the better choice”- Short documents and images at real volume. Scenario 1 is the common shape for invoices, receipts, tickets and cards, and Galley’s per-page unit wins it outright.
- A schema an agent can read before it renders.
get_templatereturns the JSON Schema;validate_datadry-runs a payload for free. DocRaptor has no template store to attach a schema to. - A render cache that’s free on a hit. We found no caching or deduplication claim on DocRaptor’s pages.
- An agent surface with no signup. A keyless MCP trial of 10 PDF pages or 10 images, and an MCP server on every account.
- Delivery included, not metered separately. Every Galley render returns a signed URL; DocRaptor’s hosted-download option is a separate, additionally-billed feature.
Nothing above needs an account, a card or a key. The demo renders on the production service.
Migrating
Section titled “Migrating”The biggest change isn’t syntax, it’s structure: DocRaptor takes a full HTML document per call, so moving to Galley means deciding what becomes a stored template and what stays data. If your HTML is built by a templating library today (ERB, Jinja, a string builder), the fields that library fills in become the JSON payload, and everything else becomes the template.
curl -sS https://api.galleyrender.com/v1/templates \ -H "Authorization: Bearer $GALLEY_API_KEY" \ -H 'content-type: application/json' \ -d '{ "name": "statement", "engine": "chromium", "source": "<html><body><h1>Statement for {{ account_name }}</h1><p>Balance: {{ balance | money }}</p></body></html>", "schema": { "type": "object", "required": ["account_name", "balance"], "properties": { "account_name": { "type": "string" }, "balance": { "type": "number" } } } }'# Before: POST to DocRaptor with the full document HTML in the "document_content" field
curl -sS https://api.galleyrender.com/v1/render \ -H "Authorization: Bearer $GALLEY_API_KEY" \ -H 'content-type: application/json' \ -d '{ "template": "statement@1", "format": "pdf", "data": { "account_name": "Acme Robotics", "balance": 4820.5 }, "options": { "page_size": "Letter", "margin": "18mm" } }'{ "object": "render", "id": "rnd_7hq2m4x8k1bv", "status": "succeeded", "template": "statement@1", "format": "pdf", "cached": false, "url": "https://<account>.r2.cloudflarestorage.com/galley-renders/renders/…?X-Amz-Expires=3600&X-Amz-Signature=…", "page_count": 2, "billable_units": 2}If your document depends on Prince-specific CSS (prince-page-group, running elements, footnotes), test it on Galley’s Chromium path before committing — that’s the one class of document where the move isn’t mechanical. The quickstart covers the MCP path and the gallery has the starter templates.
Where the competitor’s numbers came from
Section titled “Where the competitor’s numbers came from”Sources
Section titled “Sources”All accessed 2026-09-24.
- DocRaptor plan prices, document allowances, and per-plan overage and hosting rates — https://docraptor.com/signup
- DocRaptor API limits (timeouts, concurrency, size limits) — https://docraptor.com/documentation/api/limits
- DocRaptor test documents (watermarking, what’s exempt from the monthly limit) — https://docraptor.com/documentation/api
- DocRaptor home page (Prince engine, HTML-to-Excel, async generation) — https://docraptor.com/
- Galley Render pricing — /pricing
Prices and limits change. Check https://docraptor.com/signup and our pricing page before deciding anything on these numbers.