Skip to content
Getting Started

Comparison

Comparison

Markdown libraries optimize for different jobs. TanStack Markdown is designed for controlled blog and documentation content where bundle size, deterministic rendering, and HTML/framework parity matter more than complete syntax compatibility.

Decision table

ChooseBest fitMain tradeoff
TanStack MarkdownBlogs and docs with a known syntax profile, SSR, React or Octane, and strict bundle budgetsDeliberately incomplete CommonMark/GFM coverage and a small extension surface
MarkedA compact general HTML renderer with broad familiar Markdown behaviorNo built-in UI adapter over a docs-specific AST contract
markdown-itMature plugins and configurable parsing rulesA substantially larger core for this measured use case
micromarkStandards-oriented tokenization and extension building blocksLower-level API and more assembly for a complete docs renderer
commonmark.jsApplications that prioritize CommonMark behavior and an inspectable syntax treeLarger bundle and no built-in UI framework adapter
unified / remark / rehypeRich syntax-tree transformations and a broad content-processing ecosystemMore packages, configuration, and runtime surface
markdown-wasmVery fast HTML rendering where a WASM asset is acceptableDifferent deployment model and no built-in UI framework adapter

Capability matrix

CapabilityTanStack MarkdownMarkedmarkdown-itmicromarkcommonmark.jsunified stack
HTML renderingBuilt inBuilt inBuilt inBuilt inBuilt inVia rehype
React and Octane renderers from the same ASTBuilt inNoNoNoNoEcosystem
Serializable public document ASTBuilt inToken outputToken streamNo syntax treeBuilt inBuilt in
Raw HTML disabled by defaultYesNoYesYesNoPipeline choice
GFM tables, tasks, and strikeFocused built-insBuilt inBuilt in/pluginsExtensionsNoPlugins
Docs callouts, tabs, and code metadataOpt-in built-insPlugins/customPlugins/customCustomCustomPlugins/custom
General plugin ecosystemFocused hooksMatureMatureComposable extensionsSmallExtensive
MDX or JSX evaluationNoNoNoNoNoSeparate MDX stack
Full compatibility as a project goalNoBroad compatibilityBroad compatibilityCommonMarkCommonMarkCommonMark plus plugins

“Configuration,” “plugin,” and “ecosystem” do not imply missing capability. They indicate that the behavior is not the default contract of the compared entry point.

Measured browser size

The repository's generated size report bundles representative browser entry points from pinned dependencies, minifies them with esbuild, and records gzip and Brotli bytes. Reproduce it with pnpm run size.

The report distinguishes selected-function imports from the complete namespace of every TanStack Markdown public entry. Framework runtimes are externalized from adapter measurements. Comparison packages have different feature sets, so the results describe those import profiles rather than equivalent capabilities or the final size of your application.

Compatibility accounting

The generated compatibility report tracks matches against all 652 CommonMark 0.31.2 examples after serializer normalization. Every established match is protected individually by the regression suite. The count is accounting, not a conformance claim or a target to maximize. Selected official GFM examples separately cover tables, task lists, and strikethrough.

Use commonmark.js, micromark, or a unified pipeline when exact specification behavior is a requirement. Use TanStack Markdown when your corpus fits the documented profile and the smaller, controlled renderer is the better product tradeoff.

Performance

Across the maintained fixtures, TanStack Markdown is competitive with the JavaScript renderers in the suite, but it is not the fastest result in every fixture. Pre-parsed AST rendering is its cheapest path. Compare the measured import sizes and supported syntax with the rendering and extension APIs your application needs. See Performance for methodology and current results.