The Excalidraw plugin integrates the Excalidraw sketching tool into Obsidian, allowing users to create and manage visual diagrams directly within their vault. It enables seamless embedding of drawings into markdown documents and supports linking between drawings and notes. The plugin offers extensive customization options, including templates, export settings, and compatibility features for working across different platforms. Users can enhance their workflow with features like LaTeX support, markdown embedding, and a script engine for automation. Excalidraw drawings can be annotated, linked, and previewed within Obsidian, providing a powerful tool for visual thinkers and content creators.
- Emerson DelatorreReviewed on Dec 24th, 2025★★★★★No review text provided.
New
- 🚀🎉🍾 Added inline link autocomplete to text element editing and element link editing. Simply start typing "[[" as you would in a normal markdown document.
- ‼️ removed add link button element-link editor on desktop
- ‼️ removed add link from context menu on desktop
- ‼️ added new setting under "Links, transclusion and TODOs" Sync text-element link with text
- The default behavior is OFF, because it feels more natural to manage the element link separately.
- When enabled (ON), Excalidraw matches pre-2.19.0 behavior: the first link in the text body is always copied to the element link field. SVG/PNG exports only keep links when the element link field holds a single link (not links inside the text body). Turn this ON if you rely on text-body links and want the element link to always mirror the first one. Turn it OFF if you manage the element link separately: for metadata like tags, inline link ontologies, or multiple links, e.g., dataview-style notes like '(reminds me of:: [[link]]) #noteToSelf'.
- LaTeX formula is saved to
element.customData.latex. This can be helpful for various automation use cases. - Implemented Color Picker in Custom Pen Settings to pick from the current view's color palette.
- Updated the Scribble Helper script with the new Color Picker to select the text color.
- Updated the Shade Maser script with the new Color Picker to select the shading color.
- Mindmap Builder
- Uses new sidepanel, persistent across different drawings and autostarts with Obsidian.
- You can now configure hotkeys
- Allows editing node text in place
- You can define your own color palette for branches
- Improved auto-layout algorithm to work better with larger subtrees
- Includes inline link suggester
- Image and Embeddable nodes
Fixed
- Floating modal used by Excalidraw scripts did not work correctly in Obisidian popout windows.
- In onPaste if
imageElement.customData.latexis present, it will treat the pasted images as a LaTeX formula, even if copied from Excalidraw.com or another Obsidian Vault.
New & fixed in ExcalidrawAutomate
ea.toClipboard()will now include the DataURL for included images fromea.imagesDict- Implemented Excalidraw Sidepanel API for ExcalidrawAutomate. Scripts can now create custom Obsidian sidepanel tabs in the Excalidraw Sidepanel.
- New Command Palette action: "Open Excalidraw Sidepanel" will toggle the sidepanel visibility.
- The demo script making full use of the new sidepanel API is Mindmap Builder.
- ExcalidrawAutomate full library for LLM training.md includes all necessary training information to use sidepanels.
- Added palette popover helper
showColorPicker()(also used in Pen Settings and Mindmap Builder) to pick from the current view's canvas/element palettes. - Added inline link suggester helper
attachInlineLinkSuggester()returning a KeyBlocker interface so host scripts can suppress their own keydown handlers while the suggester is active.
New functions in ExcalidrawAutomate. See also SidepanelTab type definition.
sidepanelTab: ExcalidrawSidepanelTab | null;
checkForActiveSidepanelTabForScript(scriptName?: string): ExcalidrawSidepanelTab | null;
createSidepanelTab(title: string, persist?: boolean, reveal?: boolean): Promise<ExcalidrawSidepanelTab | null>;
getSidepanelLeaf(): WorkspaceLeaf | null;
toggleSidepanelView(): void;
persistSidepanelTab(): ExcalidrawSidepanelTab | null;
attachInlineLinkSuggester(inputEl: HTMLInputElement, widthWrapper?: HTMLElement): KeyBlocker;
getViewColorPalette(palette: "canvasBackground"|"elementBackground"|"elementStroke"): (string[] | string)[];
showColorPicker(anchorElement: HTMLElement, palette: "canvasBackground"|"elementBackground"|"elementStroke", includeSceneColors: boolean = true): Promise<string | null>;
- setView() improvements
- Calling
setView()now picks a sensible target automatically: - It prefers the currently active Excalidraw view.
- If no active Excalidraw view is found (e.g., the user is focused on a different tab like the File Explorer/sidebar), it will fall back to the last active Excalidraw view (as long as it is still available) — typically the drawing the user came from.
- New selector:
"auto"(equivalent to callingsetView()). - Useful when you also want to reveal/focus the view:
setView("auto", true). - Deprecated selectors:
"active"and"first"are deprecated and kept only for backward compatibility. - Recommended usage is either
setView(),setView("auto"), orsetView(excalidrawView)(explicitly target a specific view).
- Calling
setView(view?: ExcalidrawView | "auto" | "first" | "active" | null, show: boolean = false)