Skip to content

Rendering Backend Comparison

Rendering-backend pages are the normative source for backend-only behavior. The portable core docs describe model concepts shared by renderers; backend docs describe syntax, validation, render options, and extension data owned by each renderer.

Capability PlantUML Mermaid D2
System context diagrams Supported Supported Supported
System landscape diagrams Supported Rendered as Mermaid C4 context syntax Supported
Container diagrams Supported Supported Supported
Component diagrams Supported Supported Supported
Dynamic diagrams Supported Supported by renderer, limited by Mermaid C4 syntax Supported
Deployment diagrams Supported Supported by renderer, limited by Mermaid C4 syntax Supported
Relationship endpoints Elements and boundaries Concrete elements only; boundaries are rejected Elements with deterministic D2 paths
Properties Property tables Not supported Markdown tables
Directional relationship helpers c4.contrib.plantuml Not supported Not supported
Bidirectional relationship helpers c4.contrib.plantuml Not supported c4.contrib.d2
Relative layout helpers c4.contrib.plantuml Not supported D2 direction and extension layout hints
Dynamic relationship indexes c4.contrib.plantuml Not supported Not supported
Element tags, sprites, links, shapes plantuml={...} Not supported d2={...}
Boundary type hints plantuml={...} mermaid={...} d2={...}
Style options PlantUML render options Mermaid options D2 options
Image backend Local CLI/JAR or remote server Local Mermaid CLI Local D2 CLI

Use PlantUML when C4-PlantUML-specific layout, styling, tags, dynamic indexes, or remote rendering matter. Use Mermaid when Mermaid source is the target format and the diagram fits Mermaid's smaller experimental C4 feature set. Use D2 when deterministic D2 source or local D2 image export is the target.