Skip to content

List of CommonMark Implementations

PANCHOHACK edited this page Sep 22, 2024 · 1 revision

## Recently maintained projects

### C

  • [cmark](https://github.com/commonmark/cmark) (reference implementation, high performance executable and library)
  • [cmark-gfm](https://github.com/github/cmark) - GitHub’s fork of cmark with extensions for tables, etc.
  • [MD4C](https://github.com/mity/md4c) - very fast parser implementation with minimalistic interface (in XML-parsing analogy, it is more like a SAX parser, not DOM parser)

### C# ###

  • [CommonMark.NET](https://github.com/Knagis/CommonMark.NET) - available on [NuGet](https://www.nuget.org/packages/CommonMark.NET/)
  • [Markdig](https://github.com/lunet-io/markdig) - available on [NuGet](https://www.nuget.org/packages/Markdig/)

### Common Lisp

  • [cl-cmark](https://gitlab.com/HiPhish/cl-cmark) (wraps the C library)

### Crystal

  • [markd](https://github.com/icyleaf/markd) - written in Crystal

### D

  • [commonmark-d](https://github.com/p0nce/commonmark-d) (port of MD4C)
  • [hunt-markdown](https://github.com/huntlabs/hunt-markdown) (port of commonmark-java)

### Dart

  • [markdown](https://github.com/dart-lang/markdown) - available on [Pub](https://pub.dev/packages/markdown)

### Elixir

  • [Cmark](https://github.com/asaaki/cmark.ex) (wraps the C library)

### Emacs Lisp

  • [cmark](https://github.com/taku0/cmark-el) (port of commonmark.js)

### Go

  • [golang-commonmark/markdown](https://gitlab.com/golang-commonmark/markdown) - pure Go implementation
  • [go-commonmark](https://github.com/rhinoman/go-commonmark) (wraps the C library)
  • [goldmark](https://github.com/yuin/goldmark) - pure Go implementation
  • [Lute](https://github.com/88250/lute) - pure Go implementation

### Haskell

  • [cmark](http://hackage.haskell.org/package/cmark) (wraps the C library)
  • [commonmark-hs](https://github.com/jgm/commonmark-hs) - pure Haskell implementation

### Haxe

  • [necmark](https://github.com/ConstNW/necmark) (wraps the C library) - neko target

### Java

  • [commonmark-java](https://github.com/commonmark/commonmark-java) - pure Java
  • [flexmark-java](https://github.com/vsch/flexmark-java) - pure Java, with source level AST down to single characters

### JavaScript

  • [commonmark.js](https://github.com/jgm/commonmark.js) (reference implementation) - [`npm install commonmark`](https://www.npmjs.org/package/commonmark)
  • [markdown-it](https://github.com/markdown-it/markdown-it) (high speed pluggable implementation) - [`npm install markdown-it`](https://www.npmjs.org/package/markdown-it)
  • [cmark-emscripten](https://github.com/mvasilkov/cmark-emscripten) (port of the C library to [WebAssembly](https://developer.mozilla.org/en-US/docs/WebAssembly)) - [`npm install cmark-emscripten`](https://www.npmjs.com/package/cmark-emscripten)
  • [mdx](https://github.com/mdx-js/mdx) (superset of CommonMark that adds embedded JSX and import/export syntax)
  • [ciceromark](https://github.com/accordproject/markdown-transform) - The CiceroMark DOM extends the CommonMark DOM for [smart legal contracts](https://www.accordproject.org); defining nodes for `Clause`, `Variable`, and `ComputedVariable`

### Julia

  • [CommonMark.jl](https://github.com/MichaelHatherly/CommonMark.jl) (pure Julia implementation with extensions)

### Lua

  • [cmark-lua](https://github.com/jgm/cmark-lua) (wraps the C library) - [`luarocks install cmark`](https://luarocks.org/modules/jgm/cmark)
  • [lcmark](https://github.com/jgm/lcmark) (higher level interface around cmark, adding YAML metadata, filters, and templates)

### LuaTeX

  • [The Markdown Package for TeX](https://github.com/witiko/markdown) (Rewrite of lunamark Lua library for typesetting CommonMark documents in TeX)

### OCaml

  • [Cmarkit](https://erratique.ch/software/cmarkit) – pure OCaml implementation

### Perl

  • [CommonMark](https://metacpan.org/release/CommonMark) (wraps the C library)
  • [pmarkdown](https://metacpan.org/dist/Markdown-Perl) - pure Perl implementation

### PHP

  • [league/commonmark](http://commonmark.thephpleague.com/) - Highly-extensible PHP implementation based on commonmark.js with support for custom extensions
  • [cmark](http://docs.php.net/cmark) - PECL extension based on the original [cmark](https://github.com/jgm/cmark) implementation

### Python

  • [markdown-it-py](https://github.com/ExecutableBookProject/markdown-it-py) - A pure Python port of the JS markdown-it library; High speed and pluggable
  • [mistletoe](https://github.com/miyuchina/mistletoe) - Fastest, extensible implementation in pure Python
  • [Marko](https://github.com/frostming/marko) - A pure Python implementation, focusing on easy extensibility

### Ruby/RubyMotion

  • [CommonMarker](https://github.com/gjtorikian/commonmarker) (wraps the C library)
  • [motion-markdown-it](https://github.com/digitalmoksha/motion-markdown-it/) - Based on the JS markdown-it library, ported to Ruby and RubyMotion

### R

  • [commonmark](http://cran.r-project.org/package=commonmark) (wraps the C library)

### Racket

  • [commonmark](https://lexi-lambda.github.io/racket-commonmark/) — native Racket, with full test coverage

### Rust

  • [comrak](https://github.com/kivikakk/comrak) - Architecture based on cmark-gfm, with GitHub extensions.
  • [pulldown-cmark](https://github.com/google/pulldown-cmark) - Novel, performance-oriented architecture.
  • [markdown-rs](https://github.com/wooorm/markdown-rs) - CommonMark compliant markdown parser with ASTs and extensions

### Scala

  • [cmark-scala](https://github.com/sparsetech/cmark-scala) (wraps the C library)

### Scheme

  • [guile-commonmark](https://github.com/OrangeShark/guile-commonmark/) - GNU Guile Scheme

### Swift

  • [Down](https://github.com/iwasrobbed/Down) (wraps reference cmark)
  • [SwiftMark](https://github.com/Pyroh/SwiftMark) (wraps the C library)
  • [MarkdownSyntax](https://github.com/hebertialmeida/MarkdownSyntax) (wraps reference C library for AST access)

### Tcl

  • [tcl-cmark](https://github.com/apnadkarni/tcl-cmark) - wraps cmark-gfm

### TypeScript

  • [DefinitelyTyped](https://github.com/DefinitelyTyped/DefinitelyTyped) (JS library bindings, [NuGet](https://www.nuget.org/packages/commonmark.TypeScript.DefinitelyTyped))
  • [FlavorMark](https://github.com/AnyhowStep/flavormark) (Rewrite of commonmark.js with focus on modularizing parsing logic, [npm](https://www.npmjs.com/package/flavormark))

### Zig

  • [koino](https://github.com/kivikakk/koino) - Architecture based on Comrak/cmark-gfm, with GitHub extensions

## Not recently maintained

These projects are based on earlier versions of CommonMark and are now obsolete. But they might be good starting points for new work.

### Dart

  • [mdown](https://github.com/dikmax/mdown)

### Idris

  • [idris-commonmark](https://github.com/soimort/idris-commonmark)

### Haxe

  • [comark](https://github.com/ConstNW/comark)

### Lua

  • [luacmark](https://github.com/jgm/luacmark)
  • [commonmark-lua](https://github.com/jgm/commonmark-lua) - luajit + FFI

### Python

  • [pycommonmark](https://github.com/bpabel/pycommonmark)
  • [commonmark.py](https://github.com/rtfd/commonmark.py) - deprecated in favor of [markdown-it-py](https://github.com/ExecutableBookProject/markdown-it-py)

### Swift

  • [CommonMark.swift](https://github.com/bnickel/CommonMark.swift)
  • [SmarkDown.swft](https://github.com/SwiftStudies/SmarkDown) - Pure Swift