【English | 简体中文】
👉👉👉 Check out and contribute to the new Obsidian-Excalidraw Community Wiki
The Obsidian-Excalidraw plugin integrates Excalidraw, a feature rich sketching tool, into Obsidian. You can store and edit Excalidraw files in your vault, you can embed drawings into your documents, and you can link to documents and other drawings to/and from Excalidraw. For a showcase of Excalidraw features watch the videos below.
Excalidraw for Obsidian keeps evolving; it is extremely feature‑rich and can feel intimidating at first. The Video Walkthrough below should ease that initial overwhelm. For a comprehensive, searchable knowledge base covering features, settings, scripting, workflows, and visual thinking methods, explore the public NotebookLM workbook (a must‑have learning resource).
Excalidraw Essentials is a free course to get started with Excalidraw.
If you are curious about the Visual PKM philosophy behind the plugin, consider my book Sketch Your Mind and the Visual Thinking Workshops. To learn about all the different options available and how they fit together, check out the Welcome to the Sketch Your Mind Ecosystem introduction page. Finally, keep the Excalidraw Plugin Wiki and the NotebookLM workbook at hand, those are essential companions.
I treat privacy as a top priority. Apart from the few technical limitations outlined below, Excalidraw is 100% local and runs without network access. Most of the findings published on sites such as obsidianpluginaudit.com, plugin.observer, and community.obsidian.md/plugins can be misleading without proper context.
Obsidian is fundamentally a locally executed web application. Automated code scanners apply the same vulnerability rules used for public-facing websites, even though the risk model inside a local Obsidian vault is very different. For example, patterns such as innerHTML or outerHTML manipulation are considered problematic on public websites because they can expose visitors to malicious third-party content. In a local-first application such as Obsidian, these risks are significantly different in nature and impact.
Excalidraw for Obsidian is a large and feature-rich tool with many integrations and performance optimizations. Below, I explain how the most common findings reported by these scanners are actually used within the plugin.
When evaluating these findings, please keep the following in mind:
Obsidian.md currently does not provide plugin developers with proper mechanisms for deploying local assets such as fonts, auxiliary packages, or official APIs for certain features like Obsidian Publish or PDF generation. As a result, plugin developers sometimes need to rely on workaround solutions such as IPC calls or dynamic code execution (eval) to deliver functionality users expect.
Excalidraw for Obsidian is not maintained by a company or engineering team. It is a one-person hobby project and an open-source contribution developed alongside a full-time job. If you would like to support continued development and improved code quality, the best way is through financial support via Ko-fi. Open-source software is not truly “free.” The cost is usually paid in developer time, personal energy, or by supporters who help sustain the project. I will continue striving to improve the codebase, but expectations around enterprise-grade engineering standards for a free community contribution can easily become unrealistic and unsustainable without corresponding support structures.
In general, I recommend using the minimum number of plugins necessary for your workflow. Personally, I use around 10–15 plugins and disable plugins when not actively needed. This is not because I distrust plugin safety, but because most Obsidian plugins are hobby-driven community projects, and I believe users should maintain realistic expectations regarding maintenance, complexity, and long-term support.
ExcalidrawAutomate.printURLsInCodebase()cdn.ko-fi.com.The CJK font package exceeds 12 MB in size. To avoid significantly increasing plugin startup time and bundle size, these fonts are downloaded from GitHub only when required.
requestUrl and fetch calls:
requestUrl is used to retrieve those images when needed.The Excalidraw Script Library accesses GitHub to download scripts only when the user explicitly chooses to install them.
Excalidraw accesses files in your vault:
.excalidraw files and support conversion workflows.To populate file picker dialogs such as “Insert any file.”
Clipboard access:
Allows users to copy links to scene elements and paste them into markdown documents as embeds.
Local Storage:
Backup versions of drawings are stored locally to support crash recovery.
Dynamic Code Execution:
Excalidraw also dynamically loads parts of the Excalidraw React component and supporting packages. This improves startup performance and supports functionality such as desktop popout windows.
Electron remote module privilege IPC bridge calls:
The process also enables Electron’s native file-save dialog when exporting PDFs.
Document-level keyboard listener:
Comes from the core excalidraw.com component to support keyboard shortcuts and interactions.
Direct Node.js file system access allowing access outside the vault:
10 Part (slightly outdated) Video Walkthrough
Embedding stuff into Excalidraw
Markdown embeds advanced features
Link to Elements, Vertical text alignment, Markdown Styling
The Script Engine Store - Excalidraw Automation
Working with colors
$ claude mcp add obsidian-excalidraw-plugin \
-- python -m otcore.mcp_server <graph>