Obsidian embeds notes, images and PDFs, but an .html file in your vault is just a file you can open — you cannot show it inside a note. So a report, a chart exported from another tool, or a page you built yourself has to live outside your notes, or be flattened into a screenshot.
This plugin embeds HTML files directly in a note, with the same ![[file.html]] syntax you already use, sized how you want, styled to match your theme, and able to run its own JavaScript.
The documentation is an interactive demo vault. Every feature has a note that explains what it does and why you would want it, with real HTML files already in place to embed.
Start reading here — it is plain markdown, so it works on GitHub with nothing installed.
A copy of the vault ships with every release. You can access it via any of the following:
Embed HTML: Open demo vault command.embed-html-demo-vault.zip from the Releases. It unzips into a single embed-html-demo-vault-<version> folder.demo-vault/ in this repository.htm, html, shtml, xht and xhtml all supported. 01 Basic Embed · 07 File Extensions or ![[https://host/page.html]] — shown as an isolated page that keeps its own styles and scripts. 14 Remote HTML Pages| Plugin | Features | How Embed HTML differs |
|---|---|---|
Artifact Embed |
File, URL or inline HTML cards; reload/copy; theme styling; height only | Overlaps on file/URL content; native embed syntax; width and height |
Custom Frames |
Web-app panes; presets and custom styling; configured-frame blocks | Overlaps on web content; also embeds vault HTML files |
HTML Embed |
Unlisted; vault HTML with scripts; sized html-embed blocks |
Overlaps on file embeds; native syntax and web pages too |
HTML Embed Anywhere |
Unlisted; file/URL html-embed blocks; canvas cards; Plotly fitting |
Overlaps on file/URL content; native embed syntax |
HTML Page Preview |
Reading-view HTML embeds; global 16:9 or infinite height | Broader rendering: per-embed sizes; Live Preview too |
HTML Prototype Viewer |
HTML tabs; device-width presets; live reload; html-preview blocks |
Alternative syntax: native embeds; file and web-page content |
HTML Reader |
HTML/MHTML tabs; five trust modes; search and zoom; no note embeds | Different placement: embeds content inside notes |
HTML V Editor |
HTML-file embeds and inline blocks; visual HTML editing; desktop-only | Overlaps on embeds; mobile support; never writes the HTML file |
HTML Viewer Plus |
Sized HTML-file embeds; element selection; zoom/search; MHTML viewer | Overlaps on file embeds; also embeds web pages |
Local HTML Embed |
html-embed blocks; vault files or note-matched files; desktop-only |
Alternative syntax: native embeds; mobile support |
Local Web Page Viewer |
HTML tabs; inlined stylesheets; zoom, bookmarks, scroll memory; desktop/mobile | Different placement: embeds content inside notes |
Style HTML Viewer |
HTML tabs and resizable html-viewer blocks; per-file script consent; diagnostics |
Alternative syntax: native embeds; explicit per-embed dimensions |
ZJ HTML Studio |
Sized HTML-file embeds; local server; trust modes; live reload; desktop-only | Overlaps on file embeds; also web pages; mobile support |
Last searched for similar plugins on 2026-10-26.
The plugin is available in the official Community Plugins repository.
To install the latest beta release of this plugin (regardless if it is available in the official Community Plugins repository or not), follow these steps:
Add plugin button once and wait a few seconds for the plugin to install.By default, debug messages for this plugin (id: embed-html) are hidden.
If you need to enable them refer to the documentation.
All notable changes to this project will be documented in the CHANGELOG.
Contributions are welcome — see CONTRIBUTING to get set up.
Open issues through the issue forms, not as blank issues.
To report a bug from inside Obsidian, run the Embed HTML: Report a bug command. It opens the bug form with the plugin version, the Obsidian version and your operating system already filled in.
Filing from the CLI or the API (gh issue create --body, or an AI agent filing for you) skips the form, and gh issue create --template cannot load an issue form. In that case, open the matching form in .github/ISSUE_TEMPLATE/, copy every field as a ### <label> heading in the form's order, and fill in each one. Always state the plugin version, the Obsidian version and your operating system.