Marked

A fast, low-level Markdown compiler that parses CommonMark and GFM into HTML in Node.js, browsers, or the CLI.

Library
npm
v18.1.1
37,263 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
94 /100 Excellent
Development Activity 96
Maintenance 96
Community 84
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
87 /100 Excellent
Architecture 90
Code Quality 92
Innovation 85
Learning Curve 82

Marked is a low-level Markdown compiler built for speed rather than convenience. Instead of a single opinionated black box, it exposes its lexer, parser, and renderer as separate stages so you can override tokenization or output rendering without forking the library. It ships as a zero-dependency ESM/CJS/UMD package with full TypeScript types, a CLI binary, and conformance to the CommonMark and GitHub Flavored Markdown specifications.

Because Marked does no HTML sanitization by design, it is almost always paired with a sanitizer (DOMPurify, sanitize-html) when rendering untrusted input, which the project’s own README calls out explicitly as a security requirement rather than an afterthought.

What You Get

  • A synchronous or async marked.parse() function that compiles Markdown strings to HTML in one call
  • A pluggable extension system (marked.use()) for adding custom tokenizers, renderers, and walk-tokens hooks without patching core
  • First-class TypeScript definitions generated from the source, plus ESM, CJS, and UMD builds for Node.js, bundlers, and <script> tags
  • A marked CLI binary and man page for compiling Markdown from stdin or files on the command line
  • CommonMark and GitHub Flavored Markdown spec conformance, verified against the official test suites on every release

Common Use Cases

  • Rendering user-authored Markdown (comments, README previews, CMS content) to HTML before display
  • Powering static site generators and documentation tools that compile .md source files into pages
  • Building custom Markdown dialects or output formats (e.g. rendering to React elements or plain text) via custom renderers
  • Adding live Markdown preview panes in editors and note-taking apps

Under The Hood

Architecture - Marked’s pipeline is a clean three-stage compiler: src/Lexer.ts tokenizes raw Markdown into a TokensList using regex rule tables defined in src/rules.ts (separate block/inline rule sets), src/Tokenizer.ts implements the actual token-matching logic per Markdown construct (headings, lists, links, code fences, tables), and src/Parser.ts walks the resulting token tree and dispatches each node to src/Renderer.ts (or src/TextRenderer.ts for plain-text output). A stateful Marked class in src/Instance.ts wraps lexer, parser, tokenizer, renderer, and src/Hooks.ts together so that .use() extensions can override any single stage in isolation, and walkTokens() provides a generic tree-visitor for post-processing (e.g. rewriting links) without touching the core render path.

Tech Stack - The library is authored entirely in strict TypeScript (strict: true, verbatimModuleSyntax in tsconfig.json) with zero runtime dependencies, and built with esbuild (esbuild.config.js) into ESM, UMD, and CJS-compatible output plus a bundled .d.ts via dts-bundle-generator. Releases are automated through semantic-release with npm provenance enabled, and the package publishes a CLI binary (bin/marked.js) and man page (man/marked.1) alongside the library entry points.

Code Quality - The test suite spans roughly 4,600 lines across test/unit/*.test.js (Lexer, Parser, Hooks, instance, and CLI tests), plus a dedicated spec-conformance runner (test/run-spec-tests.js) that executes the official CommonMark and GFM fixture suites in test/specs. CI (test npm script) additionally runs UMD, CJS, and TypeScript-declaration smoke tests (test:umd, test:cjs, test:types) and ESLint via @markedjs/eslint-config on every change, so packaging regressions across module formats are caught before release, not just logic bugs.

API Design - The common case is a single call, marked.parse(markdown), with typed sync/async overloads controlled by an async option. Advanced customization goes through marked.use() with typed MarkedExtension objects that can supply custom tokenizers, renderers, or hooks, which keeps the 90% use case trivial while still exposing the full token model (src/Tokens.ts) for the minority of integrators who need to alter how specific Markdown constructs are parsed or rendered.

Used by 113 apps in this directory

TypeScript
91%
Apache 2.0

Helicone

AI Development · Analytics · Monitoring

6,235

An open-source AI gateway and LLM observability platform that routes requests to 100+ models while logging cost, latency, and full traces for every call.

View details
74
Repo Health
81
Technical
65
Dependency
Built with
TypeScript 91%
Updated 6 days ago
TypeScript
98%
Other

Hexabot

AI Development · Automation

1,160

Build and run agentic workflows across channels with YAML, tools, and RAG

View details
76
Repo Health
76
Technical
65
Dependency
Built with
TypeScript 98%
Updated 1 months ago
TypeScript
91%
Apache 2.0

HyperFrames

AI Design Tools · AI Development

70,938

Turn plain HTML and CSS into deterministic, pixel-perfect MP4 videos — authored by humans or AI agents, rendered by headless Chrome and FFmpeg.

View details
84
Repo Health
83
Technical
65
Dependency
Built with
TypeScript 91%
Updated 6 days ago
Rust
72%
Other

iii

Developer Tools · Devops

18,854

Compose, extend, and observe every backend service in real time using three primitives: Workers, Functions, and Triggers.

View details
87
Repo Health
85
Technical
65
Dependency
Built with
Rust 72%
TypeScript 16%
Updated 1 weeks ago
Vue
50%
GPL 3.0

IT-Tools

Developer Tools

40,954

A unified collection of 88 web-based developer utilities — from JSON formatting to subnet calculation — all self-hostable, keyboard-searchable, and offline-ready.

View details
60
Repo Health
74
Technical
63
Dependency
Built with
Vue 50%
TypeScript 48%
Updated 1 weeks ago
TypeScript
92%
MIT

Kaneo

Product Management · Productivity · Project Management

9,574

Lightweight self-hosted project management that gives you kanban boards, GitHub sync, and full team collaboration without the enterprise bloat.

View details
87
Repo Health
81
Technical
70
Dependency
Built with
TypeScript 92%
Updated 6 days ago
TypeScript
52%

Kener

Devops · Monitoring

5,216

Stunning, self-hosted status pages with real-time uptime monitoring, incident management, and multi-channel notifications in a single Docker container.

View details
87
Repo Health
76
Technical
66
Dependency
Built with
TypeScript 52%
Svelte 45%
Updated 1 weeks ago
TypeScript
98%
MIT

Kimi Code CLI

AI Agents · AI Code Assistants · Developer Tools

7,983

A single-binary, terminal-native coding agent that reads, edits, and runs code end to end, built by Moonshot AI for Kimi models but pluggable with Anthropic, OpenAI, and Google providers too.

View details
83
Repo Health
87
Technical
67
Dependency
Built with
TypeScript 98%
Updated 1 weeks ago
PHP
55%
AGPL 3.0

Leantime

Collaboration · Productivity · Project Management

11,890

Project management built for ADHD, autism, and dyslexia — simple as Trello, powerful as Jira

View details
90
Repo Health
68
Technical
62
Dependency
Built with
PHP 55%
CSS 18%
Blade 14%
Updated 1 weeks ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers