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.