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

CardWhat it isHow to add it
Text cardFree Markdown that lives only on the canvasDouble-click empty canvas
File cardA live view of a vault file: a note, image, audio, video or PDFDrag a note in from the File explorer
Web cardAn embedded web pageRight-click, Add web page, paste a URL
GroupA labeled container that moves its contents togetherSelect 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

ActionInput
SelectClick; drag a box over empty canvas for marquee; Shift + click to add or remove
Select allCtrl A
Move / constrain to axisDrag / Shift + drag
DuplicateAlt + drag
Resize / keep aspect ratioDrag an edge or corner / Shift + drag
Disable snappingHold Space while dragging
PanSpace + drag, middle-mouse drag, or scroll (Shift + scroll for horizontal)
ZoomCtrl + scroll
Zoom to fit everythingShift 1
Zoom to selectionShift 2
DeleteBackspace 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" }
  ]
}
Fully compatible

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.