Meet ICE: the new generation of PDF Converter.

Summary:
- Carbone ICE (Instant Converter Engine) is a document converter written by the Carbone team and built into Carbone. DOCX-to-PDF and ODT-to-PDF today, more formats to come.
- Core values: ultra fast, pixel perfect, lightweight.
- Free, available now: In the Cloud, Studio, On-premise, every SDK, integration, and the Carbone MCP.

For years, Carbone has had one job: take your template, merge your data, and give back a document that looks exactly the way you designed it. Most of the time, that document ends up as a PDF. And the PDF step was the one part of the pipeline we did not own.

Today that changes. Here is why we built ICE, what it does, where it stops, and how to turn it on.

Why we built our own PDF converter

Until now, Carbone converted documents to PDF by handing them to a third-party engine: LibreOffice by default, OnlyOffice or Chromium for some cases. This is how nearly every document generation tool works, whether it says so or not. Behind most "Word to PDF API" products, there is a headless office suite doing the printing.

It works, and LibreOffice is a remarkable project. It stays our default converter, with the widest format support and every PDF option. But as the engine inside a high-throughput API, it gave us three bottlenecks we could not engineer our way out of.

1. Performance on large or complex documents. An office suite has to load the file, build its whole layout model, then print it. On a one-page document, that overhead is most of the wait. On a 500-page contract or a statement full of tables, it turns seconds into minutes. For our customers, it showed up as documents that took far longer to convert than to generate.

2. Inconsistent support of the DOCX and ODT specifications. A document that looks perfect in Word can come out of a converter with a shifted table, broken sections, a missing header or a chart drawn differently. Every converter reads the specification a little differently. Our users design in Word; they expect the PDF to match Word.

3. We did not own the code. When a customer hit a rendering bug, the fix lived in a codebase that was not ours, with its own roadmap and its own priorities. We could work around it, report it, or wait. None of those is what you want to tell a customer with a deadline tomorrow.

The only way to remove all three at once was to own the converter. So we wrote it.

What Carbone ICE is

ICE stands for Instant Converter Engine: a document converter written by our team and built into Carbone. Five things define it.

1. Universal converter. ICE is built to be a universal document converter: one engine, any format in, any format out. It converts DOCX-to-PDF and ODT-to-PDF today, and the same core will take on PPTX, XLSX and many more formats, as input and as output.

2. Ultra-fast. "Instant" is the design goal: the time between "the document is rendered" and "the PDF is ready" should be close to nothing. Today that means 3x faster than LibreOffice on a one-page document, and up to 60x on a 1,000-page one (see the benchmark below).

3. Pixel-perfect. ICE follows the DOCX and ODT specifications and is tested pixel by pixel against the PDF Word itself saves (see Word to PDF: pixel perfect below). The goal is not a PDF that looks close enough; it is the PDF you would get from Word.

4. Native and self-contained. ICE reads the file, computes the layout and draws the PDF inside the Carbone process: no office suite, no external process, no temporary file. It ships in the Slim Alpine image, which is all you need to produce PDFs.

5. Free, for everyone. ICE is not a premium add-on. It ships in the Carbone Community Edition Docker image, in Studio from the free plan, and in every Cloud and Enterprise plan. If you use Carbone today, you already have it.

DOCX to PDF benchmark

Our benchmark runs in the open on GitHub, with the templates, the scripts and every raw metric. You can run it on your own machine in a few minutes.

👉 See the full benchmark · Source repository

From the latest campaign (September 2026, Carbone 5.15.0, DOCX to PDF, same templates and same machine for every converter):

  • 28x more pages per second on large documents: 141 pages/s with ICE, 5 with LibreOffice.
  • The PDF step adds 5 ms with ICE, 39 ms with LibreOffice and 410 ms with OnlyOffice. On 4 CPUs, Carbone merges a DOCX in 24 ms; ICE hands back the PDF 5 ms later. The PDF step used to be the slowest part of the pipeline. Now it almost disappears.
  • One CPU with ICE beats four with OnlyOffice: 2,842 PDFs per minute against 934. On that single CPU, ICE already reaches half of what LibreOffice produces with four.

On a one-page document, ICE is 3x faster. The larger the document, the wider the gap. At the benchmark's rates, ICE gets through 1,000 pages in about seven seconds; LibreOffice needs more than three minutes. In our own tests on a 1,000-page DOCX, ICE was up to 60x faster. If you generate contracts, bank statements or catalogs, this is where ICE changes your day.

Word to PDF: pixel perfect

