Draft Canvas Open editor
Saving, backing up and sharingAll docs

Saving, backing up and sharing

Draft Canvas saves your work in your browser as you draw. It does not save it anywhere else. This guide separates what happens on its own from what you have to do, because the second list is what protects you from losing a diagram.

On the desktop? The file is the storage there, and none of this applies. See Draft Canvas Desktop.

What happens on its own#

What you have to do#

If the browser blocks storage altogether (some private modes and embedded browsers), the status bar reads In memory only and a message explains it. Work in that state disappears when the tab closes, so export before you leave.

Reopening a diagram#

The Library is the list of everything saved in this browser. Click a diagram to open it. Search diagrams… (press / to jump to it) finds diagrams by title or project name, not by what is drawn in them.

The Library: a search box, Import and New canvas buttons, a sidebar with Recently edited, All diagrams, Unorganized and Projects, and two saved diagrams with thumbnails. The footer reads "Stored on this device — nothing you draw leaves it".

The Library also lets you rename, duplicate, delete, and move a diagram into a project. Projects are flat folders for your own tidiness; a diagram is in at most one, and deleting a project moves its diagrams back to Unorganized rather than deleting them.

Export a file#

Open Export (⌘⇧E, or Ctrl+Shift+E; ⌘E also works), or run Export… from the command palette. The dialog has four modes (Document comes in two kinds):

Mode You get Good for
Document → Editable .draftcanvas: plain, diffable JSON Backups, moving diagrams, keeping one in a repository
Document → Encrypted .dcenc: locked with a passphrase Sending a diagram somewhere you don't control
Image PNG or SVG, optionally with the diagram inside Slides, docs, chat
Source Mermaid or PlantUML sequence diagram from a flow; or the architecture as a Mermaid flowchart, C4-PlantUML, Structurizr DSL or a .drawio file Docs that already render those, and other diagram tools

The Export dialog with Document selected.

Notes on each:

Files are named from the diagram's title: Payment Service! becomes payment-service.png. Exporting happens in your browser; the file goes to your browser's normal download flow and nothing is uploaded.

Copy instead of download#

Every image and source export can go to the clipboard rather than a file: Copy sits beside the export button in the dialog, and the command palette has Copy as image (a PNG, for chat and slides), Copy as SVG (the markup as text, for a README or an editor) and Copy source as… (any of the source formats). Where the browser can't put an image on the clipboard — Firefox, or a page not served over HTTPS — the file is downloaded instead and the notice says so.

Editable images#

An SVG or PNG can carry the whole diagram inside it: tick Editable — carries the diagram inside on the Image panel (on by default for SVG, off for PNG; the dialog remembers each). The picture is the same picture to every viewer — the .draftcanvas text sits in an SVG <metadata> element or a PNG text chunk that image viewers ignore — and importing that file into Draft Canvas reopens it as a diagram, every room included. Anyone who has the image has the diagram, so treat an editable image like a .draftcanvas file rather than a screenshot. The background image doesn't travel in an editable image.

Import a file#

In the Library, choose Import and pick a .draftcanvas, .json or .dcenc file — or a Mermaid flowchart (.mmd, .mermaid, or a .md with a ```mermaid block; see Importing a Mermaid flowchart). (On a first run, the button is Import .draftcanvas.) Dropping a file onto the Library, or onto an open canvas, imports it the same way.

Repairs, limits and compatibility#

Draft Canvas repairs rather than refuses. A file with a few broken connectors opens with the rest intact, and a message lists what was dropped, for example Imported with repairs: Dropped 3 connector(s) pointing at nodes that do not exist. Content past the size limits (5,000 shapes, 10,000 connectors, 50 flows, 3 levels of nesting inside shapes) is trimmed the same way, and files over 24 MB are refused.

Files carry a format version. The rules are:

The full contract is in the schema reference.

Importing a Mermaid flowchart#

A Mermaid flowchart or graph becomes an editable diagram: pick the file in the Library's Import, drop it onto the Library or a canvas, or paste the text (⌘V / Ctrl+V) onto an open canvas. A file opens as a new diagram named after the file (a title: line in Mermaid front matter wins). Pasted or dropped text lands in the diagram you are editing, beside what is already drawn, selected, as one step — ⌘Z removes all of it. Draft Canvas lays the result out itself; the positions Mermaid would have chosen are not part of the text.

What maps:

Mermaid Draft Canvas
[text], (text), ([text]), >text], [/text/], [\text\] and the trapezoids Service
[(text)] cylinder Data Store
[[text]] subroutine Queue
((text)), (((text))) circle Person (an actor)
{text}, {{text}} decision Junction, carrying the text
-->, ==>, and their longer spellings Connector
--- (no head) Undirected connector
-.-> dotted Asynchronous connector
-->|label|, -- label -->, -. label .->, == label ==> Connector label
A --> B --> C, A & B --> C Each arrow in the chain or fan
subgraph id [Title] … end, nested Boundary, nested
TD/TB and LR The reading direction of the layout
"quoted" labels, <br> line breaks, #quot;-style entities The text, as Mermaid shows it
%% comments, a ```mermaid fence in Markdown Ignored and unwrapped

What is skipped is named in one message before the diagram opens (Imported — 3 things Mermaid said that Draft Canvas doesn't draw: classDef, style, click): classDef, class, :::class, style, linkStyle, click, accTitle/accDescr, direction inside a subgraph, @{ shape: … } node syntax (drawn as a plain shape), invisible ~~~ links, arrows to or from a subgraph itself, circle and cross arrowheads (drawn as plain arrows), two-headed arrows (drawn one way), RL and BT (drawn left to right and top to bottom), and HTML inside labels (the tags are removed). Other Mermaid diagram kinds (sequenceDiagram, classDiagram, …) are refused with a message naming the kind.

A flowchart is one import's worth of work: up to 300 shapes, 600 arrows and 60 subgraphs, labels up to 120 characters (80 on arrows and subgraphs; longer ones are shortened), and text up to 512 KB. Past any of these the import is refused with the limit it hit, so a hostile file is never laid out.

Share a diagram#

There are no accounts and no server, so sharing means handing someone the diagram itself. Pick whichever of these fits:

If something looks wrong#