DOCUMENTATION

Embed

Last updated May 2026
Media Block
All plans

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:

ServiceShare URL patternConverted to
YouTubeyoutube.com/watch?v=ID or youtu.be/IDyoutube.com/embed/ID
Loomloom.com/share/IDloom.com/embed/ID
OtherAny URLUsed 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.

Not all URLs can be embedded. Services that set 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.

Any YouTube embed also shows a Get transcriptcontrol that opens a draggable, resizable floating panel with the video's captions (timestamped, copyable). This uses YouTube's own caption data — no AI key is required, unlike the YouTube Shorts block.

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.

embedUrl
Stored in metadata.embedUrl. The raw URL entered by the user — converted to embed format at render time.