hkohlhoff56 downloadsExport canvas files as portable interactive HTML package or standalone page.
Export your Obsidian canvas as an interactive HTML page that can be opened in any modern browser.
The canvas showing the documentation of this plugin, seen in Obsidian...

looks (nearly) the same in the exported interactive HTML page...

The plugin supports two export formats:
Package folder: creates a portable folder containing index.html, copied assets, and optional HTML subpagesSingle HTML file: creates one self-contained HTML document with inline assets and virtual subpagesYou can choose the export format and other options in the plugin settings.
The full documentation shown above is available as single HTML documentation. Note that this is a large file of nearly 20 MB.
A demo-vault with the full documentation can be downloaded from the examples/demo-vault folder.
.canvas file as an interactive HTML package or a single self-contained HTML fileCanvas nodes:
Markdown content:
Each package export creates a dedicated folder inside the configured output directory (here: "Canvas-Exports"):
Canvas-Exports/
Canvas_Name/
index.html
assets/
images/
files/
Depending on the canvas contents, the export may also include additional HTML pages for Markdown and link nodes which will then reside in the files folder.
Single HTML exports create one file in the configured output location (here: "Canvas-Exports"):
Canvas-Exports/
Canvas_Name.html
Because assets are embedded, the file can grow to several MB for large canvases and/or many assets.
.canvas file.Export active canvas as HTML from the command palette.index.html for Package folderCanvas_Name.html for Single HTML fileYou can also use the ribbon icon to trigger the export.
This repository includes a small demo vault with the full documentation in examples/demo-vault.
To use it:
examples/demo-vault as a vault in Obsidian.manifest.json and main.js into .obsidian/plugins/canvas-html-exporter/.documentation/Canvas HTML Exporter - Documentation.canvas.Export active canvas as HTML.Install from Obsidian Community Plugins once published, or copy manifest.json, main.js, and styles.css into your vault plugin folder.
Export format: export as package or single HTML fileDark default theme: use a dark default theme for exported HTMLShow minimap: include a minimap on the exported canvas pageShow search: include a search overlay on the exported canvas pageSyntax highlighting: choose the Shiki theme family for code blocksOutput folder: choose a folder inside the vault or an absolute filesystem folder on desktopSingle HTML file is convenient for sharing, but very large canvases and/or many embedded files can make the output file quite large.Single HTML file mode than in the Package folder export.
Remember the presentation of the HTML files and their content always depends on the browser used and optional add-ons which may be installed in your system.Install dependencies and run the checks:
npm install
npm test
npm run build
Development workflows:
npm run dev
npm run build:prod
To deploy a local development build directly into an Obsidian vault, set OBSIDIAN_PLUGINS_DIR and use one of the deploy scripts:
export OBSIDIAN_PLUGINS_DIR="/path/to/.obsidian/plugins"
npm run build:deploy
npm run dev:deploy
Canvas HTML Exporter is licensed under the GNU General Public License (GPL) v3.0 or later. Exported HTML files and package folders generated by the plugin may be used, published, distributed, and licensed independently from the plugin under the output exception in COPYING_EXCEPTION.
Canvas HTML Exporter runs entirely locally on your computer and does not send data anywhere.
The bundled plugin code may contain static-analysis matches for fetch(), request(), atob(), or btoa(). These are not used for network communication or obfuscation:
fetch() and request() matches come from bundled syntax-highlighting and math-rendering dependencies, where they are internal parser or grammar terms.atob() and btoa() are used only for local asset handling in standalone HTML exports, where embedded files are represented as data: URLs and materialized as browser blobs.Please report bugs via the GitHub repository. I will try to respond to confirmed bugs and issues as quickly as possible.
If you enjoy the plugin and find it useful, you can support further development by buying me a coffee.