Skip to content

Carbone vs Galley Render

The short version

  1. Carbone charges per document regardless of page count. Galley charges per PDF page. The unit decides the answer more often than the feature list does.
  2. If your output is long — reports, statements, contracts, anything past a handful of pages — Carbone is cheaper, often by a lot, and you should pick Carbone.
  3. If your output is one page or an image, at volume, Galley's per-render price is lower, and Galley adds a JSON Schema contract per version and a deterministic cache that is free on a hit.
At a glance
Item Carbone Galley Render
The unit One document, any page count, under a 1 MB payload One PNG or JPG, or one PDF page
Free tier €0 — 100 documents a month $0 — 200 renders a month, plus a keyless 50-render trial
Entry paid Essential €29/mo — 1,000 documents Starter $19/mo — 5,000 renders
Effective unit €0.029 / €0.019 / €0.008 per document $0.0038 / $0.00263 / $0.00166 per render
Overage €0.02 down to €0.001 per extra document $4 per 1,000 renders on every paid plan

Carbone Cloud prices are EUR excluding VAT and Galley's are USD. This page does not convert between them, because we have no sourced exchange rate to cite and the VAT position depends on you. Compare the shapes, then apply your own rate.

Carbone and Galley Render solve overlapping problems with incompatible billing units, and the unit decides the answer more often than the feature list does. Carbone charges per document regardless of page count. Galley charges per PDF page. If your output is long — reports, statements, contracts, anything past a handful of pages — Carbone is cheaper, often by a lot, and you should pick Carbone. If your output is one page or an image, at volume, Galley’s per-render price is lower. Carbone is also the broader product: more input formats, far more output formats, EU hosting, an on-premise option and an open-source library. Galley is narrower and aimed at agents: a JSON Schema contract per template version, a deterministic cache that is free on a hit, and expiring signed URLs.

Carbone renders a template you author in Word, Excel, PowerPoint, LibreOffice, InDesign, HTML or XML, merges a JSON payload into it, and converts the result to PDF or one of 100+ other formats. It is sold as Carbone Cloud (EU-hosted, in Paris on OVHCloud, Scaleway and BunnyCDN), as an on-premise licence, as an AWS Marketplace “Private Cloud” offering, and as an open-source Node.js library.

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 plus a JSON Schema per version; versions are immutable and content-addressed; identical inputs hit a deterministic cache and cache hits are never billed.

PlanMonthlyYearly (per mo)Docs/moTemplatesParallel rendersSLAAnalytics retentionExtra doc
Free€0€0100100115 days€0.05
Essential€29€261,000500299.5%30 days€0.02
Essential Plus€95€855,0001,000599.9%60 days€0.005
Advanced€159€14920,0002,0001099.9%90 days€0.002
Advanced Plus€295€265100,0005,0005099.9%180 days€0.001
Advanced Ultra€595€529500,00010,0005099.9%360 days€0.001

Extra templates cost €0.10 on Free and Essential, €0.05 on Essential Plus, €0.01 on Advanced and above. Overages are “charged individually at the start of the next period.” Yearly billing is roughly 10% off per month, and on yearly plans “unused documents roll over across the 12 months.” You cannot convert between monthly and yearly.

PlanPriceIncludes
Free$0200 renders/mo, 3 templates, no watermark. Plus a keyless 50-render MCP trial
Pay as you go$0.006/PNG or JPG, $0.015/PDF pageDefault $50/mo spend cap you can raise
Starter$19/mo5,000 renders, 25 templates, webhooks, 30-day retention
Growth$79/mo30,000 renders, unlimited templates, cloud push, 90-day retention, priority queue
Scale$249/mo150,000 renders, dedicated pool, SLA

Overage is $4 per 1,000 renders on every paid plan. Annual is two months free. Effective per-render: $0.0038, $0.00263, $0.00166.

Carbone, verbatim: “one document is counted per render when the injected JSON + images payload is under 1 MB. Beyond 1 MB the count scales linearly (0.5 MB = 1 document, 1.2 MB = 2 documents, 2.3 MB = 3 documents). Page count is irrelevant — Carbone bills per document, not per page.

Galley: 1 unit per PNG or JPG, 1 unit per PDF page. Cache hits are never billed.

