[[Obsidian]] put out their own barebones [[Whiteboarding App]]-like feature called "Canvas" a while back. In March 2024 they rebranded to "[JSON Canvas](https://jsoncanvas.org/)". The canvas feature is a nice addition to Obsidian, but it's also a bit of a bolt-on. In order to maintain [[Modularity]], canvases are integrated heavily with notes - but notes aren't really aware of canvases _at all_. For some use cases, canvases feel misaligned with Obsidian's [[Conceptual Integrity]].
## Design Ethos
Using canvas it feels like the developers set an incredibly high bar for adding features. [[YAGNI]]. They chose a very basic set of capabilities and, in so doing, made canvases and their file format) intentionally very simple.
This actually makes canvases quite *usable* on mobile. Unlike every other app in the [[Whiteboarding App]] space, canvas on mobile is not terrible to work with.
The things they decided *not* to do require **way** more code and UI/UX things to figure out. Examples:
- line routing → layout algorithms and waypoints
- arbitrary connection points → fiddly touch targets
- shape selection → modification of shapes
- Freeform writing → a whole different system for serializing the file type
## JSON Canvas
Canvas files are stored using a custom-build (but [[Open Source]]) file format "`.canvas`". It's simple [[JSON]], with a [[Graph Database]]-like structure. It's a map of `nodes` and `edges`, like most any [[Graph]]s.
## My first plugin
In March 2024 I published a plugin called “[Semantic Canvas](obsidian://show-plugin?id=semantic-canvas)” which makes Obsidian Canvases and Obsidian Note Properties aware of one-another. See my note about the [[Semantic Canvas]] plugin.
# Example `.canvas` File
```JSON
{
"nodes":[
{"id":"8edd2eb18bb22633","x":-725,"y":-460,"width":970,"height":1115,"color":"6","type":"group","label":"Embedding Scopes"},
{"id":"6f4485d073444120","type":"text","text":"# Test.","x":-125,"y":100,"width":250,"height":60},
{"id":"6ecb3caca2f6574f","x":-300,"y":-440,"width":400,"height":400,"type":"file","file":"Graphical Project Tracking.md"},
{"id":"630672e28940268f","x":-160,"y":365,"width":385,"height":270,"type":"file","file":"Graphical Project Tracking.md","subpath":"#^fa9d7d"},
{"id":"49cf666e52e28e24","type":"file","file":"Graphical Project Tracking.md","subpath":"#Tooling","x":-705,"y":230,"width":405,"height":200},
{"id":"68099e202ff80fcf","type":"text","text":"# Buffalo","x":345,"y":-240,"width":250,"height":60},
{"id":"774bb198ad025035","type":"file","file":"canvases/Exercise Canvas.canvas","x":395,"y":165,"width":400,"height":400},
{"id":"1a7ec32d55357ee4","type":"text","text":"# Canvas Recursion","x":395,"y":-65,"width":400,"height":70},
{"id":"282f505b11ff8cdc","type":"text","text":"### Search Target","x":470,"y":-440,"width":250,"height":60},
{"id":"e33af1bf78938351","x":795,"y":-295,"width":484,"height":171,"type":"text","text":"# A More Substantial Card\nContains some stuff under the header. Including:\n- [x] A completed task!"}
],
"edges":[
{"id":"9b8c442ebca200ed","fromNode":"1a7ec32d55357ee4","fromSide":"bottom","toNode":"774bb198ad025035","toSide":"top","label":"Works!"},
{"id":"0d86052150747f56","fromNode":"282f505b11ff8cdc","fromSide":"bottom","toNode":"68099e202ff80fcf","toSide":"top","label":"Sadly doesn't work"},
{"id":"9f19d3cd2e18fa5f","fromNode":"6f4485d073444120","fromSide":"top","toNode":"6ecb3caca2f6574f","toSide":"bottom","color":"3","label":"Embed to note"},
{"id":"0b38f06899b34ca9","fromNode":"6f4485d073444120","fromSide":"left","toNode":"49cf666e52e28e24","toSide":"top","color":"4","label":"Embed to Heading"},
{"id":"e0018e1d95a85f0a","fromNode":"6f4485d073444120","fromSide":"bottom","toNode":"630672e28940268f","toSide":"top","color":"5","label":"Embed to Block"}
]
}
```
# Canvas Pros & Cons
## Pros 💪
- Like everything in Obsidian - canvas is **fast**.
- You can embed items into your canvas that look and work just like notes
- You can pull content from your vault easily
- You can also "promote" parts of a canvas to full-blown standalone notes
- Support for link labels, groups, and coloring
- The [[Obsidian Canvas|JSON Canvas]] format makes a ton of sense and [[Semantic Canvas|it was easy to extend]]
- Everything you can do on Canvas actually works really well from the iPad
- File sizes are fairly small
## Cons 🫤
- Canvases are very much second-class citizens - and feel like it.
- ~~No support for backlinks~~ - **BACKLINKS ADDED FEB 2026**
- ~~Search doesn't cover anything in Canvases~~ - also **fixed** at some point
- There's no [[Frontmatter]] or properties support
- No publish - although [[Quartz Publishing]] supports it now!
- There's no support for freehand drawings or anything
- Everything is a rectangle. There's no support for even plain text elements outside the context of a card
- "Groups" in the `.canvas` format don't actually have any sort of _explicit_ membership in the data, it looks like it's merely graphical overlap
- this isn't much of a con, more like a design choice. I figured out how to make this work fine.
****
## Source
- Playing with it
- For longer now
## Related
- [[Obsidian]]
- [[Canvas Meta.canvas]]
- [[Diagram Types (index)]]