# jgm/pandoc

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/jgm-pandoc).**

42,166 stars · 3,772 forks · Haskell · gpl-2.0

## Links

- GitHub: https://github.com/jgm/pandoc
- Homepage: https://pandoc.org
- awesome-repositories: https://awesome-repositories.com/repository/jgm-pandoc.md

## Topics

`commonmark` `converter` `document` `haskell` `markdown` `markup` `pandoc` `presentation` `publishing`

## Description

Pandoc is a universal document converter that translates content between a wide range of markup and binary formats. It functions by parsing input documents into a unified intermediate abstract syntax tree, which serves as the foundation for consistent manipulation and transformation across diverse output types.

The system is distinguished by its modular reader-writer pipeline, which decouples input parsing from output generation to allow for granular control over document structure. Users can programmatically manipulate this intermediate tree through a robust filter system, supporting both external JSON-based interop and an integrated scripting environment for custom transformations. This architecture enables complex document processing tasks, such as automated scholarly publishing, where citations, bibliographies, and mathematical expressions are managed through a specialized toolchain.

Beyond core conversion, the project provides a comprehensive templating engine that merges structured document data with customizable templates to produce final outputs with specific styling and layout requirements. It also offers a network-based server mode for API-driven and batch processing, allowing the tool to be integrated into automated technical content pipelines.

The software is primarily operated via a command-line interface, which provides extensive configuration options for managing input formats, citation styles, and document metadata.

## Tags

### Content Management & Publishing

