An opinionated diagramming tool for devs to sketch fast when a meeting suddenly needs a diagram
See the codeYou're in a meeting explaining a system. Someone needs to see it drawn.
So you start diagramming. Then you're adjusting connectors, moving things around, working out how to represent what you're talking about. Before long, you're spending more time making the diagram than explaining the idea.
Draft Canvas is built to reduce that friction.
It gives you architecture-aware shapes, familiar technical relationships, and small assists where they help: enough to spend less time wrestling with the diagram and more time explaining the system.
Try it → Nothing you draw leaves your browser. There's a landing page too, if you'd rather read about it first.
Also lives on your desktop, in a window of its own with your diagrams as files, and in Docker, on your own server.
Documentation: Getting started · All guides · Keyboard shortcuts · Saving and sharing · Contributing
Tab to accept a suggestion, ⌘K for everything else, ⌥O for an Outline a screen reader can follow.draftcanvas JSON, passphrase-encrypted .dcenc, PNG and SVG (which can carry the diagram inside), Mermaid and PlantUML sequence diagrams, and the architecture as a Mermaid flowchart, C4-PlantUML, Structurizr or draw.io — or copy any of them straight to the clipboardDiagrams live in one browser on one device. Export anything you'd mind losing.
One editor, two places to use it — the browser and the desktop — and a Docker image of the web app for your own server. All three share a version and ship together in each release.
| Runs on | Saves to | Status | |
|---|---|---|---|
| Web app | A modern browser | The browser (IndexedDB) | Stable |
| Docker | Your own server, behind HTTPS | The visitor's browser, as above | Stable |
| Desktop | macOS (Apple Silicon, Intel), Windows x64 | .draftcanvas files and folders | Stable, with unsigned installers; desktop-v…-alpha/-beta tags are previews that never replace a stable install |
There's no Linux desktop build. Nothing is synced between them; a .draftcanvas file is how a
diagram moves. Ideas and planned work are in Issues.
The quickest way is the hosted app. Press New canvas, then S to drop a service under your cursor. Getting started takes you from there to a presented, exported diagram.
Or run it from source:
git clone https://github.com/acltabontabon/draft-canvas.git
cd draft-canvas
npm install
npm run dev # http://localhost:5180
The extension that opened .draftcanvas files in a VS Code tab is retired; 0.2.0 is its last release
and only says so. Your files are plain JSON and open as they are in the desktop app or,
through Import, in the web app. How to move a diagram.
The same editor in a window of its own: a click away in your menu bar or system tray, with your diagrams
as ordinary .draftcanvas files on disk — one file per diagram, folders of them as projects, no account
and no server.
Download it from Releases — a .dmg for
macOS (Apple Silicon or Intel) or an installer for Windows (x64). The installers aren't signed yet, so the OS will warn
the first time; the Desktop guide says what to do about that, and covers everything
else it can do.
The same static app as the hosted version, served by nginx. No backend, nothing to configure.
docker run -d --name draft-canvas -p 8080:8080 acltabontabon/draft-canvas
Then open http://localhost:8080. latest follows stable releases; pin a
version tag (X.Y.Z, or X.Y for its
patches) to stay put.
Serving it to other machines? Put it behind HTTPS if you want the offline cache: browsers install a
service worker only on HTTPS or localhost. Saving works either way.
⌥O opens
the Outline, the current view as a navigable tree beside the canvas, kept in step with the
selection both ways.⌥+arrows move the
selection between shapes and along connectors, ⌘K names every action, Shift+F10 opens the
context menu, ? lists the rest. See Keyboard shortcuts and the command palette.tests/theme-contrast.test.ts computes it from the colour tokens), and small chrome text 4.5:1.e2e/a11y.spec.ts runs axe over the Library,
the editor, the export dialog, the command palette and the Outline, and fails on any serious or
critical violation.On a typical architecture diagram (~90 nodes — services, databases, queues, boundaries), Draft Canvas loads in about 429 ms and settles at about 17 MiB of memory. A larger, more detailed diagram (~225 nodes) loads in about 502 ms and uses about 33 MiB.
| Diagram | Size | Load time | Memory (JS heap) |
|---|---|---|---|
| Typical | 90 nodes / 73 connections | 429 ms | 17 MiB |
| Large | 225 nodes / 182 connections | 502 ms | 33 MiB |
Measured on: Apple M2 Pro, macOS 27.0.0, Chromium 153.0.8010.12, Draft Canvas 1.12.0. Reference-machine numbers on real architecture diagrams, not a guarantee for every device.
Frame times while you pan, zoom and drag in diagrams of up to 1,000 shapes, how long big diagrams take to open, and how to reproduce all of it: docs/reference/performance.md.
Draft Canvas is small and opinionated. CONTRIBUTING.md covers setup, a map of
the repository, the checks to run for each part of it, and what kinds of change fit;
docs/reference/architecture.md explains why it is built the way it
is. Found a bug or have an idea? Open an issue.
Security concerns go privately, as SECURITY.md describes. Release notes:
CHANGELOG.md.
Draft Canvas is licensed under Apache 2.0.
TypeScript
84.3%
Rust
7.8%
CSS
5.1%
JavaScript
1.6%
HTML
1.1%
An opinionated diagramming tool for devs to sketch fast when a meeting suddenly needs a diagram
See the codeYou're in a meeting explaining a system. Someone needs to see it drawn.
So you start diagramming. Then you're adjusting connectors, moving things around, working out how to represent what you're talking about. Before long, you're spending more time making the diagram than explaining the idea.
Draft Canvas is built to reduce that friction.
It gives you architecture-aware shapes, familiar technical relationships, and small assists where they help: enough to spend less time wrestling with the diagram and more time explaining the system.
Try it → Nothing you draw leaves your browser. There's a landing page too, if you'd rather read about it first.
Also lives on your desktop, in a window of its own with your diagrams as files, and in Docker, on your own server.
Documentation: Getting started · All guides · Keyboard shortcuts · Saving and sharing · Contributing
Tab to accept a suggestion, ⌘K for everything else, ⌥O for an Outline a screen reader can follow.draftcanvas JSON, passphrase-encrypted .dcenc, PNG and SVG (which can carry the diagram inside), Mermaid and PlantUML sequence diagrams, and the architecture as a Mermaid flowchart, C4-PlantUML, Structurizr or draw.io — or copy any of them straight to the clipboardDiagrams live in one browser on one device. Export anything you'd mind losing.
One editor, two places to use it — the browser and the desktop — and a Docker image of the web app for your own server. All three share a version and ship together in each release.
| Runs on | Saves to | Status | |
|---|---|---|---|
| Web app | A modern browser | The browser (IndexedDB) | Stable |
| Docker | Your own server, behind HTTPS | The visitor's browser, as above | Stable |
| Desktop | macOS (Apple Silicon, Intel), Windows x64 | .draftcanvas files and folders | Stable, with unsigned installers; desktop-v…-alpha/-beta tags are previews that never replace a stable install |
There's no Linux desktop build. Nothing is synced between them; a .draftcanvas file is how a
diagram moves. Ideas and planned work are in Issues.
The quickest way is the hosted app. Press New canvas, then S to drop a service under your cursor. Getting started takes you from there to a presented, exported diagram.
Or run it from source:
git clone https://github.com/acltabontabon/draft-canvas.git
cd draft-canvas
npm install
npm run dev # http://localhost:5180
The extension that opened .draftcanvas files in a VS Code tab is retired; 0.2.0 is its last release
and only says so. Your files are plain JSON and open as they are in the desktop app or,
through Import, in the web app. How to move a diagram.
The same editor in a window of its own: a click away in your menu bar or system tray, with your diagrams
as ordinary .draftcanvas files on disk — one file per diagram, folders of them as projects, no account
and no server.
Download it from Releases — a .dmg for
macOS (Apple Silicon or Intel) or an installer for Windows (x64). The installers aren't signed yet, so the OS will warn
the first time; the Desktop guide says what to do about that, and covers everything
else it can do.
The same static app as the hosted version, served by nginx. No backend, nothing to configure.
docker run -d --name draft-canvas -p 8080:8080 acltabontabon/draft-canvas
Then open http://localhost:8080. latest follows stable releases; pin a
version tag (X.Y.Z, or X.Y for its
patches) to stay put.
Serving it to other machines? Put it behind HTTPS if you want the offline cache: browsers install a
service worker only on HTTPS or localhost. Saving works either way.
⌥O opens
the Outline, the current view as a navigable tree beside the canvas, kept in step with the
selection both ways.⌥+arrows move the
selection between shapes and along connectors, ⌘K names every action, Shift+F10 opens the
context menu, ? lists the rest. See Keyboard shortcuts and the command palette.tests/theme-contrast.test.ts computes it from the colour tokens), and small chrome text 4.5:1.e2e/a11y.spec.ts runs axe over the Library,
the editor, the export dialog, the command palette and the Outline, and fails on any serious or
critical violation.On a typical architecture diagram (~90 nodes — services, databases, queues, boundaries), Draft Canvas loads in about 429 ms and settles at about 17 MiB of memory. A larger, more detailed diagram (~225 nodes) loads in about 502 ms and uses about 33 MiB.
| Diagram | Size | Load time | Memory (JS heap) |
|---|---|---|---|
| Typical | 90 nodes / 73 connections | 429 ms | 17 MiB |
| Large | 225 nodes / 182 connections | 502 ms | 33 MiB |
Measured on: Apple M2 Pro, macOS 27.0.0, Chromium 153.0.8010.12, Draft Canvas 1.12.0. Reference-machine numbers on real architecture diagrams, not a guarantee for every device.
Frame times while you pan, zoom and drag in diagrams of up to 1,000 shapes, how long big diagrams take to open, and how to reproduce all of it: docs/reference/performance.md.
Draft Canvas is small and opinionated. CONTRIBUTING.md covers setup, a map of
the repository, the checks to run for each part of it, and what kinds of change fit;
docs/reference/architecture.md explains why it is built the way it
is. Found a bug or have an idea? Open an issue.
Security concerns go privately, as SECURITY.md describes. Release notes:
CHANGELOG.md.
Draft Canvas is licensed under Apache 2.0.
TypeScript
84.3%
Rust
7.8%
CSS
5.1%
JavaScript
1.6%
HTML
1.1%