Everybody writes about Markdown editors. I did too, in The Best Open Source Markdown Editors for Writing and Beyond. But here’s the thing nobody tells you: the editor is the least interesting part of the whole stack. It’s the moment after you hit save where Markdown gets genuinely wild.
Your .md file can be rendered in a terminal, queried like a database, turned into a diagram, compiled into a documentation site, served over HTTP/3 with automatic TLS, projected onto a screen as a slide deck, or shoved into an LLM context window at a third of the token cost. Same file. No conversion ceremony. That’s the actual superpower.
So this article deliberately skips editors entirely. No Typora, no Obsidian, no VS Code extensions. Instead: readers, diagram languages, static site builders, parser libraries, CLI weirdness, presentation tools and the servers that turn a folder of Markdown into a website. And because 2026 has gotten crowded with slick commercial products in this space, I’m splitting everything clearly into open source and paid.
Have a tool to share, let me know!
Why the Markdown Ecosystem Exploded
Markdown has been around since 2004. So why did the tooling around it go nuclear in the last two years? A few reasons:
- AI agents write Markdown by default. Claude, Copilot, Codex, Gemini — they all emit Markdown. Suddenly everyone has folders full of
.mdfiles they need to read, not edit. That’s a completely different tool category, and it barely existed three years ago. - Token economics. Markdown costs dramatically fewer tokens than HTML for the same content. I dug into this in my llms.txt and serving Markdown to AI guide. When your API bill scales with tokens, format choice becomes a budget line.
- CommonMark actually stabilised things. The CommonMark spec and GitHub Flavored Markdown gave library authors something concrete to target. Parsers now agree on most things, which makes building on top of them viable.
- Plain text outlives everything. Your Notion workspace, your Confluence space, your fancy SaaS wiki — all of them are one acquisition away from a migration nightmare. A folder of
.mdfiles in git is not. - Diagrams-as-code went mainstream. Once GitHub started rendering Mermaid inside fenced code blocks, “the diagram lives in the repo” stopped being a nerdy preference and became normal engineering practice.
Markdown Readers: Tools That Only Render, Never Edit
Quick Answer: Markdown readers render .md files as formatted documents without any editing UI — the Preview.app equivalent for Markdown.
This category barely existed before AI assistants started dumping documentation into everyone’s project folders. Now it’s one of the fastest-growing corners of the ecosystem. You don’t want a full editor to skim a README. You want the thing rendered, fast, and then you want it gone.
Glow (Open Source)
Glow from the Charm folks is the default answer for terminal rendering, and deservedly so. MIT licensed, written in Go, actively maintained. Run it with a filename and it pipes a beautifully styled document through a pager. Run it with no arguments and it launches a TUI that goes hunting for Markdown files in your subdirectories and git repos.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# install brew install glow winget install charmbracelet.glow go install charm.land/glow/v3@latest # render a local file glow README.md # render straight from a URL or a GitHub repo glow https://raw.githubusercontent.com/charmbracelet/glow/master/README.md glow github.com/charmbracelet/glow # browse everything markdown-ish under the current dir glow |
The Go install path moved to the v3 module line, so if you’ve had Glow installed for years, it’s worth reinstalling rather than assuming your old binary is current.
Frogmouth (Open Source)
Frogmouth from the Textualize team (the people behind Textual and Rich) takes a different angle. It’s not a renderer, it’s a browser. Navigation stack, back button, history, bookmarks, table of contents sidebar. It opens local files and remote URLs, and it keeps state between sessions.
|
1 2 3 4 5 6 7 8 9 |
pipx install frogmouth frogmouth README.md frogmouth https://example.com/docs/guide.md # shorthand for github repo readmes frogmouth gh textualize/frogmouth |
If you’re reading through a documentation tree with lots of relative links between files, Frogmouth beats Glow easily. For a quick one-off render, Glow wins.
mdcat (Open Source, But Archived)
Honest heads up on this one. mdcat was the nicest cat replacement for Markdown — inline images on kitty, iTerm2, WezTerm and Ghostty, proper hyperlinks, syntax highlighting, all in Rust. The catch: the maintainer archived the repository in June 2026. It still works, it’s still in most package managers, but it’s frozen. Don’t build a workflow around it expecting fixes.
MarkView (Free, Closed Source)
MarkView is a free native desktop reader for macOS (Apple Silicon and Intel), Windows and Linux. Built by Doug Kerwin specifically for the “my AI assistant generated fourteen Markdown files and I just want to read them” problem. GitHub-style rendering, no paywall, no editing UI. It’s not open source, but it costs nothing and it’s the easiest recommendation for non-terminal people on any platform.
MacMD Viewer (Paid)
MacMD Viewer is the commercial macOS option, built on a specific philosophy: it’s Preview.app for Markdown. Native SwiftUI, reading only, no writing toolbar at all.
- 12 document themes
- Syntax highlighting for common languages
- Mermaid diagram rendering with no plugin config
- Zoom for diagrams and tables
- Live reload at roughly 50ms when a file changes on disk
- QuickLook extension for rendered previews in Finder
Pricing is one-time, not subscription: $19.99 single licence (around €19), $39.99 for a three-licence family pack, team licences from $129. Available via Homebrew and Setapp, with a 14-day money-back guarantee.
MDHero (Paid, With Free Tier)
MDHero is a Tauri and Rust build, so the binary is tiny compared to the Electron crowd. GitHub-Flavored Markdown, syntax highlighting for 25+ languages, KaTeX math and Mermaid diagrams. Cross-platform with a Windows focus. Worth a look if you want Mermaid rendering on Windows without opening a browser.
Reader Comparison
Tool | Type | Platform | Licence | Cost | Best for |
|---|---|---|---|---|---|
CLI + TUI | macOS, Linux, Windows, BSD | MIT | Free | Fast terminal rendering, remote URLs | |
TUI browser | Cross-platform (Python) | MIT | Free | Navigating linked doc trees | |
CLI | Cross-platform (Rust) | MPL-2.0 | Free | Inline images — but archived June 2026 | |
Desktop GUI | macOS, Windows, Linux | Proprietary | Free | Non-technical readers on any OS | |
Desktop GUI | macOS only | Proprietary | $19.99 one-time | Native SwiftUI reading with themes and Mermaid | |
Desktop GUI | Windows, macOS, Linux | Proprietary | Free tier + paid | Lightweight Tauri app with KaTeX |
File Manager Extensions: Preview Without Opening Anything
Quick Answer: QuickLook and preview handler extensions render Markdown inside your file manager when you hit space, with no app to launch at all.
This is the lightest-weight category in the whole article and probably the highest daily value. You don’t open anything. You select a .md file, tap space, read it, tap space again. Given how many Markdown files land in your project folders these days, shaving an app launch off that loop adds up fast.
QLMarkdown (Open Source, macOS)
QLMarkdown by sbarex is the one to install. GPL-3.0 and genuinely maintained — v1.5.2 landed on 30 June 2026 with light/dark appearance options, printing support and an updated Highlight engine, and the repo has kept moving since.
It’s built on cmark-gfm, GitHub’s own fork of the CommonMark reference parser, so what you see matches what GitHub shows. The extension list is much longer than you’d expect from a preview plugin:
- Mermaid diagrams rendered inline, no config
- MathJax for mathematical expressions
- Syntax highlighting in fenced code blocks
- Emoji shortcode translation
- YAML front matter rendering
- Footnotes, tables, task lists, strikethrough, subscript and superscript
- Inline local images (needs read permission granted to the extension)
- File types beyond
.md:.rmd,.mdx,.qmd,.apiband.mermaid
It also ships a command-line tool and an experimental Shortcuts extension for batch converting Markdown to HTML. The precompiled build is signed and notarized, so no Gatekeeper wrestling.
|
1 2 3 4 5 6 7 8 |
brew install --cask qlmarkdown # important: launch the app once so macOS registers the extension open -a QLMarkdown # then just hit space on any .md file in Finder |
One thing the author is explicit about: this is not a standalone editor or viewer. It’s a Quick Look extension and a converter, nothing more. That focus is exactly why it’s good.
PreviewMarkdown (Open Source, macOS)
PreviewMarkdown by smittytone is the other free macOS option, and it does one thing QLMarkdown is weaker on: thumbnails. It generates Quick Look previews and Finder icon thumbnails for .md, .mdown and .markdown files, so your folders show rendered document previews instead of generic file icons.
Built on markdown-it via HighlighterSwift and YamlSwift, with configurable font, size, colours and line spacing, optional YAML front matter rendering, and a system-wide text service for converting Markdown to HTML or plain text. Source is on GitHub, distribution is through the Mac App Store, and it needs macOS Big Sur or newer.
Markdown Preview by Anybox (Paid, macOS)
Markdown Preview is the $2.99 Mac App Store option (roughly €3). It’s the zero-friction choice: install from the App Store, enable, done, with no Terminal step and no “launch the app once” ritual. GitHub Flavored Markdown spec support, Mermaid diagrams, and lifetime free updates including major versions.
At three euros it’s not really competing with QLMarkdown on price so much as on hassle. If you want it working in thirty seconds and never thinking about it again, that’s what you’re paying for.
QuickLook for Windows (Open Source)
QuickLook from QL-Win does exactly what the name says: it brings the macOS space-bar preview to Windows. GPL-3.0, and one of the most widely used Windows utilities in this whole category. It handles 100+ formats including images, video, documents, code, 3D models and archives, and the Markdown viewer renders Mermaid diagrams.
The plugin architecture is the interesting part — it loads any DLL from the plugin directory implementing the IViewer interface, so the format list keeps growing without the core project touching anything.
Microsoft PowerToys (Open Source, Windows)
If you’d rather stay first-party, PowerToys File Explorer add-ons give File Explorer preview pane and thumbnail support for Markdown, alongside SVG, PDF, G-code and QOI. MIT licensed, shipped by Microsoft, and about as safe a bet as this category gets.
The companion utility is PowerToys Peek, which is the closer analogue to macOS Quick Look — select a file, hit space, preview it, including Markdown. As of Files v4.0.24 the third-party Files explorer integrates Peek too.
The catch: PowerToys preview handlers are notorious for silently breaking after Windows updates. If yours stops working, toggling the add-on off and on in PowerToys settings usually fixes it.
Linux: The Weak Spot
Honest assessment — Linux is genuinely behind here, and I’d rather say so than pad this section out.
GNOME Sushi is the Quick Look equivalent for Nautilus and it’s been shipping for years, but it treats Markdown as plain text. You get a monospaced wall of syntax with line numbers, not a rendered document. There’s a long-standing wish for proper Markdown rendering and it hasn’t landed.
Third-party attempts exist — gnome-markdown-ql adds rendered Markdown previews to Nautilus on space — but it’s a one-person side project with no commits since mid-2025 and no licence file. Use it if you want, just know what you’re adopting.
For KDE, kdegraphics-thumbnailers and kdesdk-thumbnailers cover Dolphin’s preview infrastructure, but again, no dedicated Markdown renderer. Realistically, the best Linux answer today is still a terminal tool: keep Glow or Frogmouth one keystroke away and skip the file manager entirely.
File Manager Extension Comparison
Extension | OS | Licence | Cost | Mermaid | Thumbnails |
|---|---|---|---|---|---|
macOS | GPL-3.0 | Free | Yes | No | |
macOS | Open source | Free (App Store) | No | Yes | |
macOS | Proprietary | $2.99 one-time | Yes | No | |
Windows | GPL-3.0 | Free | Yes | No | |
Windows | MIT | Free | Limited | Yes | |
Linux | GPL-2.0 | Free | No | No | |
Linux | Unlicensed | Free | No | No |
If you’re on a Mac and you only take one thing from this article, make it this: install QLMarkdown, or PreviewMarkdown if you want folder thumbnails too. Both are free, both take two minutes, and Finder stops being useless for Markdown forever.
Serving Markdown: Turn a Folder Into a Website Instantly
Quick Answer: These tools serve a directory of Markdown files as a live website over HTTP with no build step and no generated output folder.
Different from a static site generator. There’s no build, no dist/ directory, no deploy pipeline. You point a binary at a folder and it’s a website. Perfect for internal docs, homelab documentation, or sharing a spec with a colleague in thirty seconds.
Algernon (Open Source)
Algernon is my favourite oddball in this whole article. It’s a single self-contained Go binary, BSD-3-Clause, that happens to be an absurdly capable web server. HTTP/2 and HTTP/3 via QUIC, TLS 1.3, automatic Let’s Encrypt certificates, an embedded Lua interpreter, template engines (Pongo2, Amber), JSX/React and TypeScript handling, CSS preprocessing, and database backends spanning Redis, PostgreSQL, MySQL, SQLite and built-in BoltDB.
And it renders Markdown natively. Any index.md becomes a styled HTML page automatically.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# install brew install algernon go install github.com/xyproto/algernon@latest # preview a single markdown file, served on a port above 3000 algernon -m README.md # serve the current directory with live reload on file change algernon --autorefresh --dev . # serve a docs folder publicly with automatic TLS from Let's Encrypt algernon --letsencrypt --domain docs.example.com /srv/docs |
That last command is the reason Algernon deserves attention. One binary, no reverse proxy, no certbot cron job, no nginx config. Markdown folder to public HTTPS site in a single line. For homelab documentation this is genuinely hard to beat. Note it needs Go 1.26+ if you’re building from source.
markserv (Open Source)
markserv is the Node.js take: serve Markdown as GitHub-styled HTML, index directories, and hot-reload over WebSocket as you edit. When you save, the page content updates in place without a full reload. Less ambitious than Algernon, more focused. There’s also a Docker image if you want it running as a service.
Docsify (Open Source)
Docsify is the no-build documentation site. It’s a single JavaScript file that loads your Markdown at runtime and renders it client-side. No generated HTML, nothing to compile, nothing in git except your .md files and one index.html. The trade-off is real though: because rendering happens in the browser, search engines and AI crawlers see an empty shell unless you add server-side rendering. In 2026 that’s a bigger downside than it used to be.
Markdown-Inspired Extensions: Diagrams, Math and Structured Documents
Quick Answer: These languages borrow Markdown’s plain-text philosophy to describe diagrams, math and structured documents that plain Markdown can’t express.
Mermaid (Open Source Core, Paid Cloud)
Mermaid is the one that changed everything. Markdown-inspired text definitions that render into flowcharts, sequence diagrams, Gantt charts, ER diagrams, state machines and more. The killer feature was never the syntax — it was GitHub and GitLab rendering it natively inside fenced code blocks. No build step, no image export, no external service. Your architecture diagram lives in the README and updates with a text edit.
|
1 2 3 4 5 6 7 8 9 10 11 |
```mermaid flowchart LR A[Markdown file] --> B{What do you need?} B -->|Just read it| C[Glow / Frogmouth] B -->|Publish it| D[Astro / VitePress / Hugo] B -->|Serve it now| E[Algernon] B -->|Query it| F[mdq / QMD] B -->|Present it| G[presenterm / Marp] ``` |
The project has kept moving fast. v11.13.0 added Venn and Ishikawa diagram types plus a backward-compatibility fix for v10 syntax, and the 11.14 to 11.16 line brought Wardley Maps, TreeView, Cynefin, Railroad and Swimlane diagrams into the mix. The open source docs now live at mermaid.ai/open-source alongside the commercial side.
Speaking of which: Mermaid Chart is the paid product. Free tier covers individuals and small teams with unlimited AI diagram generation, whiteboard and version history. Pro runs about $6.67 per user per month billed annually (roughly €6), Enterprise is custom with SSO/SAML. The core library stays MIT licensed and always will — the commercial layer is the hosted editor, collaboration and AI features.
The catch: Mermaid’s auto-layout starts producing awkward results once you push past a dozen or so nodes, and it doesn’t cover formal UML, C4 or deployment diagrams. If you need precise positioning control, the mostly-automatic approach gets frustrating fast.
D2 (Open Source)
D2 from Terrastruct launched in 2022 specifically to fix Mermaid’s and PlantUML’s annoyances. MPL-2.0 licensed, fiscally sponsored by Hack Club. The syntax is cleaner, it does animated diagrams from text (genuinely the only one that does), sketch mode gives you a hand-drawn look, and it handles code snippets, SQL tables and Markdown blocks inside diagram nodes.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
curl -fsSL https://d2lang.com/install.sh | sh -s -- # render to svg d2 architecture.d2 architecture.svg # watch mode with live browser preview d2 --watch architecture.d2 # animated multi-step diagram d2 --animate-interval 1200 flow.d2 flow.svg |
The headline differentiator is TALA, a layout engine purpose-built for software architecture diagrams that produces noticeably better results than dagre (what Mermaid uses) or GraphViz (what PlantUML uses). It installs as a separate binary plugin. The downside for D2 overall: no native GitHub rendering, so you need a build step or a plugin in your pipeline.
PlantUML (Open Source)
PlantUML is the elder statesman and still unbeaten in two areas: sequence diagrams and full UML coverage. Participants, lifelines, activation bars, grouped messages, notes — it handles genuinely complex interactions gracefully where Mermaid gets messy. If you need every UML diagram type plus extensive icon libraries, this is still the answer. It’s Java-based, which is either fine or a dealbreaker depending on your stack.
MyST, Quarto and MDX (Open Source)
These three extend Markdown itself rather than sitting next to it.
MyST (Markedly Structured Text) is a CommonMark superset that brings reStructuredText’s directives and roles into Markdown. Cross-references, figures with captions, admonitions, citations, executable content. It’s the scientific and technical publishing choice, born out of the Sphinx and Jupyter ecosystems.
Quarto is Posit’s publishing system built on Pandoc. Executable code in Python, R, Julia and Observable, then output to HTML, PDF, Word, slides, books, websites. Big news for 2026: Posit announced in April that Quarto 2 is being fully rewritten in Rust, with a collaborative editor, a new Markdown parser and a source tracker for faster debugging.
MDX lets you import and render JSX components directly inside Markdown. It’s the backbone of most React-based documentation sites. Powerful, but it makes your content files dependent on a JavaScript build — your Markdown is no longer portable plain text.
Djot deserves a mention as the contrarian option. Created by John MacFarlane (the same person behind CommonMark and Pandoc), it’s a clean-slate redesign that fixes Markdown’s syntax ambiguities. Small ecosystem, but if you’ve ever been bitten by Markdown’s emphasis-parsing edge cases, it’s a breath of fresh air.
Heads up: the lack of a standard extension mechanism in Markdown means Quarto, MyST and MDX are mutually exclusive dialects. Content written for one doesn’t move cleanly to another. Pick deliberately.
Diagram Language Comparison
Tool | Licence | GitHub native render | Layout quality | Paid tier | Best for |
|---|---|---|---|---|---|
MIT | Yes | Good to ~12 nodes | Mermaid Chart from ~$6.67/user/mo | READMEs, issues, wikis, quick flowcharts | |
MPL-2.0 | No (needs build step) | Excellent with TALA | Core free; TALA separate plugin | Software architecture, animated diagrams | |
GPL | No | Excellent for sequences | Free | Full UML, sequence diagrams, enterprise | |
MIT | No | n/a | Free | Scientific and academic publishing | |
MIT | No | n/a | Free | Reproducible research, executable docs | |
MIT | No | n/a | Free | React-based documentation sites |
Static Site Builders: Markdown In, Website Out
Quick Answer: Static site generators compile Markdown into HTML at build time, giving you fast, cheap, CDN-friendly sites with no runtime server.
The 2026 landscape has settled into a clear shape: Astro is the new default for content-first sites, Hugo is still the raw speed champion, and everything else fills a specific niche.
Astro and Starlight (Open Source)
Astro has become the default choice for content-focused sites, and it earned it. Zero JavaScript shipped by default, islands architecture so only genuinely interactive components hydrate, and React, Vue, Svelte and Solid components can coexist in one project. Astro 6 went stable in February 2026 with a content layer that builds a 100-post Markdown site in roughly 200 milliseconds. Astro 6.4 added a pluggable Markdown processor API and a Rust-based Markdown processor for faster builds.
Starlight is the documentation theme built on Astro, and it has been eating Docusaurus market share at an impressive rate. Version 0.39 brought more flexible autogenerated sidebars, better styling and stronger multilingual support. If you’re picking a docs framework today and you don’t have a strong reason to be in the Vue or React ecosystem specifically, Starlight is the safe bet.
|
1 2 3 4 5 |
npm create astro@latest -- --template starlight cd my-docs npm run dev |
VitePress (Open Source)
VitePress is the Vue-native option, born from the Vite ecosystem. Instant server start, lightning-fast HMR, minimal config. It strikes a nice balance between convention and customisation, and it’s what a huge chunk of the Vue ecosystem documents itself with. If your team is already Vue, this is a no-brainer. If not, Starlight is the more framework-agnostic pick.
Hugo and Zola (Open Source)
Hugo is still the fastest static site generator by a wide margin. Single Go binary, no Node.js, no dependency tree to maintain. Thousands of pages build in seconds. The trade-off is Go templating, which people either tolerate or actively resent.
Zola is the Rust equivalent — one binary, everything built in (Sass compilation, syntax highlighting, search index generation), no plugin hunting. It has real momentum but the ecosystem is thin compared to Hugo. Great if you like the “everything included, nothing to configure” philosophy.
MkDocs Material, mdBook and Docusaurus (Open Source)
MkDocs Material is the Python world’s documentation standard, and by community size it dwarfs the digital-garden competition. Extremely polished, huge plugin ecosystem, sensible defaults. Built for hierarchical structured content, not networked notes.
mdBook is what the Rust project uses for its own books. Markdown chapters plus a SUMMARY.md defining the table of contents, output is a searchable book-style site. Simple, fast, focused.
Docusaurus is Meta’s React-based docs framework. Versioned documentation and i18n out of the box, which is why big projects still choose it. It’s losing ground to Starlight for new projects, but the versioning story is genuinely strong.
Quartz (Open Source)
Quartz is the digital garden option and the free alternative to Obsidian Publish. Now at v5.0.0, needs Node 22+. Wikilinks, backlinks, graph view, full-text search, LaTeX, syntax highlighting and hot reload, all batteries-included with no plugin hunting. Point it at your notes vault, run a build, deploy the output anywhere static.
|
1 2 3 4 5 6 7 |
git clone https://github.com/jackyzha0/quartz.git cd quartz npm i npx quartz create npx quartz build --serve |
Site Builder Comparison
Builder | Language | Licence | Build speed | Best for |
|---|---|---|---|---|
JavaScript | MIT | Very fast (Rust processor in 6.4) | Content sites, blogs, marketing pages | |
JavaScript (Astro) | MIT | Very fast | Documentation, framework-agnostic | |
JavaScript (Vue) | MIT | Very fast | Vue projects, minimal docs sites | |
Go | Apache-2.0 | Fastest | Large sites, thousands of pages | |
Rust | MIT | Very fast | Single-binary simplicity, no Node.js | |
Python | MIT | Fast | Technical docs, Python shops | |
Rust | MPL-2.0 | Fast | Books, tutorials, handbooks | |
JavaScript (React) | MIT | Moderate | Versioned docs, i18n-heavy projects | |
JavaScript | MIT | Fast | Digital gardens, linked notes | |
JavaScript | MIT | Fast | Purist static sites, zero client JS |
Eleventy earns its spot there — it remains the best choice when you want a genuinely static site with no client-side interactivity at all and no framework opinions imposed on you.
Parsers and Code Libraries
Quick Answer: Markdown parsers turn text into HTML or an AST — pick based on your language, speed needs, and whether you need plugins or security.
If you’re building anything that touches Markdown programmatically, this is where you’ll live. The choice matters more than people assume, because the performance gap between options is roughly 5x and the security models differ substantially.
JavaScript
markdown-it is the most-downloaded option at roughly 20M weekly npm pulls. CommonMark compliant, excellent plugin architecture, safe by default. It’s what most projects should reach for when rendering user-supplied content.
marked is the speed option at around 15M weekly downloads. It parses a 10,000-word document in roughly 3ms — about 5x faster than remark. If you’re processing content at scale and don’t need a plugin ecosystem, this is your throughput winner.
remark sits at the centre of the unified ecosystem with 300+ plugins for linting, transforming and generating. Roughly 8M weekly downloads. It’s slower because it builds a proper AST, but that AST is exactly why you’d use it — programmatic manipulation of document structure, not just HTML output. micromark is the low-level CommonMark-compliant engine underneath it.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// markdown-it: safe rendering of untrusted input import MarkdownIt from 'markdown-it' const md = new MarkdownIt({ html: false, linkify: true, typographer: true }) const html = md.render('# Hello\n\nSome **markdown** here.') // remark: transform the AST, not just the output import { unified } from 'unified' import remarkParse from 'remark-parse' import remarkGfm from 'remark-gfm' import remarkRehype from 'remark-rehype' import rehypeStringify from 'rehype-stringify' const file = await unified() .use(remarkParse) .use(remarkGfm) .use(remarkRehype) .use(rehypeStringify) .process('# Hello\n\n- [x] task lists work too') |
Rust, Go, Python and C
comrak is the Rust CommonMark and GFM parser, a fairly direct port of the cmark reference implementation. Battle-tested and used in production by GitHub-adjacent tooling. pulldown-cmark is the pull-parser alternative — it’s what mdBook and much of the Rust docs tooling runs on. markdown-rs is the newer entry from the micromark author, with CommonMark and MDX support.
goldmark is Go’s answer, and it’s what Hugo uses. Performance is on par with cmark, the C reference implementation, and it’s designed around clean extensibility. If you’re writing Go, this is the one.
markdown-it-py is the Python port of markdown-it, maintained by the Executable Books folks, and it’s what MyST builds on. cmark is the C reference implementation — the thing every other parser is measured against.
Parser Comparison
Library | Language | Approx. weekly downloads | Strength | Pick it when |
|---|---|---|---|---|
JavaScript | ~20M | Plugins + safety | Rendering user-submitted content | |
JavaScript | ~15M | Raw speed (~3ms / 10k words) | High-throughput batch processing | |
JavaScript | ~8M | 300+ plugins, real AST | Transforming or linting documents | |
JavaScript | n/a | Spec-exact low-level engine | Building your own tooling | |
Rust | n/a | cmark-faithful GFM | Rust services needing GitHub parity | |
Rust | n/a | Pull parser, low allocation | Rust CLI tools and mdBook plugins | |
Go | n/a | cmark-level speed, extensible | Anything in Go (it powers Hugo) | |
Python | n/a | markdown-it plugin parity | Python pipelines, MyST projects |
CLI Solutions: Query, Convert, Lint and Search Markdown
Quick Answer: Command-line Markdown tools let you search, query, reformat and convert .md files without ever opening an editor.
QMD — Query Markup Documents (Open Source)
QMD from Tobi Lütke is one of the more interesting things to land in this space recently. It’s an on-device search engine for your Markdown — notes, meeting transcripts, documentation — and it runs entirely locally. MIT licensed, TypeScript and Node.js.
What makes it genuinely clever is the hybrid pipeline. BM25 full-text indexing for keyword matching, vector semantic search for meaning, and LLM-based reranking on top, all merged with Reciprocal Rank Fusion. The models run through node-llama-cpp with local GGUF weights, so nothing leaves your machine. It also exposes an MCP server, which means Claude and other agents can search your notes directly.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
npm install -g @tobilu/qmd # or just npx @tobilu/qmd # keyword search (BM25) qmd search "project timeline" # semantic vector search qmd vsearch "how do we handle deploys" # hybrid search with LLM reranking qmd query "quarterly planning decisions" # pull a specific document back out qmd get "meetings/2026-01-15.md" |
If you’ve accumulated years of Markdown notes and grep has stopped being enough, this is the tool. Local-only, no cloud dependency, no subscription.
mdq — jq for Markdown (Open Source)
mdq does for Markdown what jq does for JSON: zero in on specific parts of a document with a query language. Written in Rust, dual-licensed MIT/Apache-2.0. The filter syntax deliberately mirrors Markdown syntax itself, and you chain filters with pipes.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
cargo install mdq # pull the section under a heading matching "Install" mdq '# Install' < README.md # find unchecked task list items anywhere in the doc mdq '- [ ]' < CHECKLIST.md # chain filters: links inside the "Sources" section mdq '# Sources | []()' < article.md |
The killer use case is CI. GitHub pull requests are Markdown documents, and enforcing template checklists usually means writing horrible regexes. With mdq you query the structure instead. There’s a WebAssembly playground if you want to try the query syntax before installing.
Pandoc (Open Source)
Pandoc is still the universal document converter and nothing has come close to replacing it. Markdown to PDF, DOCX, EPUB, LaTeX, reveal.js slides, and about forty other formats in both directions. It’s the plumbing underneath Quarto and half the publishing tools in this article.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# markdown to a properly typeset PDF pandoc article.md -o article.pdf --pdf-engine=xelatex # markdown to Word, for the colleague who insists pandoc article.md -o article.docx # markdown to an epub with metadata pandoc book.md -o book.epub --metadata title="My Book" # the other direction: html to clean markdown pandoc page.html -f html -t gfm -o page.md |
markdownlint and mdformat (Open Source)
markdownlint is the style checker — inconsistent heading levels, trailing whitespace, bare URLs, missing alt text. The markdownlint-cli2 variant is the one to install for CI use. mdformat is the opinionated formatter, Prettier-style: it reformats rather than complains. Run it as a pre-commit hook and stop arguing about whether lists use dashes or asterisks.
MarkItDown, Docling and mdream (Open Source)
This trio exists because of AI. All three convert other formats into Markdown so LLMs can digest them.
MarkItDown from Microsoft is the fast, lightweight option. PDFs, Office documents, images, audio, HTML — all to Markdown. It leans on text-layer extraction, which is quick but occasionally loses table structure.
Docling came out of IBM Research Zurich and now sits under the LF AI & Data Foundation. MIT licensed. It uses AI layout detection to preserve table structure and reading order far more accurately than MarkItDown. The trade-off is honest: it’s slower and it drags PyTorch into your dependency tree. The common pattern is MarkItDown first, Docling as the fallback when quality isn’t good enough.
mdream is Harlan Zw’s HTML-to-Markdown converter built specifically for LLM pipelines. MIT licensed, zero dependencies, with a Rust NAPI engine. The claims are specific: 33x faster than Turndown on 166kB of HTML and 38% fewer o200k_base tokens in the output. There’s also @mdream/crawl for whole-site crawling and llms.txt artifact generation.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
# MarkItDown: anything to markdown pip install 'markitdown[all]' markitdown report.pdf > report.md # Docling: higher fidelity, heavier install pip install docling docling report.pdf --to md # mdream: html to llm-optimised markdown npx mdream https://example.com/docs > docs.md |
Presentations: Slides From a Text File
Quick Answer: Markdown presentation tools turn a plain text file into a slide deck, versionable in git and exportable to PDF or PPTX.
presenterm (Open Source)
presenterm is the one I’d point most developers at, especially if you live in a terminal. Written in Rust, BSD-2-Clause. Your presentation runs in the terminal, and it’s not a compromise version.
Images and animated GIFs render properly on kitty, iTerm2, WezTerm, Ghostty and Foot. It renders Mermaid and D2 diagrams inline. LaTeX and Typst formulas work. Code snippets get syntax highlighted with selective and dynamic highlighting, and you can execute them live during the talk. Plus column layouts, themes, slide transitions, incremental reveals, speaker notes, hot reload while editing, and PDF and HTML export.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
brew install presenterm cargo install presenterm # present presenterm slides.md # hot reload while you edit in another window presenterm --present slides.md # export to pdf presenterm --export-pdf slides.md |
The advantages are speed, offline operation, tight CLI integration and repeatable exports for CI. No browser, no Electron, no 400MB of node_modules.
Marp (Open Source)
Marp is the pragmatic choice: the fastest path from a Markdown file to a polished PDF or PPTX. MIT licensed. The ecosystem splits into Marpit (the framework), Marp Core (the converter with built-in themes), Marp CLI (export to HTML, PDF, PPTX and images) and a VS Code extension with live preview.
|
1 2 3 4 5 6 7 8 |
npm install -g @marp-team/marp-cli marp deck.md -o deck.html marp deck.md --pdf marp deck.md --pptx marp -w deck.md # watch mode |
If your organisation runs on PowerPoint and you refuse to open PowerPoint, Marp is the diplomatic solution. Custom CSS themes, image backgrounds and multi-column layouts, all from Markdown.
Slidev (Open Source)
Slidev is the most popular of the bunch by some distance. MIT licensed, built by Anthony Fu on Vue and Vite. It’s the choice for conference talks where the code demos need to feel alive: line-by-line code highlighting animations, embedded interactive Vue components, live coding, drawing and annotation, presenter mode with remote control, Mermaid diagrams, LaTeX, icon sets, and export to PDF, PNG and PPTX.
|
1 2 3 4 |
npm init slidev # requires Node.js >= 20.12.0 |
reveal.js and patat (Open Source)
reveal.js is the original HTML presentation framework and still the most flexible if you’re willing to work in HTML. Pandoc exports directly to it, which makes it a solid Markdown target. patat is the minimalist Haskell terminal presenter — Pandoc-backed, so it accepts every input format Pandoc does, with automatic reload on file change.
Presentation Tool Comparison
Tool | Runs in | Licence | Exports | Best for |
|---|---|---|---|---|
Terminal | BSD-2-Clause | PDF, HTML | Dev talks, offline, code execution live | |
Browser / CLI | MIT | PDF, PPTX, HTML, images | Corporate decks, training, fast PDF export | |
Browser | MIT | PDF, PNG, PPTX | Conference talks with live code demos | |
Browser | MIT | PDF, HTML | Maximum layout flexibility | |
Terminal | GPL-2.0 | None (present only) | Minimal terminal decks via Pandoc |
The Paid Side: Commercial Markdown Tools Worth Knowing
Quick Answer: Commercial Markdown tools mostly sell three things — polish, hosted collaboration, and AI features — on top of open formats.
Here’s the thing I like about the paid tools in this space: almost none of them lock up your data. They’re built on plain .md files on disk. You’re paying for the experience, not for access to your own content.
Moment (Paid, With Free Tier)
Moment is the most ambitious thing in this article, and the pitch is deliberately provocative: run your entire business out of a Markdown file.
It’s a collaborative workspace where documents are real Markdown files stored on your local disk, in a git or jj repository. But those documents are natively programmable — there’s a built-in reactive environment with React and Tailwind CSS baked in, so a document can also be a dashboard, a database browser, an internal tool, a Kubernetes pod viewer. It ships an embedded terminal so coding agents like Claude Code, Amp, Codex and Copilot CLI work directly inside it, and it handles API credentials through .env files. Live collaborative editing works offline.
Pricing: free for a single person with unlimited documents, git-backed storage and live rendering. Team is $30/month (roughly €28) for up to 5 users, additional seats $6/user/month, which adds real-time collaboration and access controls. Enterprise is custom for 50+ users with SSO/SAML.
The catch: it’s not open source and there’s no self-hosting option. Your files stay local, which softens that considerably, but the application itself is proprietary. Worth watching regardless — the “documents that are also software” idea is the most genuinely new thing happening to Markdown right now.
Other Paid Options
Tool | What you’re paying for | Price | Open source alternative |
|---|---|---|---|
Programmable collaborative Markdown workspace | Free solo; $30/mo up to 5 users (~€28) | Quartz + git, or Docsify | |
Zero-setup QuickLook via the App Store | $2.99 one-time (~€3) | QLMarkdown, PreviewMarkdown | |
Hosted editor, AI diagrams, collaboration | Free tier; Pro ~$6.67/user/mo (~€6) | Mermaid core (MIT), D2 | |
Zero-config note publishing with hosting | $8/month (~€7.50) | Quartz v5 | |
Architecture-optimised layout engine for D2 | Separate plugin install | D2’s default ELK/dagre layouts | |
Lightweight cross-platform reader | Free tier + paid | Glow, Frogmouth |
Open Source vs Paid: How to Decide
Some honest guidance rather than a blanket “always pick open source”:
- Anything that touches your build pipeline should be open source. Parsers, static site generators, linters, converters. These become load-bearing infrastructure, and a licence change or a shutdown two years in is genuinely painful. Every parser and builder in this article is permissively licensed.
- Paid makes most sense for hosting, support and hassle removal. Mermaid Chart’s hosted collaboration is a real service with real running costs. App Store viewers sell thirty seconds of setup instead of a Homebrew cask and a “launch it once” step. Neither is something you’d expect a volunteer project to provide.
- Check whether a free option already covers you. This space has a lot of overlap, and the paid landing page rarely tells you which parts of its feature list you could get for nothing. Quick Look previews are the clearest example: several free, actively maintained extensions do the job. Work out your actual requirement first, then see whether anything still justifies the spend.
- Check whether your data stays portable. Moment stores plain
.mdin git. Good viewers only read files you already own. That’s the acceptable shape of a paid Markdown tool. Anything that puts your content in a proprietary database is a different risk category entirely. - Watch for the archived-project trap. mdcat is a good reminder — open source doesn’t mean maintained. Check the last commit date before you build a workflow on something.
- EU angle: one-time purchases beat subscriptions for tools you’ll use for years, and self-hosted open source options mean no cross-border data transfer questions to answer when GDPR review comes around.
Which Markdown Tool Is Right for You?
- You just want to read AI-generated Markdown files: MarkView if you’re not a terminal person, Glow if you are.
- You want Finder previews on a Mac: QLMarkdown, free, with Mermaid and MathJax. Add PreviewMarkdown if you want folder thumbnails, or pay $2.99 for Markdown Preview to skip the setup entirely.
- You want space-bar previews on Windows: QuickLook for the broadest format support, or PowerToys Peek if you prefer staying first-party.
- You need diagrams in your README: Mermaid. It’s the only one GitHub renders natively, and that matters more than syntax elegance.
- You need diagrams that don’t look terrible at 40 nodes: D2 with TALA, or PlantUML for anything UML-shaped.
- You’re building a documentation site today: Starlight. Framework-agnostic, fast, well-maintained. VitePress if you’re already Vue, MkDocs Material if you’re already Python.
- You have 10,000 pages: Hugo. Nothing beats it on build time at that scale.
- You want your notes vault online for free: Quartz v5.
- You need to publish a folder of docs in the next five minutes: Algernon with
--letsencrypt. - You’re parsing Markdown in code: markdown-it (JS, safe), marked (JS, fast), goldmark (Go), comrak (Rust), markdown-it-py (Python).
- You’ve lost something in years of notes: QMD. Local hybrid search, no cloud.
- You need Markdown structure in CI: mdq for querying, markdownlint for style enforcement.
- You’re giving a technical talk: presenterm for terminal-native and offline, Slidev for browser-based with live code, Marp when you need a PDF or PPTX handed to someone.
- You’re feeding documents to an LLM: MarkItDown for speed, Docling for fidelity, mdream for web pages.
Glossary
- CommonMark
- The standardised Markdown specification that resolved most of the ambiguities in the original 2004 syntax. It’s the baseline every serious parser targets today.
- GFM (GitHub Flavored Markdown)
- CommonMark plus tables, task lists, strikethrough, autolinks and footnotes. Effectively the de-facto standard because it’s what everyone sees on GitHub.
- AST (Abstract Syntax Tree)
- A structured tree representation of a document. Parsers like remark build one so you can programmatically manipulate headings, links and lists instead of doing regex surgery on text.
- Diagram-as-code
- Describing a diagram in a text language that a renderer converts to an image, instead of dragging shapes on a canvas. Mermaid, D2 and PlantUML are the main players.
- SSG (Static Site Generator)
- A tool that compiles Markdown into plain HTML at build time. No database, no runtime server, just files you can drop on any CDN.
- Islands architecture
- Astro’s approach where a page is static HTML by default and only specific interactive components get JavaScript sent to the browser. Massively reduces page weight.
- TUI (Terminal User Interface)
- A full interactive application running inside your terminal, with panes, navigation and keyboard shortcuts. Glow and Frogmouth are both TUIs.
- BM25
- A ranking function for keyword search that scores documents by term frequency and rarity. It’s the classic full-text search algorithm, and QMD combines it with vector search.
- Reciprocal Rank Fusion (RRF)
- A method for merging multiple ranked result lists into one. QMD uses it to combine keyword and semantic search results without needing comparable scores.
- MCP (Model Context Protocol)
- An open standard that lets AI assistants connect to external tools and data sources. QMD exposes an MCP server so agents can search your Markdown directly.
- QuickLook
- The macOS feature where pressing space on a selected file shows a preview. Out of the box it shows Markdown as raw text; extensions like QLMarkdown replace that with a properly rendered document. Windows equivalents are QuickLook by QL-Win and PowerToys Peek.
- Preview handler
- The Windows equivalent of a QuickLook extension. It renders file contents inside Explorer’s preview pane. PowerToys installs one for Markdown, along with SVG, PDF and G-code.
- Thumbnailer
- A component that generates the small preview image shown as a file’s icon. PreviewMarkdown does this for Markdown on macOS, so folders show rendered documents instead of generic icons.
- cmark-gfm
- GitHub’s fork of the CommonMark reference parser, with GitHub Flavored Markdown extensions bolted on. QLMarkdown builds on it, which is why its output matches what you see on GitHub.
- llms.txt
- A proposed standard file at the root of a site that gives AI crawlers a curated Markdown index of your content. Think of it as a sitemap written for language models.
FAQ
Do I have to pay to preview Markdown files in macOS Finder?
No. QLMarkdown is free and GPL-3.0 licensed, and it renders Mermaid diagrams, MathJax formulas, syntax highlighting and YAML front matter in Quick Look. Install it with brew install --cask qlmarkdown, then launch the app once so macOS registers the extension. PreviewMarkdown is the other free option and it adds Finder thumbnails as well.
Is it ever worth paying for a Markdown viewer?
Sometimes, but work out your actual requirement first. If you only want rendered previews in your file manager, free extensions cover that completely on macOS and Windows. Paid viewers make sense when you want a polished native app with themes and support behind it, or when you would rather not assemble your setup from separate open source pieces.
How do I get Markdown previews in Windows File Explorer?
Two good free options. Microsoft PowerToys adds a Markdown preview handler and thumbnails to File Explorer through its File Explorer add-ons, plus the Peek utility for space-bar previews. QuickLook by QL-Win is the third-party alternative, GPL-3.0 licensed, covering 100+ formats with Mermaid rendering in its Markdown viewer.
Which Markdown parser should I use for user-submitted content?
markdown-it in JavaScript, with html set to false. It is CommonMark compliant, safe by default, and the plugin ecosystem is excellent. In Go use goldmark, in Rust use comrak, in Python use markdown-it-py. Avoid marked for untrusted input unless you sanitise the output separately, since it optimises for speed over safety.
Is D2 better than Mermaid?
For large architecture diagrams, yes. D2’s TALA layout engine produces significantly cleaner results than the dagre engine Mermaid uses, and D2 does animated diagrams and sketch mode. But Mermaid renders natively in GitHub, GitLab and dozens of other tools with no build step. That single fact wins most of the time for READMEs and issues.
What is the fastest static site generator for Markdown in 2026?
Hugo, by a wide margin, especially past a few thousand pages. Astro closed a lot of the gap in version 6.4 with a Rust-based Markdown processor and a content layer that builds a 100-post site in about 200ms. For most sites the difference is irrelevant. For a 10,000-page site it is the deciding factor.
How do I serve a folder of Markdown files as a website without a build step?
Algernon is the strongest option. It is a single Go binary that renders index.md files as HTML automatically and can grab a Let’s Encrypt certificate itself, so you go from folder to public HTTPS site in one command. markserv is the lighter Node.js alternative with WebSocket hot reload, and Docsify renders client-side with no build at all.
What does mdq actually do that grep cannot?
mdq understands Markdown structure. Instead of matching text patterns, you query document elements: give me the section under this heading, find every unchecked task list item, extract all links inside the Sources section. It is jq for Markdown. The main payoff is CI checks on pull request templates without writing unmaintainable regexes.
Should I use presenterm, Marp or Slidev for a technical talk?
presenterm if you want everything in the terminal, offline, with live code execution and no browser involved. Slidev if your deck needs interactive components, animated code walkthroughs and a web deployment. Marp if the deliverable is a PDF or PPTX that someone else has to open. All three are MIT or BSD licensed and free.
Is Moment open source?
No. Moment is proprietary with no self-hosting option. What softens that is where your data lives: documents are real Markdown files on your local disk in a git or jj repository, so nothing is trapped in a vendor database. There is a free tier for one person, with the Team plan at $30 a month for up to five users.
What is the best tool to convert PDFs and Word documents to Markdown for AI?
Start with Microsoft’s MarkItDown. It is fast, light and handles PDFs, Office files, images and audio. When the output quality is not good enough, usually with complex tables, fall back to IBM’s Docling, which uses AI layout detection to preserve table structure and reading order. Docling is slower and pulls in PyTorch. For web pages specifically, use mdream.
Is mdcat still safe to use now that it is archived?
It still works and it is still in most package managers, but the maintainer archived the repository in June 2026, so there will be no fixes or updates. For a personal terminal workflow that is fine. For anything you depend on or ship to others, move to Glow or Frogmouth, both of which are actively maintained.
