imAndyrrr72 downloadsEmbed external web pages and local files with standard Markdown and wiki embed syntax
Embed external web pages and files outside your vault using familiar Obsidian embed syntax.
Fast External Embed is a desktop-only plugin for Obsidian. It lets you embed and link to files stored outside your vault (absolute paths, file:/// URLs) and render external web pages, all using Obsidian's familiar embed and link syntax.
| Feature | Description |
|---|---|
| External file embeds | Embed PDFs, images, audio, and video stored outside the vault via ![[C:/path]] or . |
| External file links | Open vault-external files with [[C:/path]] wiki links — Obsidian won't create empty notes. |
| Web page embeds | Render external HTTP(S) pages as responsive sandboxed iframes with . |
| Progressive PDF reader | Page-by-page lazy rendering with navigation and zoom controls for large PDFs. |
| Dual syntax support | Works with both ![[...]] wiki embeds and standard Markdown  image syntax. |
| View modes | Supports both Reading view and Live Preview. |
| Quick actions | Open local files in the system default app or reveal them in File Explorer. |
| Category | Extensions |
|---|---|
.pdf |
|
| Images | .png, .jpg, .jpeg, .gif, .webp, .svg, .bmp |
| Video | .mp4, .webm, .mkv, .mov |
| Audio | .mp3, .wav, .ogg, .m4a, .flac, .aac |
Other file types will show an error card with a button to open them in the system default application.
Use an absolute path in a wiki embed:
![[C:/Documents/reference.pdf]]
![[C:\Documents\reference.pdf]]
![[file:///C:/Documents/reference.pdf]]
You can also use standard Markdown image syntax for compatible files:


You can also use normal wiki links (without the !) to open vault-external files:
[[C:/path/to/file.pdf]]
[[C:/path/to/file.pdf|Open local PDF]]
Clicking these links opens the file with the system default application instead of creating an empty vault note. Windows absolute paths, file:/// URLs, and Unix absolute paths are supported, including paths containing # (e.g. C:/#Self/file.pdf).
Use an external HTTP or HTTPS URL in Markdown image syntax:


The page is rendered in an iframe. Some websites intentionally prohibit iframe embedding through their own security policy; those websites cannot be displayed inside Obsidian by any plugin.
Set an explicit size with the image alt text (applies to all embed types):


Or use URL fragment parameters for finer control:
![[C:/Documents/reference.pdf#page=3&height=80vh&width=90%]]
| Parameter | Applies to | Description |
|---|---|---|
page |
Jump to a specific page on load. | |
height |
PDF, web pages | Set the embed height (e.g. 600px, 80vh). |
width |
PDF, web pages | Set the embed width (e.g. 800px, 90%). Defaults to 100%. |
The built-in PDF reader includes a toolbar with:
| Setting | Default | Description |
|---|---|---|
| Show header and quick actions | On | Display file name, URL, and action buttons above each embed. |
| PDF default height | 75vh |
Default height for PDF embeds. |
| Web/iframe default height | 550px |
Default height for external web page embeds. |
| Enable Live Preview support | On | Render embeds in edit mode when the cursor moves away. Requires a note or plugin reload after changing. |
Local PDFs are served through a loopback-only, session-token-protected endpoint with HTTP byte-range support. Obsidian's bundled PDF.js renders pages as they approach the visible area, so you can scroll and continue reading without waiting for the complete file to load. This improves first-page latency and substantially reduces memory pressure for large scanned PDFs.
Pages far from the current scroll position are automatically evicted from the canvas, limiting memory usage in notes containing multiple or very large documents.
Other compatible local media types (images, audio, video) are loaded via short-lived in-memory Blob URLs with a bounded 200 MB LRU cache. Close the note or reload the plugin to release cached media data.
127.0.0.1 that supports HTTP Range requests. PDF.js requests only the byte ranges needed for visible pages, enabling instant page access even in multi-hundred-MB files.fs and converted to Blob URLs for the browser renderer.<iframe> elements with allow-scripts, allow-forms, and allow-presentation.[[C:/...]] wiki links and routes them to the system default application via Electron's shell.openPath.127.0.0.1, uses an unguessable per-session token, and exposes only files explicitly registered by the plugin.allow-scripts, allow-forms, allow-presentation). The plugin does not upload local files or note contents.main.js, manifest.json, and styles.css from the latest GitHub release.<vault>/.obsidian/plugins/fast-external-embed/ in your vault.Once the plugin is approved and listed in the official Obsidian Community Plugins directory, you can install it directly from Settings → Community plugins by searching for Fast External Embed.
npm install
npm run build
The compiled plugin entry point is main.js. Source files are in src/:
| File | Purpose |
|---|---|
src/main.ts |
Plugin entry point, DOM scanning, link interception, and settings. |
src/renderer.ts |
Embed target parsing, media rendering, and the progressive PDF viewer. |
src/local-file-server.ts |
Loopback HTTP server with byte-range support for local PDF streaming. |
This project is released under the MIT License.