An actively maintained fork of beautiful-mermaid

Your diagrams deserve more than one gray theme.

zombie-mermaid renders Mermaid syntax into beautiful SVG or ASCII art — with 15 live-switchable themes, animated edges, and zero re-renders, right where AI-assisted coding happens.

npm install zombie-mermaidView the live demo
graph TD Start --> Deploy{Deploy?} Deploy -->|yes| Ship[Ship it] Deploy -->|no| Iterate[Iterate]StartDeploy?yesnoShip itIterate
Live theme switching

Pick a theme. Switch it live — no re-render.

Every one of the 15 built-in themes is just --bg, --fg, and --accent. The diagram reads them live — no re-render, ever.

1/15themes, cycling
/* Dracula */
:root {
  --bg: #282a36;
  --fg: #f8f8f2;
  --accent: #bd93f9;
}
A flowchart diagram, rendered live in the current theme yes no Start Deploy? Ship it Iterate
A sequence diagram, rendered live in the current theme Hello Bob! Hi Alice! Alice Bob
A class diagram, rendered live in the current theme Animal + name: String + age: int + eat(): void + sleep(): void
A state diagram, rendered live in the current theme start cancel complete Idle Active Done
A er diagram, rendered live in the current theme CUSTOMER (no attributes) ORDER (no attributes) places
A xy-chart diagram, rendered live in the current theme Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 0 2000 4000 6000 8000 10000 Month Revenue (USD) Monthly Revenue Bar 1 Line 1
The problem with default mermaid rendering

mermaid.js → beautiful-mermaid → zombie-mermaid

What zombie-mermaid adds on top.

beautiful-mermaid already solved mermaid.js's biggest problems — aesthetics, theming, terminal output, dependencies. This fork keeps all of that, and adds three things beautiful-mermaid never had.

A real CLI binary

beautiful-mermaid never shipped one. Pipe Mermaid source in, get SVG or ASCII out, straight from the command line.

mergeEdges

No beautiful-mermaid equivalent. Bundles fan-out/fan-in edges into a shared trunk instead of a tangle of parallel lines.

Real bugs, actually fixed

Mermaid syntax beautiful-mermaid shipped with — dropped edges, corrupted labels, stray nodes — found and fixed, with the before/after code to prove it.

See every fix, before and after →
Built for how diagrams get used now

Three ways this stays out of your way.

(Theming and the fork's backstory are covered above — this is what you actually build with.)

Output flexibility

Dual output. SVG for rich UIs, ASCII/Unicode for terminals — mermaid.js itself has no real terminal story.

Mono mode. Full diagrams rendered from just two colors, when that’s all you’ve got.

Drop-in architecture

Zero DOM dependencies. Pure TypeScript. Works in the browser, on the server, or anywhere else.

Synchronous rendering. No async, no flash of unstyled diagram — drops straight into React’s useMemo().

Proven at scale

Ultra-fast. Renders 100+ diagrams in under 500ms — fast enough for every diagram in a CI run.

CI-enforced accessibility. Every diagram type ships a role-correct, nameable SVG root — checked in CI, not just claimed.

Not just a browser library

A real CLI. A real MCP server.

Render from a terminal, a CI pipeline, or hand it straight to your coding agent as a tool call — this isn't a browser-only diagram widget.

terminal
$ zombie-mermaid render diagram.mmd --theme dracula
✓ wrote diagram.svg
$ zombie-mermaid render diagram.mmd --ascii
┌─────────┐
│  Start   │
└────┬────┘
     │
$ zombie-mermaid mcp
✓ MCP server listening on stdio

CLI

Render SVG, ASCII, HTML, or PNG straight from a script or CI job — themes, direction overrides, and terminal hyperlinks all pass through as flags. Full flag reference →

MCP serverExperimental

Your coding agent calls a tool —

render_mermaid_svg({ diagram })

…and gets back a rendered SVG, no browser involved.

MCP server

render_mermaid_svg, render_mermaid_ascii, and a sequence-activation checker, exposed over stdio — embed it, or run zombie-mermaid mcp directly. Shipped to gauge interest, not a finished implementation — the tool surface may still change. Read the MCP docs →

Six diagram types, one engine

Every shape your system needs to explain itself.

Browse every diagram type
Straight from the live maintenance dashboard

Actively maintained. Not abandoned.

beautiful-mermaid stalled — dozens of open PRs, nothing merged in months. Here's the same fork, measured against the original as of Sep 7, 2026 — see the live dashboard for current numbers.

zombie-mermaid (this fork)

0 days

since last commit

334

merged PRs

1

open PRs

beautiful-mermaid (upstream)

124 days

since last commit

13

merged PRs

37

open PRs

What this fork fixes

27 documented bugs, each shown before/after with the actual pre-fix and post-fix code.

See the evidence
Sep 6, 2026

294 PRs, 14 Days — What Agent-Driven OSS Maintenance Actually Looks Like

The real daily merge-count histogram behind two weeks of reviving a dead fork — not the rounder number the tracking issue guessed — and what it does and doesn’t tell you about agent-driven maintenance.

Read the blog