Draft Canvas Open editor
Saving and sharingAll docs

Saving, backing up and sharing

Draft Canvas saves diagrams in your browser as you draw. 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#

Import and Export#

Use Import on Home or in the Library to open a portable file. Use Export → Document → Editable to download a .draftcanvas copy you can reopen, move to another device, or commit to a repository. An export is a snapshot: export again to keep a new file copy of later edits. Browser autosave keeps your local diagram up to date while you work.

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#

Choose View all on Home to open the Library gallery, 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. Home returns to the starting scene.

The Library gallery: a New canvas button, search and project navigation above two diagram preview cards.

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#

Choose where a shared explanation begins#

Open Share from here… in the command palette, or use the share controls in Export's document view. Start at offers Diagram overview, Current level, and playable flows labelled with their location. It defaults to the selected playable flow, then the current nested level, then the overview. The quick Copy share link command always starts at the overview.

A flow link opens read-only at its introduction; the reader advances it themselves. They may explore or make an editable copy. The starting point changes where reading begins, not what is shared: the link still contains the whole document. Old links work as before. An unavailable level or flow falls back to the overview with a notice. The starting metadata counts toward the link-size limit.

Checking backups and reporting a failure#

The Library reminds you when your last backup is missing or over a week old, including when the browser has granted persistent storage. A partial backup keeps readable diagrams but says how many could not be read; it does not count as a complete backup. Keep an earlier backup until the problem is resolved. Browser persistence does not protect against clearing site data or losing the device.

For a problem report, open More → Diagnostic report… in the web editor, or Settings → Support on desktop. Review the displayed JSON and choose Download report. It includes recent failure categories and versions, excluding diagram content and file paths. It is never sent automatically. Saving and recovery limits are explained in reliability.