So Carbone’s cost scales with payload size and Galley’s scales with output length. A 200-page statement from a 40 KB JSON payload is one document on Carbone and 200 units on Galley. A one-page card built from a 3 MB image payload is three documents on Carbone and one unit on Galley.

1. 500 forty-page reports a month. Galley: 500 × 40 = 20,000 billable pages. Growth includes 30,000 → $79/mo. (Starter plus overage is $19 + 15,000 × $0.004 = $79, the same. Pay as you go would be 20,000 × $0.015 = $300.) Carbone: 500 documents, page count irrelevant. Essential includes 1,000 → €29/mo. Carbone wins, and it is not close.

2. 5,000 forty-page reports a month. Galley: 200,000 pages. Scale includes 150,000, plus 50,000 overage × $0.004 = $200 → $249 + $200 = $449/mo. Carbone: 5,000 documents. Essential Plus includes 5,000 → €95/mo. Carbone wins by roughly 4–5x before any exchange rate is applied.

3. 30,000 one-page PDF invoices a month. Galley: 30,000 pages. Growth includes 30,000 → $79/mo. Carbone: 30,000 documents. Advanced includes 20,000, plus 10,000 extra × €0.002 = €20 → €159 + €20 = €179/mo. (Advanced Plus at €295 is more.) Galley wins here — this is the shape where per-page and per-document converge and the per-unit price decides.

4. Top of each ladder, per unit. Carbone Advanced Ultra: €595 ÷ 500,000 = €0.00119 per document, at any page count. Galley Scale: $249 ÷ 150,000 = $0.00166 per page. Carbone’s top tier is cheaper per unit than Galley’s top tier even for single-page output, and Carbone’s unit covers an entire document. There is no arithmetic in which Galley wins that comparison.

5. The free tiers. Carbone Free: €0, 100 documents/mo, 100 templates, 1 parallel render, 15-day analytics, no support or SLA — and all output formats, Studio, versioning and the MCP server are included. Watermarks apply to test token previews, not to the Free plan’s production quota. Galley Free: $0, 200 renders/mo, 3 templates, no watermark, plus 50 keyless renders over MCP. For single-page output Galley’s free tier is larger. For a ten-page document it is 100 documents against 20, and Carbone’s is five times larger. Carbone’s 100-template allowance on a free plan is far more generous than Galley’s 3.