- [Document Conversion Engines](https://awesome-repositories.com/f/content-management-publishing/document-conversion-engines.md) — Translates documents between formats by parsing input into a structured tree and rendering it into the desired output. ([source](https://pandoc.org/using-the-pandoc-api.html))
- [Universal Document Converters](https://awesome-repositories.com/f/content-management-publishing/universal-document-converters.md) — Translates documents between various markup and binary formats using a unified internal structure.
- [Document Converters](https://awesome-repositories.com/f/content-management-publishing/document-converters.md) — Translates content between diverse markup and file formats while maintaining document structure.
- [Document Parsers](https://awesome-repositories.com/f/content-management-publishing/document-parsers.md) — Provides a unified intermediate tree structure for consistent document manipulation and transformation.
- [Scholarly Publishing Toolchains](https://awesome-repositories.com/f/content-management-publishing/scholarly-publishing-toolchains.md) — Provides a specialized environment for managing complex academic document requirements.
- [Document Conversion Pipelines](https://awesome-repositories.com/f/content-management-publishing/document-conversion-pipelines.md) — Decouples input parsing from output generation using independent modules connected through a shared document model.
- [Document Templates](https://awesome-repositories.com/f/content-management-publishing/document-templates.md) — Supports custom document templates with variables, conditional logic, and loops to control output structure. ([source](https://pandoc.org/MANUAL.html))
- [Document Filter Interfaces](https://awesome-repositories.com/f/content-management-publishing/document-filter-interfaces.md) — Allows external programs to manipulate the document tree by consuming and producing serialized JSON.
- [Document Rendering Engines](https://awesome-repositories.com/f/content-management-publishing/document-rendering-engines.md) — Merges structured document data with templates to produce styled final outputs.
- [Document Transformation Frameworks](https://awesome-repositories.com/f/content-management-publishing/document-transformation-frameworks.md) — Modifies document content by applying functions to specific elements to automate extraction and transformation. ([source](https://pandoc.org/using-the-pandoc-api.html))
- [Scholarly Publishing Tools](https://awesome-repositories.com/f/content-management-publishing/scholarly-publishing-tools.md) — Automates the generation of professional academic papers and technical reports.
- [Template Engines](https://awesome-repositories.com/f/content-management-publishing/template-engines.md) — Compiles and merges document templates with variable contexts for rendering. ([source](https://pandoc.org/lua-filters.html))
- [Abstract Syntax Tree Processors](https://awesome-repositories.com/f/content-management-publishing/abstract-syntax-tree-processors.md) — Provides a framework for programmatically manipulating document content via AST transformations.
- [Document Construction](https://awesome-repositories.com/f/content-management-publishing/document-construction.md) — Provides constructors to programmatically build and manipulate document blocks and metadata. ([source](https://pandoc.org/lua-filters.html))
- [Lua Document Filters](https://awesome-repositories.com/f/content-management-publishing/lua-document-filters.md) — Applies custom document filters to manipulate the AST during conversion. ([source](https://pandoc.org/lua-filters.html))
- [Template Rendering Engines](https://awesome-repositories.com/f/content-management-publishing/template-rendering-engines.md) — Generates final documents by merging structured data into customizable text templates.
- [Content Processing](https://awesome-repositories.com/f/content-management-publishing/content-processing.md) — Flattens block structures and renders citations during document processing. ([source](https://pandoc.org/lua-filters.html))
- [Document Formatting Tools](https://awesome-repositories.com/f/content-management-publishing/document-formatting-tools.md) — Produces standalone documents with headers and footers by applying custom templates. ([source](https://pandoc.org/MANUAL.html))
- [Document Templating Engines](https://awesome-repositories.com/f/content-management-publishing/document-templating-engines.md) — Standardizes document outputs through reusable templates and dynamic variable injection.
- [Metadata Schemas](https://awesome-repositories.com/f/content-management-publishing/metadata-schemas.md) — Defines document properties like title and author to populate standard fields in various output formats. ([source](https://pandoc.org/MANUAL.html))
- [Technical Publishing Workflows](https://awesome-repositories.com/f/content-management-publishing/technical-publishing-workflows.md) — Integrates document processing into automated workflows for multi-platform publishing.
- [Tree Traversal Utilities](https://awesome-repositories.com/f/content-management-publishing/tree-traversal-utilities.md) — Processes document elements by walking the hierarchical tree structure to apply transformations and validation.
- [Citation Management Tools](https://awesome-repositories.com/f/content-management-publishing/citation-management-tools.md) — Processes citations and bibliographies using standard styles with support for external bibliography files. ([source](https://pandoc.org/MANUAL.html))
- [Custom Writer Modules](https://awesome-repositories.com/f/content-management-publishing/custom-writer-modules.md) — Defines custom logic to control how document elements are rendered into a specific output format. ([source](https://pandoc.org/custom-writers.html))
- [Document Structuring](https://awesome-repositories.com/f/content-management-publishing/document-structuring.md) — Organizes document blocks into hierarchical structures with automated section numbering. ([source](https://pandoc.org/lua-filters.html))
- [Document Transformation Pipelines](https://awesome-repositories.com/f/content-management-publishing/document-transformation-pipelines.md) — Automates complex document structure changes and content extraction through programmatic filters.
- [Format Configuration Systems](https://awesome-repositories.com/f/content-management-publishing/format-configuration-systems.md) — Manages optional parsing and rendering features to allow granular control over document-specific syntax.
- [JSON Document Filters](https://awesome-repositories.com/f/content-management-publishing/json-document-filters.md) — Enables document content transformation through external JSON-based filter programs. ([source](https://pandoc.org/filters.html))
- [Text Format Readers](https://awesome-repositories.com/f/content-management-publishing/text-format-readers.md) — Defines custom logic to parse text-based input formats into a structured document tree. ([source](https://pandoc.org/custom-readers.html))
- [Text Layout Engines](https://awesome-repositories.com/f/content-management-publishing/text-layout-engines.md) — Applies layout primitives to generate reflowable plain-text documents. ([source](https://pandoc.org/lua-filters.html))

### Web Development

- [Document Conversion APIs](https://awesome-repositories.com/f/web-development/document-conversion-apis.md) — Provides an API for translating documents between formats via network requests. ([source](https://pandoc.org/pandoc-server.html))
- [Batch Processing](https://awesome-repositories.com/f/web-development/batch-processing.md) — Processes multiple document snippets efficiently in a single batch request. ([source](https://pandoc.org/pandoc-server.html))

### Data & Databases

- [JSON Processing](https://awesome-repositories.com/f/data-databases/json-processing.md) — Encodes and decodes document tree elements to and from JSON. ([source](https://pandoc.org/lua-filters.html))
