A Haskell library and command-line tool for converting between dozens of markup formats, including Markdown, LaTeX, HTML, DOCX, and EPUB.
Pandoc is a Haskell library and command-line tool designed to convert documents from one markup format to another. It solves the problem of content lock-in by providing a universal translator for text-based formats, enabling authors to write once and publish everywhere. Its core strength lies in its extensive support for dozens of input and output formats, including lightweight markup, word processor files, and e-book standards.
Technical writers, academics, researchers, and developers who need to produce documents in multiple formats from a single source, especially those working with Markdown, LaTeX, or publishing to the web, print, and e-books.
Developers choose Pandoc for its unparalleled format coverage, reliability, and extensibility through filters. It is the de facto standard for markup conversion in open-source toolchains, offering a robust, scriptable solution that avoids proprietary conversion services.
Universal markup converter
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports over 40 input and 60 output formats, including DOCX, EPUB, LaTeX, and Jupyter notebooks, as listed in the extensive README tables, enabling broad interoperability.
Extends standard Markdown with built-in syntax for tables, footnotes, citations, and math, making it powerful for academic and technical writing without extra plugins.
Allows programmatic manipulation of the document AST using Lua or JSON filters, as highlighted in the README, enabling custom preprocessing and postprocessing for complex workflows.
Generates PDFs via multiple backends like LaTeX, Groff ms, or HTML conversion pipelines, providing adaptable paths to create print-ready documents from various sources.
As the README admits, conversions from expressive formats are lossy, with formatting details and complex tables not perfectly preserved, limiting fidelity for exact visual replication.
Creating custom readers, writers, or filters requires understanding Haskell, Lua, or the AST model, which can be daunting for non-developers or those seeking plug-and-play solutions.
Lacks a graphical user interface, making it less accessible for users who prefer drag-and-drop tools or visual feedback, as it relies solely on terminal commands.