Skip to main content

Diagrams taller than the engine's own limit

The bundled PlantUML engine measures every diagram after layout and refuses to serialize one wider or taller than a set number of points, reporting Diagram too large for browser rendering. The engine's own limit is 8192 points — and was 4096 before @plantuml/core 1.2026.8 — which is about forty stacked class boxes, or seventy steps of an activity diagram. A real release runbook or domain model passes it without trying.

It is not a limit you can talk your way around from the diagram source. scale has no effect, because the check reads the dimensions before the scale factor is applied. skinparam dpi has no effect either. left to right direction only swaps which of the two numbers is too large.

So the plugin raises it, to 32768 points by default, and the maxSvgSize option moves it — set it higher for a diagram that still does not fit, or to 0 to remove the check entirely. This site leaves the default in place. The pipeline below is 95 steps and lays out at 278 × 5667 points — well past the engine's own ceiling — and renders normally. Use Fit in the toolbar to get the whole thing on screen, the minimap to move around it, and search to jump to a stage by name.

Release pipeline — from merge to production (waiting to render)
Release pipeline — from merge to production

The same limit, sideways

The ceiling applies to both dimensions, so a diagram can be perfectly short and still be refused for being too wide. The order lifecycle below is drawn with left to right direction, which is the natural shape for a long-running saga — and is exactly the case where the engine's own limit bites hardest, because a wide diagram is not unreasonable, it is just wide.

A wide diagram never breaks the page layout. The figure stays inside the content column, and the page never grows a horizontal scrollbar: the SVG is scaled down to the column width, so the whole diagram is on screen from the start.

The trade-off is legibility, and it is worth seeing. This one lays out at 7111 × 633 points — an aspect ratio of about 11:1 — so fitting 7111 points into an 800-point column means showing it at roughly 11%, a band a few dozen pixels tall in which no label is readable. Nothing is lost, but you have to go and get it: zoom in and drag, maximize to give it the whole window, or open the minimap to move along the diagram while staying zoomed in. Search finds a state by name and scrolls it into view.

That is the honest shape of a very wide diagram in a documentation column, and it is a good reason to reach for left to right direction deliberately rather than by habit.

Order lifecycle — left to right (waiting to render)
Order lifecycle — left to right

What hitting the limit looks like

Under the engine's own ceiling, this exact diagram produces an error panel rather than a picture. The engine reports its refusal through the same channel it uses for a syntax error, so it arrives as a rendering failure with the measured size attached:

Diagram too large for browser rendering: 278x5667 (max 8192; override via the maxSvgSize
option, or set it to 0 to disable this check)

If you still hit the ceiling

You can raise maxSvgSize, but 32768 points is already a lot of diagram, and one that large is a heavy page: the SVG runs to hundreds of kilobytes and is parsed twice on the main thread on its way in. That cost is why the default is a number rather than 0. If you reach the limit, or the page feels slow, the levers that actually work are the ones that make the picture smaller:

  • fewer nodes and edges — split one diagram into several fences;
  • skinparam ranksep 20 and skinparam nodesep 20 to tighten the spacing;
  • skinparam defaultFontSize 10 for a smaller overall box size;
  • hide empty members on class diagrams;
  • left to right direction when the content is genuinely wider than it is tall.