CarboneGalley Render
Template inputsDOCX, XLSX, PPTX, ODT, ODS, ODG, ODP, XHTML, IDML, HTML, XMLHTML plus a Liquid subset
Output formats“PDF and 100+ formats,” including PDF/A (ISO 19005) and PDF/UA (ISO 14289)PDF, PNG, JPG. webp is not supported
Document operationsPDF merge and append, signature, Factur-X attachment, watermark, password and encryptionNone of these
Billing unitPer document under 1 MB payload; scales linearly beyond 1 MB. Page count irrelevant1 per PNG/JPG, 1 per PDF page. Cache hits unbilled
Throughput control“Parallel render” cap, 1 to 50 by plan. No published req/s rate limitNot published on the pages in this comparison; see the render reference
SLA99.5% on Essential, 99.9% from Essential Plus upOn Scale
HostingEU (Paris; OVHCloud, Scaleway, BunnyCDN)Hosted service only; no on-premise option
Self-hostOn-premise Docker carbone/carbone-ee or native binaries; Fit €1,500/yr (1 server, 12,000 docs/yr), Unlimited €2,940/yr (unlimited, lifetime licence). Community edition €0 but without dynamic images/colors/charts, barcodes, HTML rendering, smart conditions or aggregatesNo
Open sourceYes, a Node.js library with Community featuresNo
Usage-based optionPrivate Cloud on AWS Marketplace, USD: $0.15 first 100 docs, $0.08 for 101–1,000, $0.03 for 1,001–10,000, $0.008 for 10,001+Pay as you go, $0.006/image and $0.015/PDF page
Template retentionIndefinite by default on a production token; carbone-template-delete-after allows non-persistent up to 30 days; test-token templates auto-delete within 30 daysTemplates persist; render retention is 30 days on Starter, 90 on Growth
MCP serverYes, included on every plan including FreeYes, at https://mcp.galleyrender.com/mcp
Agent skill fileYes — an open-source “Carbone Skill,” included on every planYes — skill file and llms.txt
Template versioningListed as included on every plan including FreeYes, immutable and content-addressed
JSON Schema contract per templateNot found on the pricing pages or the documentation page we readYes, per version, with a free validate_data dry run
Deterministic render cache, unbilled on a hitNot found on the pages aboveYes — SHA-256 of template checksum, canonical data, canonical options and format
Expiring signed output URLsNot found on the pages aboveYes, default one hour, refreshable via get_render
  1. Long documents. The per-document unit is structurally better than a per-page unit for reports, statements, contracts and books. Scenarios 1 and 2 above are not edge cases; they are the normal shape of document generation.
  2. Better unit price at the top. €0.00119 per document on Advanced Ultra beats $0.00166 per page on Galley Scale, and covers more per unit.
  3. Output breadth. PDF/A and PDF/UA conformance, merge and append, signatures, Factur-X, password protection, and 100+ formats. Galley emits PDF, PNG and JPG and does none of the rest. If you have a compliance or archival requirement, this is the end of the discussion.
  4. Non-developers author the templates. A finance team can edit an invoice in Word. Galley templates are HTML in a repo.
  5. Deployment choice and data residency. EU hosting, an on-premise licence — including one where “if you don’t renew, Carbone keeps running indefinitely with the version you had at contract end” — and an open-source library. Galley offers none of that.
  6. A more generous free tier for real documents, and rollover of unused documents across the year on annual plans.
  1. Single-page and image output at volume. Scenario 3: $79 against €179 for the same 30,000 jobs.
  2. Images. PNG and JPG are first-class, with a fast non-browser path for cards and OG images. Carbone’s published output description is “PDF and 100+ formats”; we did not confirm raster image output on the pages we read, so we are not claiming it is missing — only that we did not verify it.
  3. Repeat work is free. A deterministic cache key means the second identical request costs nothing.
  4. A schema contract an agent can read before it renders. get_template returns the JSON Schema, validate_data dry-runs a payload for free, and errors name the field path, the expected type, what was received and an acceptable value.
  5. No signup to start. 50 renders over MCP with no key at all.
  6. USD, no VAT question, and payload size never changes the bill. Carbone’s count scales past 1 MB of injected JSON and images; Galley’s does not.

Nothing above needs an account, a card or a key. The demo renders on the production service.

Carbone templates are binary office documents with {d.field} markers. Galley templates are HTML with Liquid, so a migration is a rewrite of the template, not a port. Budget for that honestly — and if your documents are long, re-run scenario 1 before you start.

The API side is short. Read the schema, then render:

Terminal window
curl -sS https://api.galleyrender.com/v1/render \
-H "Authorization: Bearer $GALLEY_API_KEY" \
-H 'content-type: application/json' \
-d '{
"template": "invoice@3",
"format": "pdf",
"data": {
"invoice_number": "INV-1042",
"customer": { "name": "Acme" },
"line_items": [
{ "description": "Consulting", "amount": 4200 }
],
"total": 4200
},
"options": { "page_size": "A4", "margin": "18mm" }
}'
{
"object": "render",
"id": "rnd_7hq2m4x8k1bv",
"status": "succeeded",
"template": "invoice@3",
"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
}

Note billable_units: 2 for a two-page invoice. That field is the one to watch while you are deciding. Pin the version in anything you ship. 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-16.

  • Carbone pricing page — https://carbone.io/pricing.html (quota figures are JavaScript-rendered and absent from the served HTML)
  • Carbone’s agent-readable pricing mirror, the source of every quota figure above — https://carbone.io/pricing.md (generated_at: "2026-09-11")
  • Carbone documentation, the page carbone.io/documentation.html resolves to (Design › Getting started, with the full documentation section index in its navigation: Overview, Substitutions, Repetitions, Formatters, Conditions, Computation, Advanced features, Template Formats). Checked for a per-template JSON Schema, a published HTTP rate limit, signed output URLs and render caching or deduplication; none of the four appear on it — https://carbone.io/documentation.html
  • Galley Render pricing — /pricing

Prices, quotas and tax treatment change. Check https://carbone.io/pricing.html and our pricing page before deciding anything on these numbers.