Repolode
jgm

jgm/pandoc

Universal markup converter, a Haskell library and CLI that converts documents between dozens of markup formats such as Markdown, HTML, LaTeX, and DOCX.

Open-source alternative to:Microsoft Word

Stars
46,661
Forks
6,529
Open issues
1,048
Last commit
16 hours ago

What is it?

Pandoc is a Haskell library and command-line tool for converting documents from one markup format to another. It reads a wide range of inputs, including Markdown variants, HTML, LaTeX, DocBook, Word docx, EPUB, and spreadsheets, and writes to formats such as HTML, PDF, PowerPoint, EPUB, and typst.

It works in two stages: readers parse each input into a shared intermediate tree, and writers render that tree into the target format. This means adding a new format requires only a reader or a writer, and users can transform the intermediate tree with Lua or other filters. PDF output is produced through LaTeX, Groff ms, or HTML.

Conversions from Pandoc's own Markdown are designed to be lossless, but conversions from more expressive formats may lose some detail, such as complex tables or formatting like margin sizes.

Key features

  • 01Converts between dozens of input and output formats, including Markdown, HTML, LaTeX, and DOCX.
  • 02Produces PDF through LaTeX, Groff ms, or HTML engines.
  • 03Supports citations and bibliography formats such as BibTeX and CSL JSON.
  • 04Extensible through Lua filters and custom readers or writers.
  • 05Ships as both a Haskell library and a command-line tool.

Use cases

  • Converting Markdown notes or manuscripts into Word, EPUB, or PDF documents.
  • Generating slide decks from Markdown with reveal.js or Beamer.
  • Migrating documentation from one markup system, such as reStructuredText or DocBook, to another.
  • Building document pipelines in CI that output several formats from one source.

Quick start

  1. 1

    Follow the installation guide in INSTALL.md to install pandoc

  2. 2

    Read the User's Guide to learn how to convert documents

Things to know

  • Licensed under GPL-2.0, a copyleft license that affects how derived code can be distributed.
  • Conversions from formats more expressive than pandoc's Markdown are often lossy.

Topics

FAQ

What is pandoc?
Universal markup converter, a Haskell library and CLI that converts documents between dozens of markup formats such as Markdown, HTML, LaTeX, and DOCX. Pandoc is a Haskell library and command-line tool for converting documents from one markup format to another. It reads a wide range of inputs, including Markdown variants, HTML, LaTeX, DocBook, Word docx, EPUB, and spreadsheets, and writes to formats such as HTML, PDF, PowerPoint, EPUB, and typst.
Is pandoc free to use? What license does it have?
pandoc is open source under the GPL-2.0 license. Check the license terms before using it in commercial products.
Is pandoc still maintained?
Actively maintained. The last commit to pandoc was on Oct 20, 2026.
What can I use pandoc for?
Converting Markdown notes or manuscripts into Word, EPUB, or PDF documents. Generating slide decks from Markdown with reveal.js or Beamer. Migrating documentation from one markup system, such as reStructuredText or DocBook, to another. Building document pipelines in CI that output several formats from one source.
How do I install pandoc?
Follow the installation guide in INSTALL.md to install pandoc Read the User's Guide to learn how to convert documents
Where can I get pandoc?
The source code and installation instructions are on GitHub: https://github.com/jgm/pandoc

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects