Are you just getting started with Obsidian? If so, our Obsidian Essentials e-book can help you get off the ground running. Want to be involved? You can even suggest content if you're interested in learning a specific topic. Find out more here.

With version 1.1, Obsidian released it's Canvas product to the masses. Until recently I hadn't found a reason to use it, but I thought that it might be a useful tool for visualizing and sharing the individual stages of the product development cycle and recently gave it a go.

Here's what that might look like:

A very rough draft at a first attempt at visualizing the product development cycle in Obsidian Canvas.
Note: Everyone's approach to product is different. Below is just an example of what you can do. If you have ideas on how to take this a step further, or just want to share (or show off) your own workflow, be sure to reach out.

These colorful boxes mean something, I promise! Let's get into what you might want to include.

User Stories

My product workflow often begins with grouping feedback from users. Typically, I'll house everything under one note, and then break it out based on the strength of their corresponding value propositions, with a rough estimate of the amount of users who would benefit from its development. With that in mind, I'll create a Kanban and nest the stories under the following categories:

  • Must Haves
  • Nice to Haves
  • Out of Scope
Note that both the user stories and the Kanban are separate notes. Because Kanban is not natively supported in Canvas, it'll be displayed as a Markdown file, but this actually works in our favor, because you might want to create notes from these user stories and add those to the Canvas, especially if the user stories are somewhat large and require more detail.

I then link each story to its own separate note, so that in Canvas you'll end up with something similar to this (only two are linked here):

Kanban in Markdown, with some "Needs" broken out into separate notes.

The benefit of taking the time to create these individual notes is that you can always refer back to them when pruning your backlog. In my opinion, capturing that in-the-moment context is crucial to later product iterations and avoids additional touch points.


You can add anything you want in terms of documentation to your Canvas, but for example's sake I've included some hybrid version of a traditional PRD (Product Requirements Document) and a separate note that contains information about product feasibility and technical limitations. The latter could also be in the PRD, but sometimes it's nice to keep things separated based on their function.

If your documentation is large, you might want to display each header as a separate element of the canvas. With the Narrow to Section feature, this is pretty straightforward (and awesome):

  1. Drag your PRD note into the Canvas as many times as there are headers.
  2. For each one, right click the element and select "Narrow to Section".
  3. Choose the header you want displayed.

What you should see afterwards is the following:

The individual elements of the PRD are now cleanly separated for better visibility. No scrolling required.

Code Blocks

Functionally, Code Blocks operate the same way as any other type of element. If you're writing or maintaining technical documentation during development, you can use the same Narrow to Section to display code snippets in Canvas from those notes.

I would also recommend downloading the Editor Syntax Highlight plugin available on Github so that your snippet styling is based on the language used.

Of course, you might argue that this is completely pointless to showcase, but if you're a TPM then this might be somewhat useful for breaking out and visualizing the work in chunks.

JavaScript code in Canvas with syntax highlighting.

Using Excalidraw

Excalidraw is a fantastic, light-weight sketching platform. Like any sketching tool, it's a great way to convey user stories, ideas, and models. I've had a good amount of success using sketches during the development of the product spec, and it has reduced a good amount of unnecessary back and forth when it comes to product implementation and, potentially, QA.

Excalidraw is available as a web app but it is also available as an Obsidian plugin. The latter enables a more efficient workflow as the former involves creating and saving individual files and manually adding those as embedded images to your Obsidian Vault. The plugin allows you to create .excalidraw files directly in Obsidian, and any changes made are both saved automatically, and reflected in Canvas, should they be added in.

For example, you may want to pair a user story from before and link it to something you sketched out in Excalidraw. You can of course use images as well to convey something similar.

An example of using Excalidraw in Canvas in conjunction with user stories.

Personally, I'm hoping that Canvas builds Excalidraw tooling directly into Canvas so it's one less plugin I have to worry about, but it works well enough for now. For larger products or more involved user stories, Excalidraw has been invaluable in getting my point across.


Putting all of these elements together makes for a great springboard for product ideation and an extremely clean method to visualize the product development cycle. I also hope that it's inspiring, in a way. There are many usecases for a tool like Canvas, and this is only one of them, but considering this is basically Version 1.0, I'm quite excited to see where the Obsidian team takes Canvas in 2023.

Final Note: You can export segments of your Canvas as images natively within Canvas by using the Export as Image option. I've used the Privacy Mode option a few times in this article which is useful if you want to mask any content within an element.

Additional tips for Canvas can be viewed on the Canvas landing page.
The link has been copied!