Pandoc alternatives in 2026: making PDFs without the LaTeX install
For format-to-format conversion, Pandoc has no serious rival, and this page will not pretend otherwise: keep it. The search for alternatives almost always means one specific job, PDF output, where Pandoc's default path runs through a LaTeX install that is multiple gigabytes and fails with pdflatex not found on half the machines that try it. For that job: swap Pandoc's PDF engine and keep everything else, move to Typst or Tectonic for typeset documents, or render through HTML and CSS with WeasyPrint or a managed Chrome API like Transformy.
Scope note, stated plainly: this page covers PDF output. If your workflow is document conversion between formats, none of what follows replaces Pandoc, and several options below work with it rather than instead of it.
$ pandoc report.md -o report.pdf
pdflatex not found. Please select a different
--pdf-engine or install pdflatex
$ sudo apt-get install texlive-full
…
After this operation, 5.6 GB of additional
disk space will be used.
Do you want to continue? [Y/n] ^C
$
KEY TAKEAWAYS
-
You may not need to leave Pandoc at all.
--pdf-engine=weasyprintor--pdf-engine=typstremoves the LaTeX requirement while keeping your whole Pandoc workflow. - The LaTeX install is the real complaint. Multi-gigabyte TeX distributions, missing-package errors, and template debugging are what "pandoc alternatives" searches are actually about.
- Typst is the modern answer for typeset documents. A single binary, readable markup, fast compiles; Pandoc can even output Typst directly.
- CSS is the other styling language. HTML-based rendering (WeasyPrint locally, a Chrome API from applications) styles documents with skills your team already has.
- For PDFs generated inside an application, use an API. Markdown converts to HTML in one line in every language; rendering that HTML is what a managed Chrome API is for.
What "pandoc alternatives" usually means
Pandoc is magnificent and maintained; nobody leaves it because it broke. The friction is concentrated in one place: pandoc report.md -o report.pdf is not really Pandoc rendering a PDF. Pandoc converts your document to LaTeX and shells out to a TeX engine, which means your "Markdown to PDF" pipeline quietly acquired the heaviest toolchain in computing:
- The install. A working TeX distribution runs from hundreds of megabytes (minimal, with package roulette) to several gigabytes (texlive-full). CI images, containers, and teammates' laptops all pay it.
- The errors.
pdflatex not found, missing.stypackages, Unicode that needsxelatex, and LaTeX error messages that predate readable error messages. - The styling. Changing how the PDF looks means LaTeX templates and
-Vvariables, a skill set orthogonal to everything else your team does.
If your documents genuinely benefit from TeX-quality typesetting (academic papers, books, complex math), that cost can be worth paying. The alternatives below are for everyone who only ever wanted a decent-looking PDF out of a Markdown file.
Tip
Run pandoc --version before migrating anything: if it lists weasyprint or typst among available PDF engines on your system, the smallest possible fix is one flag away.
Option zero: keep Pandoc, swap the engine
Pandoc's --pdf-engine flag accepts more than LaTeX. Two swaps remove the TeX toolchain entirely:
# Style with CSS instead of LaTeX templates
pandoc report.md --pdf-engine=weasyprint --css=report.css -o report.pdf
# Or typeset with Typst instead of TeX
pandoc report.md --pdf-engine=typst -o report.pdf
Your input format, filters, citations, and the rest of the Pandoc workflow stay untouched; only the PDF step changes. For scripted document pipelines this is the highest-value, lowest-effort move on this page, which is why it is listed before our own product. One warning: Pandoc also still accepts --pdf-engine=wkhtmltopdf, which you should not use; that engine is archived with unpatched critical CVEs (our wkhtmltopdf alternatives page covers why).
The shortlist at a glance
| TOOL | WHAT IT IS | STYLING LANGUAGE | INSTALL WEIGHT | BEST FOR |
|---|---|---|---|---|
| Pandoc + swapped engine | Your current tool, lighter | CSS (weasyprint) or Typst | pip install / single binary | Keeping existing Pandoc pipelines, minus LaTeX |
| Typst | Modern typesetting system | Typst markup | Single binary | Typeset documents without TeX's weight |
| Tectonic | Self-contained LaTeX engine | LaTeX | Single binary, packages on demand | Existing LaTeX documents, saner tooling |
| WeasyPrint | Python HTML/CSS renderer | CSS | pip install | CSS-styled documents from Python or the CLI |
| Transformy | Managed API | CSS (real Chrome) | None (HTTP call) | PDFs generated inside applications |
Typst: the modern typesetting path
Typst is what most frustrated LaTeX users were waiting for: a typesetting system with readable markup, comprehensible error messages, sub-second compiles, and a single-binary install. Math, references, bibliographies, and fine-grained layout are all first-class, which makes it the honest recommendation for academic and technical documents that actually use those features. Pandoc can convert your existing Markdown (and much else) directly into Typst, so the migration path from a Pandoc-plus-LaTeX pipeline is well paved. Its limits: a new (if pleasant) language to learn, and an ecosystem younger than TeX's four decades of packages, so highly specialized LaTeX workflows should check coverage before committing.
Tectonic: keep LaTeX, lose the pain
If your documents are already LaTeX and the toolchain is the problem rather than the language, Tectonic packages a modern TeX engine as a single binary that downloads only the packages a document actually uses, on demand. No multi-gigabyte install, no manual package management, reproducible builds. It is the conservative fix: everything about your documents stays the same, and only the install story improves. It does nothing for the styling-in-LaTeX complaint, because it is LaTeX.
WeasyPrint: style documents with CSS
WeasyPrint renders HTML and CSS to PDF with a paged-media engine that handles the print details (page numbers, running headers, @page rules) unusually well, and as noted above it plugs directly into Pandoc as a PDF engine. Used standalone from Python or the command line, it turns "design the PDF" into a CSS problem: a skill your team has, applied to a stylesheet you can version. No JavaScript and no browser, by design; for a fuller picture of where its own limits sit, see our WeasyPrint alternatives page.
The managed option: Transformy
Transformy is the right shape when PDFs are generated inside an application rather than from a terminal. Markdown converts to HTML in one line in every ecosystem (marked, markdown-it, python-markdown, goldmark, commonmark-php); rendering that HTML well is the part worth outsourcing. One authenticated POST returns a PDF rendered by real headless Chromium, styled by your CSS, with the document plumbing an app needs in production: page headers and footers with {{page}}/{{pages}} tokens, PDF bookmarks generated from headings ("outline": true, the API cousin of Pandoc's --toc), async jobs with signed webhooks, delivery straight to your own cloud storage, and idempotency keys for safe retries.
# Markdown → HTML (any library) → PDF, no LaTeX anywhere
curl -X POST https://api.transformy.io/v1/pdf/chrome \
-H "Authorization: Bearer tfy_live_..." \
-H "Content-Type: application/json" \
-d '{
"html": "<html>…converted markdown + your stylesheet…</html>",
"page_size": "a4",
"outline": true,
"footer": { "html": "<span style=\"font-size:10px\">Page {{page}} of {{pages}}</span>" }
}' \
--output handbook.pdf
Pricing starts free (100 documents a month, no credit card); the Pro plan is $99/month for 10,000 documents, then $0.01 per additional document. The honest scope, restated: Transformy renders HTML only. It does not convert docx, epub, or LaTeX, so it replaces Pandoc's PDF step, not Pandoc. Plenty of pipelines pair them: Pandoc for the format conversion it is unbeatable at, the API for the rendering. And for terminal-first workflows where a free local tool suffices, the options above are the better fit; the API earns its keep when PDFs ship from your product.
Migrating: mapping a Pandoc-PDF workflow
For the common case (Markdown in, styled PDF out, moving to CSS-based rendering):
- pandoc report.md -o report.pdf # via pdflatex
+ markdown → HTML in your app; render the HTML
- --template=custom.tex
+ a CSS stylesheet
- -V geometry:margin=2cm
+ "margin": "2cm" # or @page CSS
- -V papersize:a4
+ "page_size": "a4"
- --toc
+ "outline": true # PDF bookmarks from headings
- \fancyhdr page headers
+ "header"/"footer" HTML with {{page}}, {{pages}} tokens
- TeX install in every CI image
+ nothing to install (API) or one binary (Typst, Tectonic)
What does not carry over: LaTeX-grade math typesetting and citation processing. If your documents lean on those, Typst and Tectonic are your lane; CSS rendering is for documents whose complexity is layout and branding, not equations.
Frequently asked questions
Is Pandoc still maintained?+
Very much so, and for format-to-format document conversion it remains the best tool in existence. This page addresses its PDF-output path, which depends on external engines, not Pandoc's health.
Can Pandoc make PDFs without LaTeX?+
Yes: --pdf-engine=weasyprint (style with CSS) and --pdf-engine=typst (typeset without TeX) both work without a LaTeX installation. Avoid --pdf-engine=wkhtmltopdf; that engine is archived with unpatched CVEs.
What is the best Markdown-to-PDF tool?+
For scripts and pipelines: Pandoc with WeasyPrint or Typst as the engine. For an application feature: convert Markdown to HTML with your ecosystem's library and render via an API. For typeset technical documents: Typst directly.
Is Typst better than LaTeX?+
For most new documents: faster, friendlier, and dramatically easier to install, with Pandoc able to convert existing sources into it. LaTeX still wins on ecosystem depth and journal templates, which is why Tectonic (modern LaTeX tooling) exists as the middle path.
Does Transformy convert docx or epub files?+
No. Transformy renders HTML with headless Chromium; it replaces the PDF-rendering step, not Pandoc's format conversion. Keep Pandoc for conversion and pair the two when the destination is PDF.
The bottom line
Sort yourself by document type and the answer falls out. Existing Pandoc pipeline, wants less toolchain: swap --pdf-engine to WeasyPrint or Typst and go home early. Typeset technical documents: Typst for new work, Tectonic if the LaTeX must stay. Styled business documents from a script: WeasyPrint. PDFs shipped from inside your product: convert Markdown to HTML and let Transformy render it, starting on the free tier (100 documents a month, no credit card), which is enough to see your stylesheet replace a LaTeX template you never liked maintaining.
Pandoc made every document format reachable from every other one. The alternatives above are for the last step, the one Pandoc always delegated anyway: turning the result into a PDF without a toolchain that outweighs your application.