Exporting

Everything sits behind the Export ▾ button in the toolbar. The popover has two shared options at the top, then the formats.

Shared options

ThemeMatch app (default), Light or Dark. This decides which colour tokens are baked into the exported file, independently of the theme you are editing in: you can work in dark mode and export a light diagram for documentation.

Transparent background — drops the paper fill so whatever the file is placed on shows through.

Format Theme Transparent background
SVG Yes Yes — the background rectangle is omitted
PNG Yes Yes — the PNG keeps its alpha channel
Copy image Yes Yes
HTML viewer Yes Yes
PDF Yes (diagram colours only) Always — the page is white paper regardless
Visio .vsdx No No
CSV inventory No No
Copy Mermaid No No
Graphviz DOT No No
Copy DOT No No

Two further things follow what you are looking at rather than being options: hidden layers are never exported (a layer you turned off cannot be revealed by a recipient), and if the canvas is in isometric view, SVG, PNG, copy-image, HTML and PDF export the isometric projection from the corner you have orbited to.

Exports are named after the active page's name — the one on its tab in the pages bar (name.svg, name.png, name-inventory.csv); the HTML viewer, being a whole-document file, is named after the open file instead. In the desktop app you pick a destination and get a toast naming the path; in the browser it arrives as a download.

SVG

Export → SVG writes a standalone .svg of the active page. Styles and design tokens are inlined, so the file is faithful on its own and makes no network requests.

PNG

Export → PNG writes a .png of the active page rendered at , so it stays sharp in documents and slide decks. It is rasterised from the same SVG the SVG export produces.

Copy image

Export → Copy image puts the same 2× PNG on the system clipboard instead of writing a file — paste it straight into a ticket, chat or document. It honours the theme and transparency options.

If the page is empty, or the browser does not support writing images to the clipboard, you get a message saying so rather than a silent failure. Clipboard writes also fail if the window is not focused.

Visio (.vsdx)

Export → Visio writes the whole document — all pages — as a .vsdx, independent of whatever file the document is open from. This is the path that works everywhere; the Save dialog only offers .vsdx where the browser's file-picker API is available.

Pages you have not visited are exported too, with straight fallback links where no route has been computed.

PDF

Export → PDF exports the whole document — one sheet per page, in tab order — through the browser's print-to-PDF: a print document is assembled and the print dialog opens, where you choose "Save as PDF". It needs no plugin and works the same in the browser and the desktop app. Want just one page? The print dialog's own Pages field already does that (the sheets are in tab order, so page 3 of the document is page 3 of the print), which is why there is no extra choice to make here. An empty page adds no blank sheet.

An empty page exports nothing.

HTML viewer

Export → HTML viewer writes the whole document as one self-contained .html file. It opens in any browser, offline, and can be emailed, attached to a ticket or committed next to the .drawio it came from — the answer to "I can't open your diagram".

It is genuinely self-contained: all CSS and JS inline, system fonts only, images as the data URLs already in the document, and zero network requests.

What the viewer adds over a flat picture — the things a PNG loses:

The text is real text, so the browser's own find and print work on it. With JavaScript disabled the pages simply stack vertically under their own headings, the tabs become anchors, and the layer toggles still work.

CSV inventory

Export → CSV inventory writes every device on every page with its asset data. See Inventory in Files and templates.

Copy Mermaid

Export → Copy Mermaid puts the active page on the clipboard as a fenced ```mermaid block, ready to paste into a markdown article, a README, a wiki page or anywhere else mermaid renders — GitHub and GitLab render it in place.

This is a topology export, not a picture of your layout: mermaid has no coordinates, so its renderer arranges the graph itself. What travels is what is connected to what — every device with its label, zones (and racks) as titled subgraphs holding whatever stands on them, and every link with its caption, port names and speed as the link's text. Dashed link types (IPsec, WAN, Mgmt, Wireless) come out dotted and heavy ones (Trunk, LAG, Conduit) come out thick, so the line language survives in spirit. A wide drawing flows left-to-right, a tall one top-to-bottom.

Free text, callouts, the legend and map or Purdue backdrops are presentation rather than topology and are not included; a hidden layer stays hidden, as in every export. The snippet carries no colours on purpose — it adopts the theme of wherever you paste it. If you want the diagram exactly as drawn, use SVG or PNG; Copy Mermaid is for when the article should own the drawing.

Graphviz DOT, and Copy DOT

Export → Graphviz DOT writes the active page as a .dot file, and Export → Copy DOT puts exactly the same text on the clipboard. It is the way back out of the app for Diagrams from code: what leaves here is written in the same attribute profile the DOT import reads, so a drawing can go into a git repository, be reviewed as a diff, be edited or generated further by a script, and come back in through Import as a drawing. It is also ordinary Graphviz — dot -Tpng page.dot renders it in any Graphviz tool.

Unlike Copy Mermaid, this carries the layout too: every device writes its position and size in Graphviz's own pos=/width=/height= spelling, so importing your own export puts everything back exactly where it was — and a plain neato render shows your geometry, not a fresh one. What travels is most of the drawing:

Two things are rewritten on the way out, both because the DOT profile identifies a device by its name. Arrows are written downwards — the device drawn higher is at the tail — because that is how the import reads tiers when a file carries no positions, and connectors are drawn without arrowheads here anyway. And two devices sharing a name are numbered (Switch, Switch 2); leaving them identical would merge them into one tile on the way back in, and losing a device is worse than gaining a suffix.

The legend (derived and regenerable) and map backdrops stay home, and hidden layers stay hidden — a layer you turned off cannot leave the app. A cable drawn to a zone keeps the zone as a plain node rather than a box, because DOT cannot attach an edge to a cluster — the cable matters more than the frame, and the zone still returns as a zone.

Cable schedule CSV, and NetBox

Two more entries in the Export menu turn the cabling into a spreadsheet:

Two things about the NetBox file are deliberate. Its type column is a closed list, so Multimode (SR) becomes mmf, everything single-mode (LR, ER, BiDi, CWDM, DWDM) becomes smf, and AOC becomes aoc — but RJ45 and DAC are left blank, because NetBox wants to know which of cat5e/cat6/cat6a it is, and whether a DAC is passive or active, and the drawing does not say. A DCIM is a source of truth; a guessed value in one is worse than an empty cell somebody fills in.

And a cable terminates on an interface in NetBox, so a cable with no port name at one end will be rejected on import. The cable schedule panel tells you how many are in that state.