awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
xoofx avatar

xoofx/markdig

0
View on GitHub↗
5,127 stars·505 forks·C#·bsd-2-clause·13 views

Markdig

Markdig is a markdown parser library that converts text into structured HTML, plain text, or other formats using a configurable pipeline. It functions as a CommonMark compliant parser and an abstract syntax tree generator that transforms markdown into a hierarchical tree of block and inline nodes with precise source location mapping.

The project is distinguished by a decoupled renderer architecture that separates parsing logic from output generation, enabling the transformation of the syntax tree into non-HTML formats such as LaTeX or XAML. It also serves as a lossless markdown processor by tracking non-semantic whitespace and trivia, which allows documents to be re-rendered without losing original formatting.

The library covers a broad range of capabilities including the ability to extend markdown syntax through pluggable parser extensions and the manipulation of the abstract syntax tree for document analysis. It supports advanced elements such as tables, mathematics, and footnotes, and includes features for international text handling, typography enhancements, and YAML front matter extraction.

Rendered output can be written directly to a text stream to reduce memory overhead for large documents.

Features

  • Markdown to HTML Converters - Transforms Markdown plaintext markup into structured HTML for web display.
  • CommonMark Compliant Parsers - Adheres to the CommonMark standard to ensure consistent processing of headings, lists, and links.
  • Markdown Abstract Syntax Trees - Generates an abstract syntax tree with precise source locations to power external analysis tools and highlighters.
  • Tree-to-Text Serializers - Implements a mechanism to serialize the abstract syntax tree back into various text formats.
  • Markdown Parsers - Supports extending standard markdown syntax through a pluggable pipeline of custom block and inline parsers.
  • Custom Format Renderers - Transforms parsed markdown into alternative output formats such as LaTeX or XAML.
  • Markdown Parsing Pipelines - Converts markdown text into structured HTML or other formats using a configurable pipeline of extensions.
  • Markdown Renderers - Provides a flexible rendering system to transform parsed markdown into multiple target formats.
  • Non-HTML Renderers - Enables transformation of markdown into alternative formats like LaTeX and XAML via a decoupled architecture.
  • Markdown to Plain Text Converters - Strips all formatting and HTML tags from a document to produce a clean, text-only version of content.
  • Trivia Tracking - Ensures lossless processing by tracking whitespace and trivia, allowing the source to be re-rendered exactly.
  • Source Text Mapping - Maps every node in the parsed syntax tree to its precise character offsets in the source text.
  • AST Node Location Mapping - Maps every node in the parsed syntax tree back to its exact character offsets and line positions.
  • Abstract Syntax Tree Parsing - Provides the ability to parse markdown into a structured abstract syntax tree for further analysis and rendering.
  • Parser Rule Extensions - Provides a pluggable system for adding custom block and inline parsing rules to the markdown processor.
  • Markdown Block Formatting - Produces structured components such as blockquotes and thematic breaks based on markdown markers.
  • Text Formatting Tools - Applies bold and italic styling to text using standard markdown emphasis markers.
  • Markdown - Supports custom markers and structural elements through a pluggable processing pipeline.
  • Unordered Lists - Generates structured ordered and unordered lists, including support for nested items.
  • Markdown Parser Extensions - Supports the registration of custom block and inline parsers to expand supported markdown syntax.
  • Markdown Processors - Acts as a lossless processor by tracking non-semantic whitespace and trivia for exact re-rendering.
  • Technical Content Renderers - Provides rendering for advanced technical elements including mathematics, tables, and footnotes.
  • Document Metadata Extraction - Extracts YAML front matter and manages pragma lines to enrich document metadata.
  • Code Display & Snippets - Supports the rendering of inline and block code snippets with language identifiers.
  • Plain Text Converters - Provides the ability to strip all formatting and tags to output plain-text content.
  • Markdown Roundtrips - Parses trivia characters like whitespace to allow documents to be modified and rendered without losing original formatting.
  • Parsing Rule Configurations - Allows users to toggle specific syntax extensions and parsing rules through a configuration pipeline.
  • Format-Preserving Printing - Tracks non-semantic elements and whitespace during parsing to ensure the document can be re-rendered exactly.
  • Stream-Based Rendering - Writes rendered content directly to a text stream to reduce memory overhead for large documents.
  • International Markdown Formatting - Supports right-to-left text layouts and applies specialized emphasis delimiter rules for CJK languages.
  • Character-Level Parser Entry Points - Allows registering pluggable entry points at the character level to add parsing logic for new syntax elements.
  • Logic-Rendering Decouplers - Separates the markdown parsing logic from the rendering stage to allow for multiple output formats.
  • Two-Stage Parsing - Utilizes a two-stage parsing process that separates block-level structure scanning from inline value extraction.
  • Document Tree Traversers - Implements depth-first search traversal of the document tree for analysis and modification.
  • Syntax Tree Construction - Provides the ability to traverse and programmatically modify the syntax tree before rendering.
  • Markdown AST Manipulation - Performs structural changes to the document tree while preserving parent-child relationships.
  • Streaming Rendering - Writes converted markdown content directly to a text stream to minimize memory usage for large documents.

