Skip to content

DocRaptor vs Galley Render

The short version

  1. 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.
  2. 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.
  3. 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.
At a glance
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.

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.

PlanMonthlyDocuments/moOverage
Free$05Not allowed
Basic$1512512¢/doc
Professional$293259¢/doc
Premium$751,2506¢/doc
Max$1495,0003¢/doc
Bronze$39915,0002.66¢/doc
Silver$1,00040,0002.5¢/doc
EnterpriseContactUnlimitedCustom

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.

PlanPriceIncludes
Free$05 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/mo200 PDF pages or 500 images a month, 10 templates, webhooks, cloud delivery, 30-day retention. Spend cap of $50/mo by default
Starter$19/mo2,000 PDF pages or 5,000 images a month, 25 templates, webhooks, cloud delivery, 30-day retention
Growth$79/mo12,000 PDF pages or 30,000 images a month, unlimited templates, cloud push, 90-day retention, priority queue
Scale$249/mo60,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.

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.

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.

Only rows we could source from DocRaptor’s own site and documentation, checked 2026-09-24.

DocRaptorGalley Render
EnginePrince — paged media, built for print CSSChromium via Playwright
Billing unitOne document, any page count or complexityOne PDF page, or one PNG/JPG
Output formatsPDF, and XLS/XLSX (“HTML to Excel”)PDF, PNG, JPG
Free test documentsUnlimited on every plan, watermarked, Excel cut to 20 rows, hosted downloads capped at 5 and expire in 1 dayFree tier itself is unwatermarked; no separate “test mode”
Generation timeout1 minute sync, 10 minutes asyncSmall 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 limitNone stated, except hosted documents at 100 MBNot published; large payloads queue rather than returning inline
Signed/hosted output URLsOptional “Document Hosting” add-on, metered separatelySigned URL on every render, no add-on, default one hour
MCP serverNot found on the pages we readYes, at https://mcp.galleyrender.com/mcp
JSON Schema contract per templateNot applicable — DocRaptor has no template store; you send full HTML each callYes, per version, with a free validate_data dry run
Deterministic render cache, unbilled on a hitNot found on the pages we readYes — SHA-256 of template checksum, canonical data, canonical options and format
Template store, versioningNone — HTML is sent per request, not storedVersioned, immutable, addressable by name@version
  1. Print-grade paged media. Prince implements the full CSS Paged Media spec — running() positioned elements, string-set, footnotes and target-counter cross-references, plus generated tables of contents. Chromium (what Galley and most browser-based renderers use) renders @page margin-box running headers, footers and page counters, but not those four.
  2. 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.
  3. HTML to Excel. DocRaptor converts the same HTML input to XLS/XLSX. Galley has no equivalent output.
  4. You don’t want a template store. If your HTML is already fully assembled per request, DocRaptor’s model matches that directly.
  1. 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.
  2. A schema an agent can read before it renders. get_template returns the JSON Schema; validate_data dry-runs a payload for free. DocRaptor has no template store to attach a schema to.
  3. A render cache that’s free on a hit. We found no caching or deduplication claim on DocRaptor’s pages.
  4. An agent surface with no signup. A keyless MCP trial of 10 PDF pages or 10 images, and an MCP server on every account.
  5. 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.

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.

Terminal window
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" }
}
}
}'
Terminal window
# 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”

All accessed 2026-09-24.

Prices and limits change. Check https://docraptor.com/signup and our pricing page before deciding anything on these numbers.