BUG: Embedded images are not rendered when a drawing is opened into an existing Excalidraw view (opening the same file in a new tab works)

Author: Friendship7Created Sep 12, 2026Updated Sep 16, 2026

Have you searched for existing issues (including closed ones)?

  • Yes, I have searched the existing issues.

Does this bug persist in a new vault with only Excalidraw installed?

  • Yes, I have verified the issue persists.

Your environment

SYSTEM INFO: Obsidian version: 1.13.7 Installer version: 1.13.6 Operating system: Windows 11 Pro 10.0.26200 Login status: not logged in Language: en Insider build toggle: off Live preview: off Base theme: adapt to system Community theme: Vicious 1.1.3 Snippets enabled: 1 Restricted mode: off Plugins installed: 17 Plugins enabled: 14 1: Excalidraw v2.27.3 2: Dataview v0.5.68 3: Highlightr v1.2.2 4: Importer v1.8.12 5: Ink v0.3.4 6: Slash Commander v0.4.1 7: Editing Toolbar v4.0.11 8: Templater v2.24.3 9: Featured Image v1.2.8 10: Code Styler v1.1.7 11: QuickAdd v2.21.0 12: TaskNotes v4.11.1 13: Notebook Navigator v3.3.2 14: Image Toolkit v1.4.3

Your NotebookLM query

No response

Describe the bug

When a .excalidraw.md file is opened into a tab that is already showing another Excalidraw drawing, the scene loads but every embedded image renders as an empty placeholder. The drawing's own elements (shapes, text, arrows) render normally — only the images are missing.

Opening the same file in a new tab renders all images correctly.

The image data is still present in the file. This appears to be tied to the lifetime of the Excalidraw view: images seem to be loaded when the view is created and not again when a different file is opened into that same view.

What I ruled out:

  • Not a plugin conflict. Reproduces with Excalidraw as the only enabled community plugin (all 14 others disabled, Obsidian restarted).
  • Not the image cache. Reproduces with allowImageCache: false and allowImageCacheInScene: false; "Purge Cache" doesn't change it.
  • Not a plugin version. Identical on three releases spanning a month.
  • Not the files. Freshly restored copies behave the same, and the first opened per session renders perfectly.
  • Not platform-specific. Windows desktop and Android.
  • Not the storage format. Seen both with inline files and with ## Embedded Files pointing at vault PNGs.

The image data is still in the file

const LZString = require('lz-string');
const txt = require('fs').readFileSync('drawing.excalidraw.md', 'utf8');
const json = txt.match(/```compressed-json\n([\s\S]*?)\n```/)[1].replace(/\n/g, '');
const scene = JSON.parse(LZString.decompressFromBase64(json));

console.log('image elements:', scene.elements.filter(e => e.type === 'image').length);
console.log('files entries :', Object.keys(scene.files ?? {}).length);

For an affected drawing this prints matching non-zero counts — the scene is complete, it simply isn't displayed.

Steps to reproduce

  1. Have two .excalidraw.md drawings containing embedded images — A and B.
  2. Start Obsidian. Open A. Images render correctly. (see attached Image 1)
  3. From the file explorer, click B so it opens in the same tab (replacing A).
  4. B renders with all images blank. (see attached Image 2)
  5. Switch back to A's tab — A still renders correctly.
  6. Ctrl/Cmd+click or middle-click B to open it in a new tab — B renders correctly. (see attached Image 3)

Only the first drawing opened per tab shows its images.

Image 1Image 2Image 3

Expected behavior

a drawing opened into an existing Excalidraw view renders its embedded images, as it does in a new tab..

Additional context

Workaround: always open drawings in a new tab.

This also affects plugins that open a drawing programmatically: workspace.getLeaf().openFile(...) reuses the active leaf and shows no images, whereas workspace.getLeaf('tab').openFile(...) renders correctly.

Source: zsviczian/obsidian-excalidraw-plugin