Head to head · Diagrams as code · October 2026 research run
Kroki vs PlantUML
PlantUML scores 66.9 (B) on agent readiness against Kroki's 59.2 (C), and leads in 4 of 7 scored categories. Kroki leads on security & auth and maintenance & community. Both do diagrams as code.
Best diagramming APIs and diagram-as-code for AI agents · All 99 diagrams comparisons
Which one, for what
Kroki C
Good for Agents that write diagrams in several text formats and want one render endpoint, on a private network or through the public instance for non-sensitive diagrams.
Ahead on
- Security & auth, 56 against 50
- Maintenance & community, 86 against 73
Watch for
GHSA-wmpp-fj9c-w766 (CVSS 9.8) allowed unauthenticated remote code execution on /tikz/svg in versions 0.21.0 up to 0.32.0, whatever the safe mode. Fixed 3 August 2026
PlantUML B
Good for Agents that write sequence, class, state, component, deployment, Gantt or C4 diagrams as text and render them locally or in CI.
Ahead on
- Reliability, 83 against 74
- Schema & documentation, 65 against 48
- Agent ergonomics, 78 against 70
- Transparency & trust, 73 against 62
Watch for
The default security profile is LEGACY, which gives diagram text full access to local files and URLs through !include. The docs say it will be removed, with no date
Score by category
| Category | Weight this run | Kroki | PlantUML | Edge |
|---|---|---|---|---|
| Reliability | 16%20 | 74 | 83 | PlantUML +9 |
| Performance | 10%pending | pending | pending | not scored in this run |
| Schema & documentation | 13%16.2 | 48 | 65 | PlantUML +17 |
| Agent ergonomics | 13%16.2 | 70 | 78 | PlantUML +8 |
| Security & auth | 14%17.5 | 56 | 50 | Kroki +6 |
| Payments & pricing | 10%12.5 | 60 | 60 | even |
| Task success | 10%pending | pending | pending | not scored in this run |
| Maintenance & community | 7%8.8 | 86 | 73 | Kroki +13 |
| Transparency & trust | 7%8.8 | 62 | 73 | PlantUML +11 |
| Negative events | ≤15 | -5 | -2 | |
| Total | 59.2 · C | 66.9 · B |
Facts side by side
| Fact | Kroki | PlantUML |
|---|---|---|
| Kind | HTTP API | SDK + MCP |
| Vendor | Yuzu tech | PlantUML project (Arnaud Roques) |
| Hosted endpoint | no (local only) | no (local only) |
| Transports | HTTP | |
| Auth | None | None |
| Pricing | Free | Free |
| x402 | no | no |
| Licence | MIT | GPL-3.0-or-later |
| Read-only variant documented | no | no |
| llms.txt | no | no |
| Last release | 2026-10-05 | 2026-09-05 |
| Terms last updated | no document linked | no document linked |
| Privacy policy last updated | no document linked | no document linked |
| Customer content may train models | ||
| Terms restrict automated access | ||
| Terms restrict benchmarking | ||
| Terms or service can change without notice | ||
| Arbitration or class-action waiver | ||
| Popularity | 4.4k stars | 13k stars, 207 npm/wk |
Verdicts
Kroki
One unauthenticated POST with diagram text returns an image for 29 diagram types, and five versions shipped between 15 July and 5 October 2026. Four advisories were published in July and August 2026, one an unauthenticated remote code execution on /tikz/svg, all fixed. No OpenAPI file exists, and the public instance has no terms, privacy policy or status page.
PlantUML
One Java command reads diagram text from stdin and writes PNG, SVG, PDF or ASCII with no account, and CI passed on the last eight pushes. The default security profile lets diagram text read any local file and fetch any URL, and the documentation still lists chronology diagrams that release 1.2026.2 switched off.
Before you call either
Kroki
- Send
POST /<type>/<format>withContent-Type: text/plainand the diagram as the body. This avoids the deflate and base64 encoding that GET needs - Send
Accept: application/jsonon a JSON request to get errors as{"error": {"code", "message"}}. With an SVG Accept header the error arrives as an image - Call
GET /healthfirst to list the diagram types and library versions the instance has. Mermaid, BPMN, Excalidraw and diagrams.net need companion containers - Run 0.32.1 or later before rendering untrusted text. Earlier versions allow remote code execution through
/tikz/svgand file reads inSECUREmode - Self-host for private diagrams with
docker run -p8000:8000 yuzutech/kroki, and setKROKI_LISTEN=127.0.0.1:8000or a network rule, since the server has no authentication
PlantUML
- Set
PLANTUML_SECURITY_PROFILEtoSANDBOXorALLOWLISTbefore rendering text from an untrusted source. The default profile lets!includeread local files and fetch URLs - Run
java -jar plantuml.jar --check-syntaxwith-stdrptfirst and read the exit status. Without--no-error-imagea syntax error still writes an image of the error text - Pass
-pipewith--svg,--txtor--utxtto work without files.--txtoutput suits a text-only model - Start the local server as
-picoweb:8080:127.0.0.1. Without the bind address it listens on every interface - Use
npx -y @plantuml/mcp-jswhen no Java runtime is present. It renders SVG only, so use the jar for PNG or PDF
Questions
Which is better for AI agents, Kroki or PlantUML?
PlantUML scores 66.9 (B) on agent readiness against Kroki's 59.2 (C), and leads in 4 of 7 scored categories. Kroki leads on security & auth and maintenance & community.
Can an agent call Kroki and PlantUML without installing anything?
No hosted endpoint is listed for Kroki. No hosted endpoint is listed for PlantUML.
Are Kroki and PlantUML open source?
Yes. Kroki is open source (MIT). PlantUML is open source (GPL-3.0-or-later).
Other comparisons with Kroki or PlantUML
- Cloudviz API vs Kroki
- Cloudviz API vs PlantUML
- Diagrams.so API + MCP vs Kroki
- Diagrams.so API + MCP vs PlantUML
- draw.io + MCP vs Kroki
- draw.io + MCP vs PlantUML
- Eraser API + MCP vs Kroki
- Eraser API + MCP vs PlantUML
- Excalidraw vs Kroki
- Excalidraw vs PlantUML
- Kroki vs Mural MCP
- Kroki vs Whimsical MCP
- Lucid API + MCP vs PlantUML
- Mermaid Chart MCP vs PlantUML
- Mural MCP vs PlantUML
- PlantUML vs Whimsical MCP
- D2 vs Kroki
- D2 vs PlantUML
- Kroki vs Lucid API + MCP
- Kroki vs Mermaid Chart MCP
- Kroki vs Structurizr + MCP
- Kroki vs tldraw SDK + MCP
- PlantUML vs Structurizr + MCP
- PlantUML vs tldraw SDK + MCP
Machine-readable
- This page as Markdown
/compare/kroki-vs-plantuml.md· slim.min.md· JSON.json(or sendAccept: text/markdown) - Each listing in full
/api/v1/tools/kroki.json·/api/v1/tools/plantuml.json - From a terminal
anchor compare kroki plantuml(the CLI) - Over MCP
compare_tools {"a": "kroki", "b": "plantuml"}at/mcp, no key