Infinite canvas
The canvas never fills up. Draw wherever you're thinking, and zoom to 10% to take in the whole thing at once.
Flowcharts, wireframes, mind maps, code, documents and images. Draw them, import them and keep editing them on one infinite canvas.
Shapes
Sketches, formal flowcharts, interface wireframes and mind maps use the same tools on the same sheet. Draw at whatever level the idea is at. You don't have to decide what kind of file this is first.
The canvas never fills up. Draw wherever you're thinking, and zoom to 10% to take in the whole thing at once.
Pick a shape and start connecting; the arrows route themselves. When the layout drifts, one click rearranges it.
Navigation bars, forms, cards and modals come ready-made. Drag them out and you have a screen you can walk someone through.
Twelve layouts, eight palettes. Drag one node and the whole tree re-flows. Collapsing, notes, boundaries and relationship lines are all there.
Rows, columns and responsibility lanes keep themselves aligned. Adding one row won't skew the whole diagram.
A sketchy line invites comments. When it's time to hand something over, one switch makes every stroke crisp.
Import and convert
Mermaid from your docs, PlantUML from your repo, a mind map exported from somewhere else: paste it in and it becomes canvas elements.
graph LR
A[Order] --> B{In stock?}
B -->|yes| C[Ship]
B -->|no| D[Restock]
What lands on the right are elements, not a picture. Drag a node away, reword a label, change the palette, and keep drawing.
Documents and code
Drop in a PDF, a contract, a spreadsheet or a piece of code. They aren't attachments waiting to be downloaded. They're content you page through and read right where you are.
Syntax highlighting follows the language. Write web code and the canvas shows you what it renders.
Page through it, or spread it out to compare. The original file stays inside the element and travels with the canvas when you share it.
Image editing
A pasted screenshot usually needs one more pass. Crop what's extra, cover what's sensitive, merge a few into one, all on the canvas, without bouncing out to an image editor.
Large-canvas performance
Canvases get heavy with use. That's the real problem behind every whiteboard. We treat it as a test that can fail: every change drags and zooms ten thousand elements in a real browser, and a regression blocks the release.
| Scenario | Measured | What it means |
|---|---|---|
| Dragging with 10,000 elements on screen | 9.5 ms | Frame time, p95. The 60fps budget is 16.7 ms, so half of it is still free. |
| Frames dropped while dragging | 0.23 % | Share of frames over the 60fps budget: about two in a thousand. |
| Zooming out to 10% | 5 ms | From wheel input to the screen responding, p95. |
| Twenty 4K images | ↓ 70 % | What tiered previews save over full-size decoding, with the cache held under 192 MiB. |
Measured on Chromium 150 and an Apple M1 Max through the real Canvas2D path, with 10,000 elements all inside the first screen and frame intervals taken from the performance.now() wall clock. The benchmark scripts and past results are in the open-source repository.