ariel-rs
A faithful Rust port of Mermaid JS — renders diagrams to SVG without a browser, Node.js, or any JavaScript runtime.
Features
- 28 diagram types — all Mermaid built-ins
- Headless — pure Rust, no DOM, no JS runtime
- Fast — renders diagrams in microseconds
- Accurate — pixel-tested against Mermaid JS reference output (98-diagram visual regression suite)
- Themes — Default, Dark, Forest, Neutral
Usage
[]
= "0.2.0"
use ;
let svg = render;
println!;
Supported diagram types
| Type | Keyword(s) |
|---|---|
| Flowchart | flowchart / graph |
| Sequence | sequenceDiagram |
| Class | classDiagram / classDiagram-v2 |
| State | stateDiagram / stateDiagram-v2 |
| Entity Relationship | erDiagram |
| Gantt | gantt |
| Git | gitGraph |
| Pie | pie |
| Mindmap | mindmap |
| Timeline | timeline |
| Quadrant | quadrantChart |
| XY Chart | xychart-beta / xychart |
| C4 | C4Context / C4Container / C4Component / C4Dynamic / C4Deployment |
| Block | block-beta / block |
| Packet | packet-beta / packet |
| Journey | journey |
| Requirement | requirementDiagram / requirement |
| Kanban | kanban |
| Sankey | sankey-beta / sankey |
| Treemap | treemap-beta / treemap |
| Radar | radar-beta / radar |
| Venn | venn-beta / vennDiagram / venn |
| Architecture | architecture-beta / architecture |
| Event Modeling | eventmodeling / event-modeling |
| Info | info |
| Ishikawa | fishbone / ishikawa |
| Wardley | wardley |
| TreeView | treeView-beta / treeView |
Error handling
If the input is invalid or the diagram type is unrecognised, render() returns a styled error SVG matching Mermaid's browser error format — it never panics.
Themes
use ;
let svg = render;
Available themes: Theme::Default, Theme::Dark, Theme::Forest, Theme::Neutral.
Development
Run tests
Run tests with coverage
Visual regression
Requires Node.js.
Architecture
ariel-rs uses dagre-dgl-rs for directed graph layout (flowcharts, class diagrams, state diagrams, ER diagrams) and implements all other diagram types from scratch.
Dependencies
| Crate | Purpose |
|---|---|
dagre-dgl-rs |
Directed graph layout |
ab_glyph |
Font metrics for text measurement |
indexmap |
Deterministic map iteration |
serde_json |
JSON parsing (corpus loader) |
chrono |
Date handling for gantt diagrams |
License
MIT © 2026 Rochanglien Infimate