Confluence Graphviz: 14 Apps, 8 Layout Engines, Tested DOT

On this page
  1. What Confluence Cloud does with DOT
  2. One graph, eight layout engines
  3. Five DOT templates for Confluence pages
  4. Mistakes Graphviz rejects, and the ones it accepts
  5. Labels in Chinese, Japanese or Korean
  6. All 14 apps that draw Graphviz in Confluence Cloud
  7. Three questions that decide the app
  8. Moving Graphviz macros from Data Center
  9. Where our app fits
  10. How we collected the data

An engineer pastes a dependency graph into a Confluence design doc. In the Data Center wiki it was a picture; in Cloud it is twenty lines of digraph text in a grey box, and the review starts with “can someone draw this?”.

Confluence Cloud does not draw DOT. This guide shows what each Graphviz layout engine does with the same graph, gives you five templates that render cleanly, lists the mistakes Graphviz accepts without a word, and compares all 14 apps that draw it in Confluence Cloud.

Short answer: install one of the 14 Marketplace apps that draw DOT. Before you choose, check three things: where the diagram is drawn (in your browser, or on a server outside Atlassian), whether the page’s PDF and Word export keeps it, and whether the app is on Forge or on Connect, which Atlassian stops supporting on 31 January 2027. Then pick a layout engine with one line, layout=dot for most design docs, and copy a template.

What Confluence Cloud does with DOT

Nothing on its own. Every result for “confluence graphviz” on Google’s first page is a Marketplace listing, a vendor’s documentation, Data Center advice, or a 2012 tutorial for the old wiki markup. A Marketplace search for “graphviz” in Confluence Cloud on 27 October 2026 returned 19 apps; 14 of them draw DOT.

The language itself is the same everywhere. What differs is the app around it: which Graphviz version it runs, where it runs it, and what happens to the diagram when you export the page or remove the app. The DOT you write in this guide works in all of them, so the engines and templates come first.

One graph, eight layout engines

Graphviz has one language and several layout programs. You choose one with a single line at the top of the graph, such as layout=neato;. We rendered one graph, ten services in three clusters with eleven edges, through each engine of Graphviz 16.1.0, the release of 3 September 2026, compiled to WebAssembly. Only the layout= line changed.

Eight drawings of the same Graphviz graph: web and mobile clients, an api with auth, orders and search services, and db, cache, queue and index in a data cluster. layout=dot draws neat layers from the clients down to the data, with three cluster boxes. layout=neato spreads the nodes like springs and ignores the clusters, so the cluster boxes overlap. layout=fdp spreads them but keeps the three clusters apart. layout=sfdp drops the clusters and piles several nodes on top of each other. layout=circo puts the nodes on circles and makes a wide, sparse drawing. layout=twopi puts api in the middle with the others on rings around it. layout=osage packs the three clusters side by side in a grid. layout=patchwork draws the clusters as a treemap of squares with no edges, and long names overflow their squares. Rendered with Graphviz 16.1.0 through @viz-js/viz 3.31.0 on 28 October 2026.
LineWhat it draws (Graphviz docs)Use it in Confluence forWatch out
layout=dot“hierarchical or layered drawings”, the defaultarchitecture, request flows, pipelines, runbooksLong chains get tall; add rankdir=LR for wide pages
layout=neatoa “spring model” layoutsmall networks without a directionIgnores clusters: their boxes overlapped in our test
layout=fdp“Force-Directed Placement”services grouped by teamEdges can run across the cluster labels
layout=sfdp“Scalable Force-Directed Placement”graphs with hundreds of nodesIn browser builds, 9 pairs of nodes overlapped until we added overlap=false
layout=circoa “circular layout”rings, cycles, peer-to-peer linksWide and sparse: our graph came out 672 × 475 points, against dot’s 374 × 370
layout=twopia “radial layout”one service and everything around itSet the centre with root="name", or Graphviz picks one
layout=osage“draws clustered graphs”a map of groupsEdges are drawn but squeezed between packed clusters
layout=patchwork“a squarified treemap layout”the size of each groupDraws no edges at all; names longer than the square overflow it

Which engines keep your cluster_ boxes matters more than it looks. In our run, dot, fdp, osage and patchwork drew all three cluster boxes where they belong; sfdp, circo and twopi drew none; neato drew them, but around nodes it had placed without regard to them, so the boxes overlap.

Five DOT templates for Confluence pages

Each template is a page Confluence teams write every week. All five rendered with Graphviz 16.1.0 with no errors and no warnings, and the picture under each one is that output. Paste the text into your app’s Graphviz editor or macro.

1. An architecture diagram for a design doc

