gotenberg/gotenberg
Productivity & UtilitiesA Docker-based HTTP API that converts HTML, URLs and office documents to PDF and post-processes them.
Overview
Gotenberg is a self-hosted, Docker-based API for PDF work. It wraps headless Chromium, LibreOffice and PDF tooling behind a single HTTP service, so applications can send files or URLs as multipart/form-data and receive a PDF instead of installing and maintaining browsers, office suites and fonts themselves. It also covers PDF post-processing: merging, splitting, rotating, stamping, form filling and flattening, PDF/A and PDF/UA validation and remediation (including Factur-X), signing, timestamping, encryption, redaction, optimization, page rendering and screenshots, plus metadata, bookmarks and attachments. It suits backend teams that need reliable document generation or archival-ready PDFs inside their own infrastructure.
Quick start
Run the container (Docker required):
docker run --rm -p 3000:3000 gotenberg/gotenberg:9
The API is then available on port 3000. Convert a public URL to PDF:
curl \
--request POST http://localhost:3000/forms/chromium/convert/url \
--form url=https://sparksuite.github.io/simple-html-invoice-template/ \
-o invoice.pdf
The response body is written to invoice.pdf. The same request can also produce an archival PDF by adding a remediation stage:
curl \
--request POST http://localhost:3000/forms/chromium/convert/url \
--form url=<URL> \
--form 'stages=[{"op":"remediate","profile":"PDF/A-2b"}]' \
-o invoice.pdf
Other routes follow the same pattern: send source content as form fields, receive a binary result. A live demo and the full route reference are in the official documentation; installation details and the demo link are on the installation page.
Usage constraints
- The service is distributed primarily as the
gotenberg/gotenberg:9Docker image; the host needs Docker and a port for the HTTP API. - Available document features depend on the bundled engines: Chromium for HTML/URL/Markdown, LibreOffice for 100+ office formats.
- Version 9 is the current major release; users on version 8 can keep
gotenberg/gotenberg:8, and routes, fields and flags changed between majors, so consult the upgrade guide before migrating. The project is MIT-licensed. - It is a server-side API, not a desktop application; access to its port should be restricted to trusted callers.
HotRepo's take
Gotenberg appears in HotRepo's Go monthly list for 2026-11-14 with 326 stars gained in that month and a best position of 20 on that Go list. An earlier Hacker News thread from 2021 drew only a handful of points and one comment; that commenter criticized the ecosystem around that time, saying the Go SDK did not work with the then-current v7 release. The observation is old and concerns a previous major version, but it is a reminder to verify the client library against the server major you deploy rather than assuming version parity. The repository's own description and current README emphasize the API surface and post-processing features rather than SDK maturity.
Written by AI from the project's README, updated . The project's own docs are the source of truth.