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
54%
Other

Focalboard

Collaboration · Productivity · Project Management

26,522

Self-hosted, open source project management with Kanban, table, gallery, and calendar views — a privacy-first alternative to Trello, Notion, and Asana.

View details
56
Repo Health
82
Technical
64
Dependency
Built with
TypeScript 54%
Go 40%
Updated 5 months ago
Go
91%
Apache 2.0

Gatus

Devops · Monitoring

12,386

Developer-oriented health dashboard with active endpoint probing, multi-protocol checks, and 40+ alerting integrations so you know about failures before your users do.

View details
84
Repo Health
84
Technical
75
Dependency
Built with
Go 91%
Updated 1 weeks ago
TypeScript
63%
Apache 2.0

Gemma Gem

AI Assistants

975

A Chrome extension running Google's Gemma 4 model entirely on-device via WebGPU — a browser AI assistant that reads pages, clicks buttons, fills forms, and runs JavaScript with no API keys or cloud dependency.

View details
30
Repo Health
66
Technical
88
Dependency
Built with
TypeScript 63%
JavaScript 37%
Updated 5 months ago
TypeScript
79%
AGPL 3.0

Ghostfolio

Invoicing Finance

9,565

Track your stocks, ETFs, and crypto with a privacy-first, self-hostable wealth management platform built for data-driven investors.

View details
93
Repo Health
79
Technical
67
Dependency
Built with
TypeScript 79%
HTML 19%
Updated 1 weeks ago
Rust
68%
Other

GitButler

AI Development · Developer Tools · Devops

21,841

Git, but better — a modern version control client with stacked branches, parallel workflows, unlimited undo, and first-class support for AI-powered development.

View details
89
Repo Health
84
Technical
66
Dependency
Built with
Rust 68%
TypeScript 20%
Updated 6 days ago
Ruby
66%
Other

GitLab

Developer Tools · Devops

24,537

The complete DevOps platform that unifies Git hosting, CI/CD, issue tracking, and security scanning into a single self-hostable application.

View details
87
Repo Health
86
Technical
65
Dependency
Built with
Ruby 66%
JavaScript 20%
Updated 1 weeks ago
TypeScript
47%
AGPL 3.0

Grafana

Analytics · Monitoring

77,469

The open-source observability platform that unifies metrics, logs, and traces from any data source into dynamic, queryable dashboards.

View details
95
Repo Health
91
Technical
63
Dependency
Built with
TypeScript 47%
Go 47%
Updated 6 days ago
TypeScript
83%
Apache 2.0

Grist

Databases · No Code Platforms

11,991

A modern relational spreadsheet that combines Python-powered formulas, drag-and-drop dashboards, and granular access controls in a self-hostable, SQLite-backed data platform.

View details
91
Repo Health
93
Technical
63
Dependency
Built with
TypeScript 83%
Python 11%
Updated 1 weeks ago
Go
62%
Apache 2.0

Harness Open Source

Code Editors · Developer Tools · Devops

38,684

A unified open source DevOps platform combining Git hosting, CI/CD pipelines, cloud development environments, and artifact registries in a single self-hosted system.

View details
90
Repo Health
79
Technical
64
Dependency
Built with
Go 62%
TypeScript 33%
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