Clusters group the services, rankdir=LR keeps the diagram wide enough for a page, and compound=true with lhead lets an edge end at a cluster rather than at one node.

digraph architecture {
  fontname="Helvetica";
  rankdir=LR;
  compound=true;
  node [shape=box, style="rounded,filled", fillcolor="#EFF6FF", fontname="Helvetica"];
  edge [fontname="Helvetica", fontsize=10];

  subgraph cluster_edge {
    label="Edge";
    "Web app"; "Mobile app";
  }
  subgraph cluster_services {
    label="Checkout services";
    "API gateway"; "Orders"; "Payments";
  }
  subgraph cluster_data {
    label="Data";
    "Orders DB" [shape=cylinder];
    "Event bus" [shape=cds];
  }

  "Web app" -> "API gateway" [label="HTTPS"];
  "Mobile app" -> "API gateway" [label="HTTPS"];
  "API gateway" -> "Orders";
  "Orders" -> "Payments" [label="gRPC"];
  "Orders" -> "Orders DB";
  "Payments" -> "Event bus" [label="charged", lhead=cluster_data];
}
The architecture template drawn left to right: an Edge cluster with Web app and Mobile app sending HTTPS to the API gateway in the Checkout services cluster, which calls Orders, which calls Payments over gRPC; Orders writes to the Orders DB cylinder and Payments sends charged to the Data cluster, which also holds the Event bus.

2. A runbook decision flow

Diamonds for questions, labelled edges for answers, and \n to break long labels. On-call pages are where text diagrams pay off: the next person can fix a step without redrawing anything.

digraph runbook {
  node [fontname="Helvetica", shape=box, style=rounded];
  edge [fontname="Helvetica", fontsize=10];

  alert   [label="Alert: payment errors > 2 %", shape=box, style="rounded,filled", fillcolor="#FEE2E2"];
  deploy  [label="Deploy in the\nlast 30 minutes?", shape=diamond];
  rollback [label="Roll back the release"];
  provider [label="Provider status\npage red?", shape=diamond];
  failover [label="Switch to the\nbackup provider"];
  page    [label="Page the on-call\npayments engineer", style="rounded,filled", fillcolor="#EFF6FF"];

  alert -> deploy;
  deploy -> rollback [label="yes"];
  deploy -> provider [label="no"];
  provider -> failover [label="yes"];
  provider -> page [label="no"];
  rollback -> page [style=dashed, label="still failing"];
}
The runbook template drawn top to bottom: Alert: payment errors over 2 % leads to the diamond Deploy in the last 30 minutes?; yes leads to Roll back the release, no to the diamond Provider status page red?; yes leads to Switch to the backup provider, no to Page the on-call payments engineer, which a dashed still failing edge also reaches from the rollback.

3. A Jira workflow, documented on the team page

Statuses as nodes, transitions as labelled edges. The dashed edge marks the way back.

digraph workflow {
  rankdir=LR;
  node [shape=box, style="rounded,filled", fillcolor="#F1F5F9", fontname="Helvetica"];
  edge [fontname="Helvetica", fontsize=10];

  "To Do" -> "In Progress" [label="Start"];
  "In Progress" -> "In Review" [label="Open PR"];
  "In Review" -> "In Progress" [label="Changes requested"];
  "In Review" -> "Done" [label="Merge"];
  "In Progress" -> "Blocked" [label="Flag"];
  "Blocked" -> "In Progress" [label="Unblock", style=dashed];

  "Done" [fillcolor="#DCFCE7"];
}
The workflow template drawn left to right: To Do, Start, In Progress, Open PR, In Review, Merge, Done in green; In Review returns to In Progress with Changes requested; In Progress goes to Blocked with Flag, and Blocked returns with a dashed Unblock edge.

A first draft of this template put “In Progress” and “Blocked” on the same rank with rank=same; the two labels, Flag and Unblock, were then drawn on top of each other. Letting dot place Blocked itself fixed it.

4. A data model with real tables

HTML-like labels give each table its rows, and ports let an edge start at the exact column. The crow’s foot is on the “many” side: many orders, one customer.

