Guide

Beautify PlantUML swimlane diagrams

Step-by-step guide to render PlantUML `|lane|` swimlane diagrams as horizontal columns with theme-matched palette and crisp L-shape cross-lane edges — ready for PRDs, runbooks, and process reviews.

Follow the workflow, open the example in the editor, then export or save the cleaner result.

At a glance

Use this guide when a PlantUML swimlane source already describes the right process but the default render looks vertical, plain, or cluttered.

Why default PlantUML swimlanes need cleanupStep 1 — Paste the PlantUML sourceStep 2 — Confirm the lane layoutStep 3 — Pick a theme that fits the audienceStep 4 — Export for the destination
Rendered proof
An incident-response runbook drawn as a PlantUML swimlane.
Theme · Memphis
Open this diagram in editor
MONITORING ON-CALL SRE LEAD CUSTOMER SUPPORT yes no START ALERT FIRES ACKNOWLEDGE ALERT INITIAL DIAGNOSIS KNOWN ISSUE? RUN RUNBOOK FIX ESCALATE & ASSIST ROOT CAUSEANALYSIS APPLY FIX UPDATE STATUSPAGE WRITE POSTMORTEM STOP
View PlantUML sourcePlain-text diagram syntax — copy or edit directly.
diagram.puml
1@startuml
2|#FFB6C1|Monitoring|
3start
4:Alert fires;
5|#FFE4B5|On-call|
6:Acknowledge alert;
7:Initial diagnosis;
8if (Known issue?) then (yes)
9 :Run runbook fix;
10else (no)
11 |#B0E0E6|SRE Lead|
12 :Escalate & assist;
13 :Root cause analysis;
14 |On-call|
15 :Apply fix;
16endif
17|#90EE90|Customer Support|
18:Update status page;
19|On-call|
20:Write postmortem;
21stop
22@enduml

Why default PlantUML swimlanes need cleanup

PlantUML's swimlane (activity beta) syntax is the most expressive lane DSL in the text-diagram space — but the reference renderer leaves the output looking dated: lanes stack vertically, palettes default to 2005-era named colours, and cross-lane arrows become bezier curves. Beauty Diagram keeps the source unchanged and renders it with horizontal lane columns, theme-aware palette, and orthogonal handoff edges.

  • Lanes become side-by-side columns instead of stacked subgraphs
  • Adjacent lanes touch with shared inner borders — no awkward gaps
  • Cross-lane edges route as L-shapes (south-exit → traverse → north-enter)
  • Each theme picks a tailored palette (light pastel, dark muted, brutalist pop, monochrome blueprint, parchment atelier, Memphis colour story)

Step 1 — Paste the PlantUML source

Open the editor, switch the source format to PlantUML, and paste a `@startuml` / `@enduml` block. Use `|Name|` for plain lanes or `|#Color|Name|` to colour individual lanes. Standard activity syntax (`start`, `:Action;`, `if/else/endif`, `switch/case/endswitch`, `repeat/while`, `stop`) all work inside lanes.

Step 2 — Confirm the lane layout

After paste, the preview should show one column per lane in source declaration order, equal-width, with the first lane on the left. Activities should sit inside the lane they were declared under, even when the flow branches. If the diagram still looks vertical, double-check the source — Beauty Diagram only switches to swimlane layout when there are at least two `|lane|` declarations and at least one cross-lane edge.

Step 3 — Pick a theme that fits the audience

Theme drives lane palette automatically — there's no separate "swimlane theme" to pick. Classic, Atlas, and Modern give you the pastel default. Obsidian and Slate keep the diagram legible on dark backgrounds. Brutalist and Memphis read well on slide decks. Blueprint is monochrome with `01` `02` section numbers — useful for formal specs. Atelier translates the colour story into warm earth tones for editorial contexts.

  • Light themes — Classic, Atlas, Modern (pastel default)
  • Dark themes — Obsidian, Slate (dark muted with bright accents)
  • Pop themes — Brutalist (high-contrast), Memphis (yellow-led signature colours)
  • Specialty — Blueprint (monochrome + section numbers), Atelier (warm earth tones)

Step 4 — Export for the destination

Export SVG for docs, RFCs, and Confluence pages — it stays sharp at any zoom. Export PNG for slide decks or destinations that don't accept SVG. The Diagram Hub keeps the source so future edits regenerate from the same PlantUML, with no manual repositioning.

Guide FAQ

Questions about this workflow

What if my swimlane has lots of branches?

Internal `if/else`, `switch/case`, and `repeat` constructs work inside swimlane mode. The pattern detector treats explicit `|lane|` declarations as the strongest signal, so a complex approval chain with multiple decision points stays in the swimlane layout.

Can I reuse a lane name later in the source?

Yes. Writing `|Customer|` again later in the same diagram returns to the existing Customer lane instead of creating a duplicate. Activities declared after that header attach to the same column.

What if I supply a custom hex colour?

`|#A8D8EA|Customer|` is honoured directly — Beauty Diagram derives matching surface, back, and stroke tones by mixing the hex toward the active theme's tonal target. The resulting palette stays readable against the canvas regardless of which theme you pick.

Are horizontal swimlanes supported?

Not currently. PlantUML's native syntax only describes vertical-column lanes, and Beauty Diagram follows that convention. If you need a row-style layout, the typical workaround is to rotate the rendered SVG in your slide tool — but a vertical column layout reads well in most documents.