Documents and knowledge · Edition No. 17 · 11 Sep 2026

gotenberg/gotenberg

One service that turns HTML, Markdown, Word files and spreadsheets into PDF, using a real browser to lay the page out.

← Documents and knowledgeRead the whole edition →

12.8k stars · MIT · v8.37.0 (2026-09-11), read from /releases/latest — published at 14:42 on the day of this edition · Track this in Scout

One service that turns HTML, Markdown, Word files and spreadsheets into PDF, using a real browser to lay the page out.

▶Repo detailsthe review · specs · pros & cons · install

What it is

A Docker image that exposes a simple web address you can post files to. Inside it are Chromium (the browser engine that lays out your HTML) and LibreOffice (which reads Word and spreadsheet files), wrapped so you never have to install or manage either one yourself.

What it is good for. Anybody who has to produce a PDF that looks right. Invoices, reports, certificates, contracts and exported documents all end up needing one. Writing the page in HTML and CSS and letting a browser print it gives a far better result than assembling a PDF box by box in code.

This is the missing piece of an "export this page as a PDF" button. If the page is already HTML, the export is a single request to this service.

Stars12.8k
LicenceMIT
Latestv8.37.0 (2026-09-11), read from /releases/latest — published at 14:42 on the day of this edition
Good
  • It uses a real browser to lay out the page, so your CSS, your web fonts and your page breaks behave.
  • One service covers HTML, Markdown, Word, spreadsheets and merging PDFs together.
  • It is the same in development and in production, because it is the same container.
Watch for
  • You have to run and watch another service. It is one more thing that can be down.
  • Chromium is hungry. Give it about 1 GB of memory, and more if several conversions run at once.
  • It must never be exposed to the open internet without protection, because anything that can send it a page can make the server fetch things on its behalf.
Install
# Start it:
docker run --rm -p 3000:3000 gotenberg/gotenberg:8
# Convert a live page to PDF:
curl --request POST http://localhost:3000/forms/chromium/convert/url \
  --form url=https://example.com \
  -o out.pdf
# Convert a Word file:
curl --request POST http://localhost:3000/forms/libreoffice/convert \
  --form files=@report.docx \
  -o report.pdf
Screenshots
gotenberg/gotenberg: GitHub preview card

Get the next edition in your inbox

A dozen repositories, opened and checked. The licence read, the last release dated, and the ones that did not make it named with the reason. It is the half most lists leave out.

No tracking pixels. One click to leave. The archive stays free either way.

We use your address to send the edition and nothing else. Confirm by email, leave in one click. How we handle it.