digraph data_model {
  rankdir=LR;
  node [shape=plain, fontname="Helvetica"];

  customer [label=<
    <table border="0" cellborder="1" cellspacing="0" cellpadding="4">
      <tr><td bgcolor="#EFF6FF"><b>customer</b></td></tr>
      <tr><td port="id" align="left">id uuid PK</td></tr>
      <tr><td align="left">email text</td></tr>
    </table>>];

  orders [label=<
    <table border="0" cellborder="1" cellspacing="0" cellpadding="4">
      <tr><td bgcolor="#EFF6FF"><b>orders</b></td></tr>
      <tr><td align="left">id uuid PK</td></tr>
      <tr><td port="customer" align="left">customer_id uuid FK</td></tr>
      <tr><td align="left">total numeric</td></tr>
    </table>>];

  orders:customer -> customer:id [dir=both, arrowtail=crow, arrowhead=tee];
}
The data model template: an orders table with id uuid PK, customer_id uuid FK and total numeric, and a customer table with id uuid PK and email text; one edge runs from the customer_id row to the customer id row, with a crow's foot at the orders end and a bar at the customer end.

5. Everything one service depends on

layout=twopi with root puts the service in the middle and its dependencies on rings around it. This is the page you want open during an incident on that service.

graph dependencies {
  layout=twopi;
  root="Payments API";
  ranksep=1.6;
  fontname="Helvetica";
  node [shape=box, style="rounded,filled", fillcolor="#EFF6FF", fontname="Helvetica"];

  "Payments API" [fillcolor="#DBEAFE", penwidth=2];

  "Payments API" -- { "Auth" "Ledger" "Fraud check" "Card vault" "Event bus" };
  "Ledger" -- "Orders DB";
  "Fraud check" -- "Risk model";
  "Event bus" -- { "Emails" "Analytics" };
}
The dependency template drawn radially: Payments API in the centre with a thick border, Auth, Ledger, Fraud check, Card vault and Event bus on the first ring, and Orders DB behind Ledger, Risk model behind Fraud check, and Emails and Analytics behind Event bus on the outer ring.

Mistakes Graphviz rejects, and the ones it accepts

We fed common mistakes to Graphviz 16.1.0 and wrote down exactly what came back. The first group at least stops with an error. The second group is worse: the diagram renders, and it is wrong.

You wroteWhat happensWrite instead
graph g { a -> b }“syntax error in line 1 near ’->’”digraph for arrows, or a -- b in a graph
digraph g { a -- b }“syntax error in line 1 near ’—’”a -> b
api-gateway -> db“syntax error in line 1 near ’-’”"api-gateway" -> db
node -> edge“syntax error in line 1 near ’->’”: both are keywords"node" -> "edge"
A missing closing }“syntax error in line 1”, no positionCount the braces of every subgraph
v1.2 -> dbRenders. Two nodes, v1 and .2; the edge starts at .2"v1.2" -> db
API Gateway -> dbRenders. A lone API node and an edge Gateway -> db"API Gateway" -> db
subgraph payments { … }Renders with no box: only names starting cluster are boxedsubgraph cluster_payments, or cluster=true inside
colour=redRenders black, with no warning: unknown attribute ignoredcolor=red
fontname="Helvetica,Arial,sans-serif"Warning; sizes measured with Times, so boxes fit badlyOne font name: fontname="Helvetica"
splines=ortho with edge labels“Orthogonal edges do not currently handle edge labels”xlabel= instead of label=
image="logo.png"“No such file or directory”: a browser has no files to readUse the app’s own image feature, or drop the image
layout=sfdp on a small graphNodes drawn on top of each other in browser buildsAdd overlap=false; or overlap=scale;

The sfdp row deserves a sentence. Graphviz’s overlap documentation says that “by default, sfdp uses overlap=“prism0"", and Prism needs a triangulation library that the WebAssembly build does not include. Graphviz warns “remove_overlap: Graphviz not built with triangulation library” and carries on. Our test graph had 9 overlapping pairs of nodes; with overlap=false, scale or voronoi it had none.

Labels in Chinese, Japanese or Korean

The WebAssembly build of Graphviz has no font files, so it estimates the width of each label from built-in tables. For Latin, Cyrillic and Turkish text the estimate was generous in our test; for Chinese, Japanese and Korean it was too small, and the text ran past its box. We drew each label in a box and measured both in Chromium.

LabelBox width (px)Text width (px)Fits?
Payments service11498yes
Платёжный сервис125113yes
Größenänderung11195yes
支付服务网关7985no, 6 px over
支付服务网关与风控中心132156no, 24 px over
決済サービスと請求の管理142170no, 28 px over
결제 서비스 게이트웨이128147no, 19 px over

Graphviz says so, if your app shows warnings: “no value for width of non-ASCII character”. The fix is to size the boxes yourself, for example node [width=3]; for the whole graph or width= on one node. With width=3 every label above fitted. This applies to every app built on this Graphviz build, ours included.

All 14 apps that draw Graphviz in Confluence Cloud

We searched the Marketplace for “graphviz” in Confluence Cloud on 27 October 2026 and kept every app that draws DOT: 14. Our four Excalidraw apps for Confluence share one Graphviz editor, so they count as one row. Installs, ratings and prices come from the Marketplace API. “Listing says” means the vendor’s words; we did not install the other vendors’ apps.

