CC

comarkdown/comark

Developer tools
1.1K stars Quality 71 Trend 72MIT

A high-performance Markdown parser and renderer for Angular, React, Svelte, Vue, HTML and ANSI.

Overview

Parse and render Markdown anywhere with one JavaScript library for HTML, ANSI, Vue, React, Svelte and Angular, plus plugins and streaming. Comark supports CommonMark and GFM, then parses them into a compact, serializable document at build time, runtime, or during a stream. Use the same document across renderers, or extend the syntax with readable components and attributes when you need richer content. - : parseMarkdown(markdown) is a pure function returning a compact, serializable Markdown document. Content from a database, CMS, or LLM is live the moment it is saved. No rebuild, no redeploy. (Comark vs MDX) - : auto-close completes unterminated syntax (**One parser, every renderer**Still just Markdown**Plugin ecosystem**Decoupled parse & render**Fast**: built on markdown-exit, a TypeScript rewrite of markdown-it, with full TypeScript support. The component and attribute syntax builds on five years of production use in MDC. Read Why Comark for the full story.

README

comark

Comark is an open-source Markdown parser and renderer with components, attributes and plugins. It streams AI output to React, Vue, Svelte, Angular, HTML and the terminal.

Comark supports CommonMark and GFM, then parses them into a compact, serializable document at build time, runtime, or during a stream. Use the same document across renderers, or extend the syntax with readable components and attributes when you need richer content.

# Regular Markdown

With a custom component:

::alert{type="warning"}
This is **Markdown** inside your own component.
::

Why Comark

  • Runtime parsing: parseMarkdown(markdown) is a pure function returning a compact, serializable Markdown document. Content from a database, CMS, or LLM is live the moment it is saved. No rebuild, no redeploy. (Comark vs MDX)
  • Streaming built in: auto-close completes unterminated syntax (**bold, open code fences, half-open components) so AI output renders correctly at every frame.
  • One parser, every renderer: the same source renders to HTML, ANSI, Vue, React, Svelte, and Angular. Your content outlasts your framework.
  • Still just Markdown: CommonMark + GFM (with a few differences), frontmatter, and {.class} attributes on native elements. Components are opt-in syntax, not a new language.
  • Plugin ecosystem: Shiki highlighting, KaTeX math, Mermaid diagrams, TOC, alerts, footnotes and more, plus compatibility with existing markdown-it plugins.
  • Decoupled parse & render: parse once on the server, send the serializable document (['tag', props, ...children]) to the client, render without re-parsing.
  • Fast: built on markdown-exit, a TypeScript rewrite of markdown-it, with full TypeScript support.

The component and attribute syntax builds on five years of production use in MDC. Read Why Comark for the full story.

Quick Start

npm install comark
import { parseMarkdown } from 'comark'

const tree = await parseMarkdown('# Hello **World**')
// { nodes: [['h1', { id: 'hello' }, 'Hello ', ['strong', {}, 'World']]], frontmatter: {}, meta: {} }

Then pick a renderer:

Vue

npm install @comark/vue katex

  {{ chatMessage }}

React

npm install @comark/react katex
import { Markdown } from '@comark/react'
import math, { Math } from '@comark/react/plugins/math'

function App() {
  const chatMessage = ...
  return {chatMessage}
}

Svelte

npm install @comark/svelte katex

Angular

npm install @comark/angular katex
import { Component } from '@angular/core'
import { Markdown } from '@comark/angular'
import math, { Math } from '@comark/angular/plugins/math'

@Component({
  selector: 'app-chat',
  standalone: true,
  imports: [Markdown],
  template: ``,
})
export class ChatComponent {
  chatMessage = ...
}

HTML (No Framework)

npm install @comark/html
import { renderHtml } from '@comark/html'

const chatMessage = ...

const html = await renderHtml(chatMessage)

Packages

Package Description
comark Core parser, AST utilities, plugins
@comark/vue Vue 3 renderer
@comark/react React renderer (Next.js, Server Components)
@comark/svelte Svelte 5 renderer
@comark/angular Angular renderer
@comark/nuxt Nuxt module with auto-imports
@comark/html HTML string renderer
@comark/ansi ANSI terminal renderer

Agent skill

Coding agents can install the Comark skill from the docs site:

npx skills add https://comark.dev

See Installation on comark.dev for details.

License

Made with ❤️

Published under MIT License.

View this README on GitHub

Recommended Tools

Try a different keyword or remove a filter.

Install

npx skillfish add comarkdown/comark