PlantUML activity beautifier

PlantUML Activity Beautifier — clean swimlanes for runbooks & PRDs

Paste a PlantUML activity diagram — including `|lane|` swimlanes, `if-else` branches, `repeat-while` loops, and `switch-case` — and the beautifier renders it with horizontal lane columns, a theme-matched palette, and orthogonal cross-lane edges. Free, online, no signup. Export as SVG for docs or HD PNG for slides.

Three PlantUML activity diagrams ready to beautify

Each sample is a real-world PlantUML activity flow — approval, incident response, retry. Click Open in editor to load the source into the beautifier and watch the layout change in the live preview.

Reimbursement approval flow

Three lanes (Employee, Manager, Finance) with a rejection branch and a final approval. The default PlantUML render stacks lanes vertically with bezier cross-lane arrows — the beautifier produces side-by-side columns with L-shaped handoff edges.

@startuml
|Employee|
start
:Submit reimbursement;
|Manager|
:Review request;
if (Approved?) then (yes)
  |Finance|
  :Process payment;
  :Notify employee;
else (no)
  |Employee|
  :Receive rejection;
endif
stop
@enduml

Incident response runbook

On-call escalation with diagnosis, runbook fix, and SRE escalation. Beautified output keeps the lane palette theme-aware (Classic / Atlas / Modern / Obsidian) so the same source reads cleanly on light or dark documentation backgrounds.

@startuml
|#FFB6C1|Monitoring|
start
:Alert fires;
|#FFE4B5|On-call|
:Acknowledge alert;
:Initial diagnosis;
if (Known issue?) then (yes)
  :Run runbook fix;
else (no)
  |#B0E0E6|SRE Lead|
  :Escalate & assist;
  :Root cause analysis;
  |On-call|
  :Apply fix;
endif
|#90EE90|Customer Support|
:Update status page;
|On-call|
:Write postmortem;
stop
@enduml

Order fulfilment with retry

Activity diagram with a repeat-while loop for payment retries and a final dispatch step. The beautifier separates the retry edge from the main flow so the loop reads as a distinct visual element rather than a tangle.

@startuml
|Customer|
start
:Place order;
|Payment|
repeat
  :Charge card;
repeat while (Failed?) is (yes)
->no;
|Warehouse|
:Pick items;
:Pack package;
|Shipping|
:Dispatch;
stop
@enduml

Why beautify a PlantUML activity diagram

PlantUML's activity-beta grammar is the most expressive lane syntax in the text-diagram space, but the reference renderer produces output that looks dated for modern PRDs and runbooks. The beautifier preserves your source while replacing the look.

Lanes become columns, not stacks

PlantUML's default render stacks `|lane|` declarations vertically. The beautifier lays them out side-by-side — adjacent lanes share borders and the first declared lane sits on the left.

Cross-lane edges route as L-shapes

Default PlantUML draws cross-lane arrows as bezier curves that overlap activities. Beautified output uses orthogonal handoff edges: south-exit, traverse, north-enter — so the flow reads from left to right.

Theme-aware palette

Replace PlantUML's named colors with one of six palettes — Classic / Atlas / Modern for light docs, Obsidian / Slate for dark backgrounds, Brutalist / Memphis for slide decks, Atelier for editorial.

Free SVG and HD PNG export

Export crisp SVG with fonts inlined for RFCs and Confluence pages, or HD PNG sized for slide decks. Both formats keep the beautified column layout — no manual repositioning.

Frequently asked questions

What does the PlantUML activity beautifier change?

The PlantUML source is preserved exactly. The beautifier rewrites how activity grammar — `start` / `:action;` / `if-else` / `repeat-while` / `switch-case` / lanes — is rendered. Lanes become side-by-side columns instead of stacked subgraphs, cross-lane arrows route as L-shapes, and the palette switches from PlantUML's 2005-era named colors to a theme-matched palette suited for docs or slides.

Does it support PlantUML's swimlane (`|lane|`) syntax?

Yes. Both plain `|Lane Name|` and the colored `|#Color|Lane Name|` form trigger the swimlane layout, which lays out activities into horizontal columns in source declaration order. At least two lane declarations and one cross-lane edge are required to switch from the default vertical stack to side-by-side columns.

Is this PlantUML beautifier free?

Yes. Anonymous use covers unlimited preview, beautify, and export to SVG and HD PNG — with a small watermark on free output. Free accounts remove the watermark and persist diagrams to a personal hub.

Will my `@startuml` / `@enduml` and skinparam directives survive?

The `@startuml` / `@enduml` block stays in the source you save. Inside, the activity grammar (start, action, branch, loop, lane) is parsed and rendered with the active Beauty Diagram theme — `skinparam` directives are read but the visual styling on export follows the theme you pick before exporting, so the same source produces consistent output anywhere it's rendered.

Which activity diagram patterns are best supported?

Strong support: linear activity flows, branch / merge (`if-else`, `switch-case`), retry loops (`repeat-while`), and explicit swimlanes (`|lane|`). Partial: complex `fork-join` parallel paths and deeply nested switch statements still fall back to PlantUML's default layout. The full coverage roadmap is documented in the PlantUML enhance todo file.

Ready to beautify your PlantUML activity diagram?

Open the editor, paste your `@startuml` / `@enduml` block, click beautify, and export SVG or HD PNG. No signup.