App (vendor)InstallsRating (reviews)Price: up to 10 users / per user 11–100Where it draws (listing says)Built on, last release
Just Add+ Embed Markdown, Diagrams & Code (Modus Create)8,0253.4 (56)free / $0.50not stated; Graphviz among 15 diagram typesForge, Oct 2026
PlantUML Diagrams for Confluence (Stratus Add-ons)5,2423.4 (50)free / $0.70not stated; “GraphViz diagrams” next to PlantUMLForge, Oct 2026
Graphviz Diagrams for Confluence (Appfire)6053.7 (11)free / $1.20not stated; “No need to install Graphviz software”Forge, Sep 2026
Excalidraw, Mermaid, PlantUML Whiteboard (Fulstech)2303.1 (6)free / $0.83a Graphviz macro; “external rendering services” documentedForge, Sep 2026
PlantUML, Mermaid UML, Graphviz (Fulstech)89none yetfree / $0.13not statedConnect, Jul 2026
Kroki Diagrams for Confluence (Chinese Technical Support)455.0 (1)free / $0.50the Kroki.io server by defaultForge, Mar 2026
Graphviz Cloud (Addteq)352.5 (2)$3 a month / $0.40not stated; images attached to the pageConnect, Mar 2022
Excalidraw Architecture & Sequence Diagrams (Simplify, ours)21none yetfree / $0.15in the browser, Graphviz 16.1.0; no external callsForge, Oct 2026
Visualize with Code for Confluence (Utoolity)173.8 (1)free / $0.20“powered by Kroki”Forge, Mar 2025
Graphviz for Confluence (Chinese Technical Support)4none yetfree / $0.50not statedForge, Jun 2026
Graphviz Charts for Confluence (NGPILOT)1none yetfree / $1.00not stated; “11 Layout Engines” to pick fromForge, Apr 2026
Mermaid, PlantUML & Graphviz Diagrams (Mastero)not shownnone yetfree / $0.50“in your browser”; pinned engine versionsForge, Sep 2026
JustVision (Sendel)not shownnone yetfree / $0.34an AI diagram tool; DOT is one of its inputsForge, Jan 2026
Knowvah Diagrams for Confluence (Knowvah)not shownnone yetfree / $0.70browser and Forge, Graphviz ported to TypeScriptForge, Sep 2026

The two apps with the most installs are not Graphviz apps at all: Just Add+ is a Markdown and diagrams toolkit, and Stratus’s app is built for PlantUML. If DOT is all you need, the field is small: Appfire’s app, with 605 installs, is the only app built for Graphviz alone with more than 50.

Three questions that decide the app

1. Where is the diagram drawn? For a design doc this is a security question. The Kroki app says its “default kroki server is: Kroki.io”, and Kroki’s API documentation shows how a diagram reaches it: in a GET request “your diagram must be encoded in the URL”, in a POST “the diagram source will be sent as the request body”. Either way the text of your architecture leaves Atlassian, unless you point the app at a Kroki server of your own. Knowvah, Mastero and our app say they draw in the browser; most listings say nothing, so ask the vendor.

2. Does the page export keep the diagram? Appfire’s Cloud migration guide, updated on 27 August 2026, says: “In the cloud version, you cannot save a Graphviz diagram as a PDF or Word file, or export to PDF or Word.” Knowvah says “Export a page to PDF or Word and the diagram comes across as a diagram”, Fulstech’s whiteboard “renders saved diagrams in Confluence PDF and Word exports”, and so does ours. If your design docs go to customers or auditors as PDFs, test an export on the first day of the trial.

3. Forge or Connect? Two apps in the table, Addteq’s and Fulstech’s Graphviz app, have no Forge app ID in the Marketplace API. Atlassian’s Connect timeline says “Marketplace apps with a Connect descriptor can no longer be updated”, and end of support moved to 31 January 2027. “Customers who have Connect apps installed won’t lose access to the app”, but an app that cannot be updated will not get the next Graphviz fix. Addteq’s last release was in March 2022.

Moving Graphviz macros from Data Center

Most teams searching for Confluence Graphviz have pages written for Appfire’s Server and Data Center app, the one that needs “Graph Visualization Software (Graphviz) installed on the Confluence server”. Appfire’s migration guide says “All the macros available in the server are supported in the cloud version as well”, and lists what does not move:

  • templates as a source, and “File option is not applicable for Confluence cloud”;
  • macro nesting, and “Render wiki markup macros in body”;
  • the outgoing link in Graph from table;
  • PDF and Word export of the diagram, as quoted above;
  • URL sources, which “Have to be configured manually from the Global Configuration page”.

