---
source: https://carbone.io/features/universal-template.html
title: "Carbone is an universal templating language."
description: "Use our future-proof and universal templating language to generate PDF, DOCX, PPTX, ODP, HTML, Markdown, XLSX, CSV, JPG, PNG, and more."
generated_at: "2026-07-13"
---

# Universal Template

Carbone is a universal templating language. Insert tags inside curly braces — `{d.field}` — into virtually any document, and Carbone replaces them with data from your JSON payload at render time.

## Universal template formats

Carbone reads tags from every editable office format:

- **Word-family:** DOCX, ODT
- **Spreadsheet-family:** XLSX, ODS, CSV
- **Presentation-family:** PPTX, ODP
- **Markup:** XML, HTML, Markdown, SVG, IDML
- **PDF forms:** fillable PDF fields can also hold Carbone tags

Templates can be authored in **Microsoft Office** (Word, Excel, PowerPoint), **LibreOffice**, **OnlyOffice**, **Google Docs**, **Zoho Docs**, **Apple Pages**, any WYSIWYG HTML editor, **VS Code**, **Adobe InDesign**, **Canva**, or **Affinity Designer**. No proprietary editor required, no code-only templating syntax (Handlebars, Jinja) to learn. Business teams edit the template directly; developers send the JSON.

## What you can put in a template

A template is the *layout* — colors, fonts, branding, page setup — and the Carbone tags inside it. The combination of native editor + Carbone tags supports:

- **Dynamic substitutions:** `{d.invoice.id}`, `{d.customer.name}`, etc.
- **Loops over arrays:** `{d.items[i].name} … {d.items[i+1].name}` repeats rows in tables, cards, or any layout. Loops can nest infinitely.
- **Conditions:** show/hide blocks with `:showBegin` / `:hideBegin` formatters, or with `:drop` / `:keep`.
- **Aggregations:** `:aggSum`, `:aggAvg`, `:aggMax`, `:aggMin`, running totals — compute totals across loops without preprocessing the JSON.
- **Mathematical operations:** `{d.value:mul(0.2)}`, `{d.value:add(d.tax)}`, etc.
- **Localization:** locale-aware numbers, currencies, dates, time intervals; Right-to-Left languages (Arabic, Hebrew, Persian); per-render translation dictionaries.
- **Charts (native + JS):** native Word/LibreOffice charts driven by your data, plus ECharts-based JS charts for richer visualizations.
- **Barcodes & QR codes:** 100+ barcode formats inside any template.
- **Dynamic images, colors, hyperlinks, HTML rendering, transformations** (move absolutely-positioned shapes from JSON X/Y data).
- **Headers, footers, page breaks, table of contents** with cross-reference updates.

## Decouple design from data — a best-practice in software design

When report design is hardcoded against a specific JSON shape, every report change demands a developer. Carbone breaks this coupling: design teams iterate templates in their familiar tools while developers keep the JSON API stable. Carbone reorders, filters, groups, formats, and aggregates the JSON inside the template, not in your application code.

This is the core reason Carbone users report cutting report-update time from weeks to minutes.

## Guaranteed backward compatibility

The Carbone templating language was designed in 2011 and is here to stay:

- A template created with **Carbone v2** still renders correctly with **Carbone v7**.
- Every new feature is added without breaking existing ones — new behavior is opt-in via pre-release tags (`{o.preReleaseFeatureIn=X}`).
- **5,000+ fully automated tests** run on every commit, ensuring regressions are caught before release.
- The [feature delivery lifecycle](/documentation/design/overview/version-lifecycle.md#feature-delivery-lifecycle) is documented and predictable.

## How it compares

Most reporting tools force you to either (1) author templates in their proprietary editor or (2) write template code in Handlebars / Jinja / a custom DSL. Carbone does neither — your existing Word file IS the template. That's the unique wedge versus Conga Composer, PDF Butler, JasperReports, Apache POI, Aspose, Docxtemplater, AssureSign, and similar tools.

For a side-by-side comparison of supported features per template format, see the [Template feature matrix](/documentation/design/overview/template-feature.md).


## Related topics

- [Document Conversion API](/features/document-converter.md)
- [Template Studio](/features/carbone-studio.md)
- [AI Document Generation](/features/ai-document-generation.md)