Speed only matters if the PDF is right. Our objective for ICE is the highest fidelity possible: a PDF that is pixel-perfect against the one Microsoft Word itself saves (and the one LibreOffice saves, for ODT).

That is how ICE is tested. Every PDF in our suite is compared pixel by pixel to that reference. Today ICE is covered by more than 2,000 unit and integration tests, its output matches Word for about 95% of real-world DOCX documents, and on some it is even closer to Word than LibreOffice is. Every new version narrows the remaining differences, and we are getting close to 100%.

The full list of supported elements is in the converter documentation.

ODT to PDF, in beta

DOCX-to-PDF is production-ready, ODT-to-PDF is available as a beta. It has the same speed profile as DOCX, and covers sections, styles, lists, tables, images, shapes, form controls and basic charts. Comments, tracked changes, footnotes and endnotes are not rendered yet. Use it where speed matters most and keep LibreOffice for the rest while we close the gap.

What ICE does not do yet

Better to know this now than to find out in production.

  • Not rendered yet (ignored, the rest of the document converts normally): WEBP, EMF and WMF images, SmartArt and complex chart types, comments, form fields, equations.
  • PDF export options: only Security and Watermark. For PDF/A, compression or viewer settings, keep that template on LibreOffice.

None of this needs to block you: move one template at a time, as described in the next section.

How to migrate your existing templates to ICE safely

Our advice: test before you switch, and switch one template at a time.

  1. Add {o.converter=I} anywhere in one template. That template alone is now converted with ICE, with no change to your requests. The carbone-version: 5 header stays mandatory on every request.
  2. Generate the PDF and compare it with your current output.
  3. Happy with the result? Move on to the next template.

If you use OnlyOffice for DOCX to PDF today, switch: ICE is faster and has none of its limitations. LibreOffice remains the default and the right choice when you need every format or every PDF option.

We know that comparing PDFs by eye, template after template, is nobody's favourite task. We are working on a comparison tool that renders a template with both converters and shows you the differences, so that moving to ICE takes minutes rather than an afternoon. The same tool will make every future Carbone upgrade just as easy to check.

How to enable ICE in each integration

ICE is enabled by default on every Carbone 5 installation. You only have to ask for it.

Cloud API

With the carbone-version: 5 header, pass "converter": "I" in the body of POST /render:

curl --location --request POST 'https://api.carbone.io/render/{templateId}' \     --header 'carbone-version: 5' \     --header 'Content-Type: application/json' \     --header 'Authorization: Bearer API_TOKEN' \     --data-raw '{       "data": { "firstname": "John", "lastname": "Wick" },       "convertTo": "pdf",       "converter": "I"     }'

The other values are L (LibreOffice, the default), O (OnlyOffice) and C (Chromium).

SDKs

Pass converter: "I" in the render options of any SDK: Node.js, JavaScript, Python, PHP, Go, Java and Rust.

Carbone Studio

In the preview, open the document converter panel and select Carbone ICE.

On-Premise and Private Cloud

Pull the latest Carbone 5 Docker image, or the latest ECS/EC2 image on AWS. Because ICE needs no office suite, the slim image is enough: if every conversion goes through ICE, you can drop the full image and its LibreOffice payload, and get a smaller pull, a faster start and less memory per instance.

For operators: ICE uses the fonts installed on the server, exactly like LibreOffice, so install the fonts your templates use or pull the -fonts image; a missing font falls back to Noto Sans. CARBONE_FACTORIES sets how many documents convert in parallel, CARBONE_ICE_FONT_CACHE_SIZE how many font faces each factory keeps in memory, and /metrics now reports ICE memory next to LibreOffice and Chrome.

n8n, Zapier and Make

In the Generate Document action, choose PDF as the output, then ICE as the converter. Nothing else changes.

Carbone MCP and AI assistants

The Carbone MCP server advertises ICE in its capabilities, so a capable assistant picks it on its own for a DOCX or ODT to PDF conversion. To be sure, just ask it to "use the ICE converter".

Salesforce, Odoo and HubSpot

ICE support in the Salesforce, Odoo and HubSpot integrations is in preparation and will land in a coming release. If you need it sooner, reach out to the Carbone team and we will get you set up.

What's next

This is only the beginning for ICE. PPTX, XLSX and more formats are on the way, and the list of unsupported elements gets shorter with every version.

Give us your feedback, whether it is a PDF that matches, a PDF that does not, or a conversion time you did not expect: support@carbone.io. We read every message. Every report becomes a test, and every test makes ICE better for everyone.

The Carbone Team

Read more