If you are moving to another vendor instead, Mastero’s listing says its app “Finds Mermaid, PlantUML and Graphviz macros left by other apps” and converts only the ones you tick. With any other app, the DOT text moves by copy and paste: it is the same language, and the templates above render in all of them.

Where our app fits

Our Excalidraw Architecture & Sequence Diagrams for Confluence is a whiteboard with a Graphviz editor in it: you write DOT with a live preview, insert the laid-out graph into an Excalidraw scene, and then circle, annotate and sketch around it by hand. The source stays editable, the page’s PDF and Word export includes the drawing, and everything runs in your browser on Forge with no external calls. It draws with the same Graphviz 16.1.0 build we tested here, so every layout= line above works, and the Chinese, Japanese and Korean width issue applies too. See the documentation for the editor.

It is a whiteboard first. If you want a plain diagram macro with no canvas, Appfire’s or Knowvah’s app is quicker to use; if you want to point at the part of the architecture that is changing, ours is built for that. For Jira, the same editor is in Excalidraw Architecture & Dependency Diagrams for Jira.

How we collected the data

  • Which apps: Atlassian Marketplace REST API v2, addons?application=confluence&hosting=cloud&text=graphviz, on 27 October 2026: 19 results. We kept the 14 that draw DOT and left out an image library, a Vega app, a LaTeX app, an SVG library and our Excalidraw Math app, which shares the Graphviz editor of the row above.
  • Installs, ratings, prices, framework, release: the API’s app record, versions/latest (release date, and the Forge app ID that Connect apps lack) and pricing/cloud/live (the monthly price for 10 users, and the per-user price of the 100-user tier). Annual prices and discounts are not included. “Not shown” means the API returned no install count.
  • Engines, errors and widths: Node.js 24 with the npm package @viz-js/viz 3.31.0, which contains Graphviz 16.1.0, the build our apps ship. Overlaps counted from Graphviz’s own JSON output; label widths measured in Chromium with Playwright.
  • Google’s first page: a search for “confluence graphviz” in Chrome, English, United States, on 27 October 2026.

Prices and listings change. If you spot something out of date, tell us and we will fix it.

Frequently asked questions

Does Confluence Cloud support Graphviz without an app?

No. Confluence Cloud has no DOT macro of its own, so every Graphviz diagram you see on a Cloud page is drawn by a Marketplace app. On 27 October 2026 a Marketplace search for "graphviz" in Confluence Cloud returned 19 apps, 14 of which draw DOT. On Confluence Data Center, Appfire's Graphviz app also needs the Graphviz package installed on the server.

Is there a free Graphviz app for Confluence?

All 14 apps are free for up to 10 users except Addteq's Graphviz Cloud, which charges $3 a month at 10 users. Above 10 users they charge per user: from $0.13 a month (Fulstech, a Connect app) and $0.15 (our Excalidraw app) to $1.20 (Appfire) at 11–100 users. Prices from the Marketplace API, 27 October 2026; annual prices and discounts not included.

How do I change the Graphviz layout engine in Confluence?

Put a layout line at the top of the graph, for example layout=neato; or layout=twopi;. We checked that Graphviz 16.1.0 compiled to WebAssembly gives exactly the same drawing for the line as for the engine option, so it works in any app that passes your DOT to Graphviz unchanged. Some apps, such as NGPILOT and Knowvah, also offer an engine picker.

Why are my Graphviz nodes drawn on top of each other?

Most likely the engine is sfdp. Its default overlap removal is prism0, and Graphviz builds that run in the browser lack the library it needs: our test graph had 9 overlapping pairs of nodes and the warning "Graphviz not built with triangulation library". Add overlap=false; or overlap=scale; and the overlaps are gone.

Do Graphviz diagrams appear in Confluence PDF and Word exports?

Depends on the app. Appfire's Cloud migration guide says "you cannot save a Graphviz diagram as a PDF or Word file, or export to PDF or Word" in the Cloud version. Knowvah, Fulstech's Excalidraw whiteboard and our Excalidraw app say the exported page includes the diagram. Export one test page during the trial.

Can I use the same DOT diagrams in Jira?

Yes, the language is the same. Jira Cloud does not draw DOT either, so it needs an app: Appfire has Graphviz Diagrams for Jira, and our Graphviz Graphs & Vega-Lite Charts in Tabs and Excalidraw Architecture & Dependency Diagrams for Jira use the same Graphviz 16.1.0 build as our Confluence app, so the five templates here render the same way.

Keep reading