Canvas
Canvas is an infinite board for thinking spatially: lay out notes, images, and free-floating text cards, then connect them with labeled arrows. Each canvas is a plain .canvas file in the open JSON Canvas format, saved right in your vault.
Creating a canvas
- Run Canvas: Create new canvas from the command palette.
- Right-click a folder in the File explorer and choose New canvas.
- Click the Create new canvas icon in the ribbon.
Canvases are ordinary vault files, so they are indexed, searchable, linkable, and can even be embedded in a note with ![[My board.canvas]].
The four kinds of card
| Card | What it is | How to add it |
|---|---|---|
| Text card | Free Markdown that lives only on the canvas | Double-click empty canvas |
| File card | A live view of a vault file: a note, image, audio, video or PDF | Drag a note in from the File explorer |
| Web card | An embedded web page | Right-click, Add web page, paste a URL |
| Group | A labeled container that moves its contents together | Select cards, right-click, Create group |
- Text cards render Markdown fully, including links and embeds.
- Double-click a text card to edit it in place; press Escape to stop. A file card opens its underlying note when double-clicked.
- Dragging a folder in adds a card for each file inside it.
- Text-only cards do not create backlinks or graph edges until you convert them to files.
Connections
Hover a card's edge until a connection point appears, then drag to another card to draw an edge. Edges can carry:
- Direction: an arrowhead at either end, both, or none. By default the arrow points at the target.
- A label: double-click the line and type.
- A color, from the same palette as cards.
Drag an endpoint off a card to disconnect it, or onto a different card to reattach. Dragging a new edge into empty space creates a fresh card at the loose end, a fast way to grow a diagram outward.
Colors
Select any card, group or edge and choose Set color from the floating toolbar: six presets (red, orange, yellow, green, cyan, purple) plus a custom picker for any hex color.
Canvas shortcuts
| Action | Input |
|---|---|
| Select | Click; drag a box over empty canvas for marquee; Shift + click to add or remove |
| Select all | Ctrl A |
| Move / constrain to axis | Drag / Shift + drag |
| Duplicate | Alt + drag |
| Resize / keep aspect ratio | Drag an edge or corner / Shift + drag |
| Disable snapping | Hold Space while dragging |
| Pan | Space + drag, middle-mouse drag, or scroll (Shift + scroll for horizontal) |
| Zoom | Ctrl + scroll |
| Zoom to fit everything | Shift 1 |
| Zoom to selection | Shift 2 |
| Delete | Backspace or Delete |
The ? icon in the corner of any canvas shows this list in the app.
The .canvas format
A canvas file is plain, diff-friendly JSON following the open JSON Canvas specification: a nodes array and an edges array.
{
"nodes": [
{ "id": "a1", "type": "text", "x": -260, "y": -120,
"width": 250, "height": 120, "color": "4",
"text": "# Project idea\nSpatial notes with **Canvas**." },
{ "id": "b2", "type": "file", "x": 120, "y": -120,
"width": 400, "height": 300, "file": "Notes/Research.md" }
],
"edges": [
{ "id": "e1", "fromNode": "a1", "fromSide": "right",
"toNode": "b2", "toSide": "left", "label": "supports" }
]
}
Fable reads and writes JSON Canvas 1.0 exactly, preserving fields it does not recognize. A canvas made in Obsidian opens in Fable and vice versa. The full schema is in the file format reference.