Marked
A fast, low-level Markdown compiler that parses CommonMark and GFM into HTML in Node.js, browsers, or the CLI.
Repository Health
Technical Analysis
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
markedCLI 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
.mdsource 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 112 apps in this directory
Openship
Devops · Hosting Control Panel
Openship is an open-source, self-hostable deployment platform that points at a repo and builds, ships, routes, and TLS-terminates the app — driven from a desktop app, web dashboard, or CLI.
OpenWiki
Developer Tools
A LangChain-built CLI that writes and maintains codebase documentation automatically — generates an initial wiki, refreshes it as the repo changes, and can open a daily PR of documentation updates via GitHub Actions.
openwork
AI Assistants · Automation
OpenWork is a free, open-source desktop app for running AI agent workflows on your own files with 50+ LLMs, extensible skills, and MCP server support — the open-source alternative to Claude Cowork and Codex.
Operately
AI Assistants · Collaboration · Productivity
The open source company operating system that unifies OKRs, projects, and team execution with built-in accountability cadences.
Operational
Analytics · Automation · Monitoring
Open-source event tracker with real-time push notifications and action buttons for tech founders.
Orca
AI Agents · AI Code Assistants
An open-source Agent Development Environment that orchestrates fleets of parallel AI coding agents — Claude Code, Codex, Gemini and more — each running in its own isolated git worktree.
overleaf
Collaboration · Productivity
Open-source, real-time collaborative LaTeX editor with sandboxed compilation and full TeXLive support for self-hosted academic and research teams.
Papra
Bookmarks Archiving
Self-hosted document archiving with email ingestion, OCR full-text search, and pluggable storage — store once, find anything.
Penpot
Design Tools
Open-source design platform with GPU-accelerated canvas, native design tokens, and MCP-powered AI workflows for teams that ship fast.