David V. Kimball3k downloadsEmbed rich media from GitHub, Spotify, CodePen, and more directly in your notes.
Embed rich media from GitHub, Spotify, CodePen, and more directly in your notes.
Use fenced code blocks with the embed language identifier to embed rich media previews in reading mode. Extended Embeds detects the URL and renders the appropriate embed automatically.
In your Markdown notes, use a fenced code block with the embed language identifier:
```embed
https://github.com/obsidianmd/obsidian-api
```
```embed
https://github.com/obsidianmd/obsidian-api/issues/1
```
```embed
https://open.spotify.com/track/4iV5W9uYEdYUVa79Axb7Rh
```
```embed
https://creators.spotify.com/pod/profile/davidvkimball/episodes/Free-Trials-e26r5r5/a-aa459st
```
```embed
https://store.steampowered.com/app/440
```
```embed
https://codepen.io/pen/abcdef
```
```embed
https://gist.github.com/user/abc123
```
```embed
https://vimeo.com/133845089
```
```embed
https://soundcloud.com/artist/track
```
```embed
https://example.com
```
You can optionally specify a width (or width and height) on the second line:
```embed
https://codepen.io/pen/abcdef
600x400
```
Embeds automatically follow your Obsidian theme. You can also force dark or light mode in settings.
Providers under consideration, in rough priority order. None of these are committed, and each needs to be verified rendering inside Obsidian before it ships: a published embed URL does not guarantee the provider allows framing in Electron.
Likely first: tldraw, Desmos, Observable, CodeSandbox, Replit. All embed without a login, all suit note taking, and CodeSandbox and Replit sit alongside the existing CodePen support.
After that: Google Maps, Google Slides, Google Calendar, Canva. These only embed when the content is shared publicly, so a private document shows an error rather than a preview.
Lower priority: Val Town, Felt, Scratch.
YouTube is deliberately absent. Obsidian embeds it natively, so a provider here would duplicate that.
Adding a provider widens the set of third parties a vault talks to, so the list stays deliberately short rather than exhaustive.
.obsidian/plugins/ directory.extended-embeds and ensure manifest.json, main.js, and styles.css are in there.pnpm installpnpm dev to start compilation in watch modepnpm build
pnpm lint