Star history

Star history chart for xoofx/markdigStar history chart for xoofx/markdig

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Frequently asked questions

What does xoofx/markdig do?

Markdig is a markdown parser library that converts text into structured HTML, plain text, or other formats using a configurable pipeline. It functions as a CommonMark compliant parser and an abstract syntax tree generator that transforms markdown into a hierarchical tree of block and inline nodes with precise source location mapping.

What are the main features of xoofx/markdig?

The main features of xoofx/markdig are: Markdown to HTML Converters, CommonMark Compliant Parsers, Markdown Abstract Syntax Trees, Tree-to-Text Serializers, Markdown Parsers, Custom Format Renderers, Markdown Parsing Pipelines, Markdown Renderers.

What are some open-source alternatives to xoofx/markdig?

Open-source alternatives to xoofx/markdig include: lunet-io/markdig — Markdig is a high-performance Markdown processor for .NET applications that converts Markdown text into HTML or other… commonmark/commonmark.js — Commonmark.js is a library designed to parse and render text formatted according to the CommonMark specification. It… russross/blackfriday — Blackfriday is a Go library for parsing and converting Markdown text into HTML, LaTeX, and other structured formats.… remarkjs/remark — Remark is a markdown processor and transformer that converts markdown text into a structured JSON abstract syntax tree… jonschlinkert/remarkable — Remarkable is an extensible Markdown parser library that implements the CommonMark specification and supports GitHub… syntax-tree/mdast — The project provides a standardized abstract syntax tree specification and utility library for parsing, transforming,…

Open-source alternatives to Markdig

Similar open-source projects, ranked by how many features they share with Markdig.
  • lunet-io/markdiglunet-io avatar

    lunet-io/markdig

    5,257View on GitHub↗

    Markdig is a high-performance Markdown processor for .NET applications that converts Markdown text into HTML or other target formats. It is a CommonMark compliant parser and extensible engine that can transform Markdown into a searchable and manipulatable abstract syntax tree. The library provides a framework for adding custom syntax and rendering logic through a modular pipeline of parsers and renderers. It supports native ahead-of-time compilation and trimming to minimize binary size. Capabilities include the generation of structured HTML with custom attributes and styling, the extraction

    C#
    View on GitHub↗5,257
  • commonmark/commonmark.jscommonmark avatar

    commonmark/commonmark.js

    1,559View on GitHub↗

    Commonmark.js is a library designed to parse and render text formatted according to the CommonMark specification. It functions as a document processing pipeline that converts plain text into structured HTML or an abstract syntax tree, enabling developers to programmatically inspect, modify, and transform document elements. The library distinguishes itself through its strict adherence to standardized parsing rules, ensuring consistent and predictable output across different software environments. It provides a robust framework for document tree manipulation, allowing users to traverse, insert,

    JavaScript
    View on GitHub↗1,559
  • russross/blackfridayrussross avatar

    russross/blackfriday

    5,614View on GitHub↗

    Blackfriday is a Go library for parsing and converting Markdown text into HTML, LaTeX, and other structured formats. It functions as an extensible Markdown processor that transforms syntax into target markup languages. The project is distinguished by its pluggable rendering architecture, which allows for the production of diverse output targets such as Slack message styles, Confluence Wiki Markup, and GitHub Flavored Markdown. It supports custom syntax extensions including definition lists, footnotes, autolinks, and strikethroughs. The processor includes utilities for generating automatic ta

    Go
    View on GitHub↗5,614
  • remarkjs/remarkremarkjs avatar

    remarkjs/remark

    8,911View on GitHub↗

    Remark is a markdown processor and transformer that converts markdown text into a structured JSON abstract syntax tree for programmatic manipulation. It functions as a plugin-based tool within the unified ecosystem, allowing users to parse, transform, and stringify markdown content. The project is distinguished by its extensibility through a plugin system that supports custom markdown syntax extensions, the introduction of new markup elements, and the definition of custom processing logic. This framework enables the modification of content through a visitor-pattern traversal of the syntax tre

    JavaScript
    View on GitHub↗8,911
See all 30 alternatives to Markdig→