Markdown Parsing Libraries Comparison
marked vs markdown-it vs remark vs showdown
1 Year
markedmarkdown-itremarkshowdownSimilar Packages:
What's Markdown Parsing Libraries?

Markdown parsing libraries are essential tools in web development that convert Markdown text into HTML. They allow developers to easily integrate Markdown support in applications, enabling users to write content in a simple, readable format that can be rendered as structured HTML. These libraries vary in features, performance, and extensibility, catering to different use cases and developer preferences.

NPM Package Downloads Trend
Github Stars Ranking
Stat Detail
Package
Downloads
Stars
Size
Issues
Publish
License
marked12,999,97633,264953 kB175 days agoMIT
markdown-it7,611,89818,348767 kB218 months agoMIT
remark2,128,6977,72315.7 kB1a year agoMIT
showdown786,25014,331801 kB215-MIT
Feature Comparison: marked vs markdown-it vs remark vs showdown

Customization and Extensibility

  • marked:

    marked is designed to be minimal and does not offer extensive customization options. It focuses on speed and simplicity, which may limit its extensibility compared to other libraries.

  • markdown-it:

    markdown-it provides a rich plugin architecture that allows developers to extend its functionality easily. You can create custom rules, add new syntax, or modify existing behavior, making it highly adaptable to specific needs.

  • remark:

    remark is built around a plugin system that enables developers to create custom transformations and linting rules. This modular approach allows for extensive customization and integration of various Markdown processing tasks.

  • showdown:

    showdown offers basic customization through options but lacks a robust plugin system. It allows some configuration of the conversion process, but it is not as extensible as markdown-it or remark.

Performance

  • marked:

    marked is known for its speed and lightweight nature, making it one of the fastest Markdown parsers available. It is ideal for applications where performance is a top priority.

  • markdown-it:

    markdown-it is optimized for performance, providing a fast parsing engine that can handle large documents efficiently. Its architecture is designed for speed, making it suitable for high-performance applications.

  • remark:

    remark's performance can vary depending on the complexity of the transformations applied. While it is efficient for basic parsing, extensive transformations may impact speed, especially with large documents.

  • showdown:

    showdown is relatively fast for simple conversions but may not match the performance of markdown-it or marked in more complex scenarios. It is suitable for straightforward use cases.

Learning Curve

  • marked:

    marked is easy to learn and use, making it an excellent choice for beginners. Its simple API allows developers to get started quickly without a steep learning curve.

  • markdown-it:

    markdown-it has a moderate learning curve due to its extensive features and plugin system. Developers may need some time to fully understand its capabilities and how to leverage them effectively.

  • remark:

    remark has a steeper learning curve due to its modular architecture and the need to understand its plugin system. However, once familiar, developers can leverage its full potential for complex Markdown processing.

  • showdown:

    showdown is straightforward and easy to pick up, making it accessible for developers of all skill levels. Its simple API allows for quick implementation with minimal overhead.

Output Quality

  • marked:

    marked generates clean and valid HTML output, but it may not support all Markdown features as comprehensively as markdown-it. It is suitable for most standard use cases.

  • markdown-it:

    markdown-it produces high-quality HTML output that closely adheres to the Markdown specification. It supports a wide range of Markdown features, ensuring that the rendered output is accurate and consistent.

  • remark:

    remark focuses on producing high-quality output and allows for extensive transformations, ensuring that the final HTML meets specific requirements. Its flexibility is a significant advantage for complex projects.

  • showdown:

    showdown provides decent HTML output that is generally reliable. However, it may not handle all edge cases as effectively as other libraries, which could be a consideration for more complex Markdown.

Community and Support

  • marked:

    marked is widely used and has a large community, ensuring good support and resources. Its popularity means that developers can easily find solutions to common issues.

  • markdown-it:

    markdown-it has a strong community and is actively maintained, with a wealth of plugins and resources available. This support makes it easier for developers to find help and extend functionality.

  • remark:

    remark has a growing community with a focus on modular Markdown processing. While it may not be as large as some other libraries, it has dedicated contributors and resources available.

  • showdown:

    showdown has a decent community and is well-documented, but it may not have as many resources or plugins compared to more popular libraries like markdown-it or marked.

How to Choose: marked vs markdown-it vs remark vs showdown
  • marked:

    Select marked if you are looking for a lightweight and fast Markdown parser with a straightforward API. It is suitable for projects where performance is critical and you need a simple solution without extensive customization.

  • markdown-it:

    Choose markdown-it if you need a highly customizable and extensible Markdown parser that supports plugins and offers a fast rendering engine. It is ideal for projects that require advanced features like custom syntax or additional functionality through plugins.

  • remark:

    Opt for remark if you want a comprehensive ecosystem for Markdown processing that includes parsing, transforming, and linting. It is perfect for projects that require a modular approach and want to leverage the power of plugins for various transformations and checks.

  • showdown:

    Use showdown if you need a straightforward and easy-to-use Markdown to HTML converter that works well in both Node.js and browser environments. It is great for projects that prioritize simplicity and ease of integration.

README for marked

Marked

npm install size downloads github actions snyk

  • ⚡ built for speed
  • ⬇️ low-level compiler for parsing markdown without caching or blocking for long periods of time
  • ⚖️ light-weight while implementing all markdown features from the supported flavors & specifications
  • 🌐 works in a browser, on a server, or from a command line interface (CLI)

Demo

Checkout the demo page to see marked in action ⛹️

Docs

Our documentation pages are also rendered using marked 💯

Also read about:

Compatibility

Node.js: Only current and LTS Node.js versions are supported. End of life Node.js versions may become incompatible with Marked at any point in time.

Browser: Not IE11 :)

Installation

CLI:

npm install -g marked

In-browser:

npm install marked

Usage

Warning: 🚨 Marked does not sanitize the output HTML. Please use a sanitize library, like DOMPurify (recommended), sanitize-html or insane on the output HTML! 🚨

DOMPurify.sanitize(marked.parse(`<img src="x" onerror="alert('not happening')">`));

CLI

# Example with stdin input
$ marked -o hello.html
hello world
^D
$ cat hello.html
<p>hello world</p>
# Print all options
$ marked --help

Browser

<!doctype html>
<html>
<head>
  <meta charset="utf-8"/>
  <title>Marked in the browser</title>
</head>
<body>
  <div id="content"></div>
  <script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
  <script>
    document.getElementById('content').innerHTML =
      marked.parse('# Marked in the browser\n\nRendered by **marked**.');
  </script>
</body>
</html>

or import esm module

<script type="module">
  import { marked } from "https://cdn.jsdelivr.net/npm/marked/lib/marked.esm.js";
  document.getElementById('content').innerHTML =
    marked.parse('# Marked in the browser\n\nRendered by **marked**.');
</script>

License

Copyright (c) 2011-2022, Christopher Jeffrey. (MIT License)