TOOL
Kroki logo

Kroki

Kroki is a free, open-source service that turns textual descriptions of diagrams into rendered images through a single unified HTTP API. It is developed and maintained by Yuzu tech (yuzutech), released under the MIT license, with public infrastructure historically sponsored by Exoscale. Rather than being a diagram syntax of its own, Kroki is an aggregating gateway: it accepts source text written in one of roughly thirty supported diagram languages and delegates the actual rendering to the corresponding upstream tool, returning PNG, SVG, JPEG, PDF, or text output depending on the diagram type.

The supported languages span several ecosystems, including Graphviz DOT (DOT), Mermaid, PlantUML, D2 (D2), Structurizr DSL (Structurizr DSL), BlockDiag and its family (SeqDiag, ActDiag, NwDiag, PacketDiag, RackDiag), BPMN, Bytefield, C4-with-PlantUML, DBML, Ditaa, Erd, Excalidraw, GoAT, Nomnoml, Pikchr, SvgBob, Symbolator, TikZ, UMLet, Vega and Vega-Lite, WaveDrom, and WireViz. Because these upstream libraries are written in many languages (Haskell, Python, JavaScript, Go, PHP, Java, plus C bindings), Kroki's value proposition is that a single deployment removes the need to install and maintain each toolchain separately.

Architecturally, the core gateway is a Java application built on the Vert.x reactive toolkit. Diagram engines that are hard to embed in the JVM run as separate companion microservices (for example Node.js servers for Mermaid, BPMN, and Excalidraw, and Node.js CLI wrappers for Nomnoml, Vega, WaveDrom, and Bytefield), which the gateway calls over the network. This design is reflected in its Docker deployment: the main yuzutech/kroki container is typically composed with optional companion containers via Docker Compose. Requests can be made as GET calls, where the source is deflate-compressed and Base64-encoded directly into the URL path (e.g. /graphviz/svg/<encoded>), or as POST calls carrying plain text or JSON in the body; per-diagram options are passed via headers or query parameters.

In the graph-data and format-conversion landscape, Kroki is a rendering and visualization layer rather than a data-interchange converter: it consumes human-authored diagram source and emits pictures, so it does not translate between graph serialization formats or expose a graph object model the way libraries such as NetworkX or Graphviz's own bindings do. Its strengths are convenient batch and CI/CD integration (documentation embeds, static-site pipelines), a stable API across many notations, and full self-hosting. Its main limitations are that output fidelity and feature coverage depend entirely on the bundled upstream versions, self-hosting requires Linux and container operations expertise, and some engines (such as Diagrams.net) are marked experimental.

Input Formats

Frequently Asked Questions

What graph file formats does Kroki support?

See the list on this page — it shows every format Kroki can read, write and display.

How do I import a graph into Kroki?

Convert your file to a format Kroki can read, then open it in Kroki. Use GraphInOut to get a Kroki-compatible file in seconds.

How do I convert a file so Kroki can open it?

Use the convert links above — upload or paste your graph, pick a format Kroki accepts and download the result, right in your browser.