Embed
Embeds external content via an iframe — YouTube videos, Loom recordings, Figma files, Google Maps, and any URL that supports embedding. Add with /embed or /iframe.
Adding an embed
When first added, the block shows a URL input field. Paste any URL and press Enter or click Embed. The block converts the URL to an embed URL and renders the iframe at 400px height.
Automatic URL conversion
The block automatically converts share URLs to embed URLs for supported services:
| Service | Share URL pattern | Converted to |
|---|---|---|
| YouTube | youtube.com/watch?v=ID or youtu.be/ID | youtube.com/embed/ID |
| Loom | loom.com/share/ID | loom.com/embed/ID |
| Other | Any URL | Used as-is. Works for Figma, Google Maps, and any service that serves embeddable content. |
Controls after embedding
Once a URL is set, a header bar appears above the iframe showing the URL and a Remove button. Clicking Remove clears the embed URL and returns to the URL input state.
X-Frame-Options: DENY or Content-Security-Policy: frame-ancestors 'none' will block the iframe. If an embed shows a blank panel or an error, the service does not allow embedding.YouTube embeds are a special case
A YouTube URL doesn't render as a plain iframe like every other embed does — it renders a custom, draggable floating player instead. This applies both in the editor and on the published page.
Publishing
For non-YouTube embeds, the block renders as an <iframe> with the converted URL, fixed 400px height, and standard allow attributes for autoplay, clipboard, and fullscreen — not interactive beyond whatever the embedded service itself provides. YouTube embeds instead render the floating player and transcript feature described above, on the published page as well as in the editor.
metadata.embedUrl. The raw URL entered by the user — converted to embed format at render time.