To embed something in Notion, type /embed on a new line, press enter and paste the content's https link in the menu that appears. Notion embeds content "from over 1,900 domains via the Iframely service", and "In most cases, Notion will recognize an embeddable URL when you paste it into your page." To put a Notion page on your own website, publish it and choose Embed this page, then Copy this code. I'd embed only what should stay live, because every embed loads someone else's page inside yours, and a bookmark card does the job for a link you'll only click.
For a video, a Miro board or a widget clock you want to watch change, choose an embed. For a reference link, choose a web bookmark, and for a link inside a sentence, a link mention. For a small calculator or quiz that needs nothing from the web, the newer HTML block keeps working without any outside site staying online. For a Notion page on your website, start with Notion's own Embed this page before you pay for an embed service.
Embed, bookmark, mention or something else: pick the block first
Notion has seven ways to put one thing inside a page, and most embed trouble starts with the wrong one: a live frame where a link card would do, or a widget URL where a self-contained file would work offline. One question sorts them. Should what you see stay live, and where does it live?
| Block | How to add it | What it shows | Stays current? | Best for |
|---|---|---|---|---|
| Embed | /embed, or paste a link and choose Create embed | The external page, live, in a frame you can resize | Yes: a change at the source "will appear in Notion too" | Videos, Figma, Miro, maps, widgets |
| Web bookmark | /bookmark or /web bookmark, or paste and choose Paste as bookmark | A card with the page title, description and URL | No, it's a static link card | Reference links, reading lists |
| Link mention | Paste a link and choose Paste as mention | An inline link with an icon, the source and the page title | No live content, only the icon, source and title | A link inside a sentence |
| Link preview | Paste a link from a supported app and choose Paste as: Preview | A synced preview of one pull request, issue, message or design file | Yes: it "updates as changes are made" | GitHub, Jira, Slack, Figma, Linear and the other listed apps |
| Synced block | Select blocks, then Turn into → Synced block | The same Notion blocks on several pages | Yes, edit any copy and the others follow | Instructions or text you repeat across pages |
| Linked database view | /linked | A view of a database that lives on another page | Yes; edits reach the original, filters and views stay local | Showing one database in a second place |
| HTML block | /html, or upload an .html file | Your own interactive HTML, running inside the page | No outside data; it's self-contained | A calculator, quiz or diagram that needs nothing from the web |
- Embed: choose it for a video, a board, a map or a widget you want to see change, since Notion's embed help says "If the source of your embed changes in any way, that change will appear in Notion too."
- Web bookmark: choose it for reference links and reading lists, where a card that shows the "page title, description and URL" says enough and nothing needs to play or refresh.
- Link mention: choose it when the link belongs inside a sentence. It appears inline, "more subtle than bookmarks" in the embed help's words, and Notion's help on links says it shows "an icon, the source, and the title of the page".
- Link preview: choose it for one GitHub pull request, Jira issue, Slack message or Figma file whose status you want on the page, from the 21 platforms in Notion's link previews help; a preview shows one item, while a synced database imports many.
- Synced block: choose it for text you repeat across pages, keeping in mind that someone without access to the original page "won't be able to see a synced block's contents", per Notion's synced block help, which is the first thing to check when a synced block isn't visible to a client.
- Linked database view: choose it to show an existing database on another page, knowing that "The changes you make in a linked database reflect in the original, but filters and views only apply to the linked instance," a split explained in whether editing a linked Notion database changes the original.
- HTML block: choose it for a self-contained calculator, quiz or diagram, the kind of piece Notion's July 1, 2026 release shows with "Build a ROI calculator" and "Quiz your teammates".
The embed row is the one I'd use most sparingly. Every embed loads another site inside your page, and Notion's help says "As needed to display embedded content, Iframely and the embedded app may receive the IP address of the content's viewers." A bookmark is a static card with the title, description and URL instead of a live frame. So for a link someone will only click, I'd use the bookmark and save embeds for content you watch change.
How to embed anything in Notion, step by step
- Hover over a new line and click the + that appears to the left, or type
/embed. - Choose Embed, or one of the common embed types such as Video or Google Drive, and press enter.
- In the menu that appears, paste the content's URL or embed link. Use the https address: Notion's help says the link "should start with https not <iframe".
- Resize the embed by hovering over it and dragging the black bars that appear on its sides.
Pasting is often quicker. Paste a link on an empty line and pick from the menu that appears: Create embed for a live frame, Paste as bookmark for a card, Paste as mention for an inline link. That one choice decides which of the blocks above you get. In the mobile app, paste a URL and select Create bookmark when you want the card.

Notion also has preconfigured blocks for common media types ("File, Image, PDF, Video") and apps ("CodePen, Loom, Miro, Tweet"). The slash commands are /video, /audio, /file, /image, /tweet, /maps and /drive, plus /bookmark for a link card. A PDF goes in through /file, which offers Upload or Embed link, or through /embed with Upload, which the help says works for your "own image, audio, video, or file". Tally and Typeform forms are on Notion's embed list too; if you want the answers to land in a database rather than only show on the page, connecting a form to a Notion database compares those routes.
Once an embed is on the page, three controls handle the rest:
- Move it: drag the ⋮⋮ handle, and drop it into columns if you want it beside text.
- Open the source: hover and click Original, or click ⋮⋮ or ••• and select View Original.
- Swap the content: click ⋮⋮ or •••, choose Replace, then Embed link or Upload.
HTML block vs embed: what the tests found
Notion added HTML blocks in its July 1, 2026 release, the one labelled Notion 3.6, saying "you can build interactive HTML blocks, like an ROI calculator." Notion documents how the block is made: Notion's block reference for developers says "Attaching an uploaded .html file creates an HTML block," from a file with an .html or .htm extension. The sandbox rules are another matter. Stacktree's explainer re-checked Notion's help center and developer docs and says Notion "does not publish the exact rules"; it also lists public-page behavior as "still not documented". Stacktree builds a host for agent-made HTML and says so on the page. The findings below come from two hands-on write-ups, by Matthias Frank and Mindful Setups, with Stacktree's summary beside them.
| Finding | Matthias Frank (hands-on) | Mindful Setups (hands-on) | Stacktree (summary of testing + doc recheck) |
|---|---|---|---|
| Outside network calls | Blocked: they "can't reach out to the wider web" | Blocked; fonts and images "must be packed into the HTML itself" | Relays that "calls out to the network are blocked"; Notion "does not publish the exact rules" |
| Reads or writes Notion data | No; a generated report "is a snapshot" | No: it "cannot read or write pages or databases" | - |
| Keeps state after refresh | Yes, in that browser only: "your whiteboard drawing survives a refresh" | No: "a refresh resets whatever was going on inside" | Relays that state "stays in the browser on that device rather than syncing" |
| Best way to add | Lists three ways: type /HTML and add code, upload an HTML file, or ask Notion AI | Upload a self-contained .html file; pasted code "frequently renders as visible code" | Lists Notion AI, /html, an .html upload, or agents through Notion MCP |
| Plans | Viewing and embedding on every plan, Free included; Notion AI generation needs Business or higher | AI generation works "on plans that include it" | Lists plans for /html and uploads as not documented |
| On a published page | - | Opened "as an anonymous visitor" on a public notion.site link: "everything renders and runs" | Public-page behavior "still not documented" |
| Look | - | "Permanent file name label and a border you cannot remove" | - |
| Own URL | - | - | "no standalone URL"; access "follows the page's sharing, not the block's" |
The composite is clear on the big points. Both hands-on tests found outside network calls blocked, and Stacktree's recheck reports the same. Both hands-on tests found no access to your Notion data. Mindful Setups' public-page test found the block renders for an anonymous visitor, which is one test of something Notion hasn't documented. On state the two testers split: Frank reports a drawing that survives a refresh in the same browser, Mindful Setups saw a refresh reset the block. Don't rely on it keeping state.
Three smaller details shape daily use. You "can't hand-edit an HTML block's code in place", so Frank's fix is to "re-upload the file". On the page it "behaves just like an embed": you can move it, "drop it inside toggles" and resize its width, which makes a toggle a tidy home for a calculator you only open now and then. And Mindful Setups' comparison sums up the trade in one row: an HTML block means "Edit or re-upload the file in every page", while an embed means "Update the source once, every embed follows".
That row is why I'd keep HTML blocks for self-contained pieces that live on one page, such as a quiz, a pricing calculator or a small diagram, and upload them as an .html file, since Mindful Setups found uploading is "the method that works consistently". For a widget, a live feed or anything you'll show on several pages, I'd stay with an embed, which Mindful Setups calls "the only way to show live content from an outside URL". On plans, Matthias Frank writes that viewing and embedding HTML blocks "works on every Notion plan", including the free tier, while generating one with Notion AI "requires a Business plan or higher"; a block built elsewhere can be uploaded on any plan. Notion runs the sandbox; you still decide whether the piece needs live data, and that answer picks the block.
Notion embed widgets: clocks, timers, weather and more
A Notion widget is a small web page made to be embedded: a clock, a Pomodoro timer, a weather card, a countdown, a quote or a calendar. Notion's embed help lists Indify, Widgetbox and Flocus among the commonly used apps you can embed. Apption's widget catalog shows "132 results", from a flip clock and Pomodoro timers to weather, countdown and quote widgets. The steps are the same as any embed:
- Customize the widget on the provider's site.
- Copy its link, the https address rather than any iframe code.
- In Notion, type
/embed, press enter and paste the link in the menu that appears. - Drag the black bars on its sides until it fits the column.
I'd make the widget URL your default and the HTML block the exception. Mindful Setups puts it well for widgets: embeds remain "the practical default: you customize once, copy a link, and the widget keeps improving upstream." If you're adding widgets to a personal dashboard, start with one clock or timer you'll look at every day, then add the next only when you miss it.
Two cautions come with every widget, because each one is an embed:
- The IP note applies: "Iframely and the embedded app may receive the IP address of the content's viewers." On a page you share with clients, those viewers are your clients.
- Login-only widgets break outside the browser. In Notion's words, "Embeds that require login to an external site will not work on Notion's desktop app or mobile apps."
Have your own widget code? An embed takes a URL, not code, so a snippet needs a hosted address first. Apption's listing pitches a tool to "Turn any HTML codes into Notion embeddable url". If the piece is self-contained, the HTML block skips the hosting step: upload the .html file, and accept that it can't fetch anything from a server, such as the day's weather.
How to embed a video in Notion
- Type
/videoand press enter. - Select Embed link, paste the video's share URL from the streaming service, and click Embed video.
The shortcut is to paste the video's URL from a streaming service on an empty line and choose Create embed. Notion's help on images, files and media says you "can embed videos from YouTube, Vimeo, and other major sources". To upload your own file, use /video and select Upload, or drag the file onto the page; Notion converts it to its custom video player.
The plan limit decides between uploading and embedding. On the Free plan, "all files you upload must be under 5MB", and Notion's pricing page lists Free file uploads as "Up to 5 MB"; paid plans allow larger uploads. An embedded video isn't an upload, so that limit doesn't touch it. For anything beyond a short clip on Free, I'd put the video on YouTube or Vimeo and embed the link.
If an upload won't play, the help notes that "MP4 files can sometimes have video compression or other components that aren't supported in Notion," and suggests converting the file to a different type. Playback also depends on your browser or operating system supporting the format. Audio works the same way: type /audio, select Embed link and paste the URL for the track or playlist, or paste the link and choose Create embed. Spotify is on Notion's embed list.
Google Drive, Calendar, maps, tweets and app previews
- Google Drive: type
/drive, then paste the URL of a Google Doc or Sheet, or click Browse Google Drive. You can connect several Google accounts and embed from each one's Drive. - Google Calendar: Notion embeds a view-only Google Calendar when the Gmail address on the calendar is the same one you use for Notion. In Google Calendar, under My calendars, click ⋮ next to the calendar and choose Settings and sharing. Under Access permissions, check Make available to public with See all event details selected. Under Integrate calendar, copy the Public URL to this calendar, paste it into Notion and select Create Embed.
- Maps and tweets: type
/mapsfor an interactive Google Map or/tweetfor a Tweet. - App previews: copy a GitHub, Jira, Slack, Figma or Linear link, paste it and select Paste as: Preview. The first time, Notion shows a button asking you to connect the app. For SharePoint and OneDrive, you need edit access there.
The calendar step deserves a pause. Make available to public with See all event details makes every event on that calendar public, with its details, not only the ones you meant to show on a Notion page. I'd embed a separate calendar that holds only events you're happy for anyone to read.
Link previews carry a sharing rule of their own. Once you've connected an app, "anyone who can view your Notion page will be able to see corresponding content that you've pasted as a link preview." Paste a private Slack thread onto a client page and the client sees it. Embed connections are managed under Settings in the sidebar → Connections, which lists "all of the apps you've authenticated for link previews or embeds", with options to Connect another account or Disconnect an existing account. On Enterprise Plans, the ability to add connections can be restricted to workspace owners.
Embed a Notion page on your website
Notion has this built in. Notion's web publishing help says you can embed published pages, "forms, charts, databases, and more", into your non-Notion websites:
- Open the page you want to publish and select Share at the top.
- Open the Publish tab and select Publish.
- On the published page, click Embed this page.
- In the embed modal, click Copy this code. Toggle Show page title if you want the page title shown.
- Paste the code into your website's HTML; in a website builder, that will probably be a code block.
After that, the help says, "As you make changes to the content in a published Notion page, the Site will update automatically." A Notion form can go on your site the same way, and Notion forms for client intake covers setting up the form and keeping responses private.

Publishing decides what you expose, so check three things before you click Publish:
- Subpages: "Publishing a Notion page to the web means all of its subpages will be published too." You can restrict subpage permissions to hide the ones that shouldn't go public.
- Contributor details: the published page's metadata "will include the names, profile photos, and email addresses associated with any Notion users that have contributed to the page". The same applies when general access is set to Anyone on the web with link.
- Unpublishing: Share, then Unpublish takes the Site down, but the page can still be open through Anyone on the web with link. To close that, click Share, open the dropdown next to Anyone on the web with link, and click Remove.
Publish only what a client or the public should see. If the page is meant for one client rather than the web, Notion client portal permissions shows how to share the right records privately instead.
The plan question is short. Notion's Sites availability page lists publishing Notion Sites and claiming one notion.site domain on the Free plan. Paid plans can "Claim up to five notion.site domains" and "connect up to 25 existing custom domains" by purchasing the custom domain add-on. Domains, slugs, search settings and the rest of the Sites setup are in the Notion website guide.
What the paid embed services add
Three paid services show up for this search. Here's what each one lists:
| Service | Free tier as listed | Paid as listed | Conflicts and conditions |
|---|---|---|---|
| EmbedNotion | "1 Notion embed" | Pro $7.90/month billed yearly: "Remove watermark", 10 embeds, "Auto-update embeds". Business $27.9/month billed yearly: 100 embeds | Auto-update is listed from Pro up, not on the free tier. The page doesn't say the Notion page must be public |
| Get Notion Embed | Lite: "Total 5 Embeds", "Watermarked", "No expiry, lifetime access!" | Pro $4/month: unlimited embeds, no watermark. Lifetime $99: "Pay once, use lifetime." | Its FAQ says free "embeds will expire after 30 days", against the no-expiry card. Its steps start with "Make Sure Your Notion Page is Published" |
| Embed Notion Pages | "One embed", "One week expiration" | Pro: "Remove watermark", "Password & email protection", "No expiration", "Up to 20 embeds"; no price in the listing | Its FAQ says "After two weeks your embed code will expire", against one week on the card. "Only publicly available pages can be embedded at the moment." |
Only Get Notion Embed labels its free tier watermarked; the other two list watermark removal as a paid feature. Two of the three say the Notion page has to be public or published first.
A service only makes sense for something Notion's own embed lacks. Password protection is the clearest case: Notion's help answers "Can I password protect a page?" with "Unfortunately, not at the moment." Embed Notion Pages sells "Password & email protection", but its own FAQ says only public pages can be embedded. So the password sits on the embed while the Notion page underneath stays public. For everything else, I'd use Embed this page: it updates with your edits and keeps a third-party account out of the path between your page and your site.
When a Notion embed won't load: symptom, cause, fix
| Symptom | Likely cause | Fix |
|---|---|---|
| "Failed to Load" | "Some websites prohibit their content from being embedded elsewhere" | Paste it as a bookmark, or use the site's own embed link if it offers one |
| Works in the browser, not in the desktop or mobile app | The embed requires a login to an external site | Open the page in a browser, or switch the embed to a bookmark |
| Pasted <iframe> code won't embed | Notion wants the https URL, not iframe code | Copy the https address from the code's src; for your own HTML, host it and embed its URL, or upload it as an HTML block |
| Video upload rejected on Free | Free uploads must be under 5 MB | Put the video on YouTube or Vimeo and embed the link |
| Link preview shows "Access denied", "Content not found" or "Can't load preview" | You connected an account without access, or your organization limits third-party connections or IP addresses | Open your connections in Settings and choose Connect another account; for "Can't load preview", also delete the connection there and paste the link again; otherwise ask your workspace or organization administrator |
| Link mention shows no title or icon | Your browser blocks cookies, or the link needs permissions or a sign-in to view | Allow cookies for Notion; a link behind a login pastes without rich information, so expect a plain link |
| A teammate or client sees an empty synced block | They don't have access to the page holding the original block | Share the original page with them, or let them request access to it |
| An HTML block shows code instead of running | The code was pasted after /html | Upload a self-contained .html file instead |
| A clock or weather card in an HTML block shows nothing live | Both hands-on tests found the sandbox blocks outside network calls | Use the widget's embed URL instead |
| No Publish option in an Enterprise workspace | "Workspace owners on the Enterprise Plan can choose to prevent Notion Sites from being published" | Ask a workspace owner; the switch is Disable publishing sites, forms, and public links under Settings → Security |
My pick: three changes for your next page
Turn the three links you'd only ever click into bookmarks, keep embeds for things you watch change, and publish-then-embed your Notion page instead of signing up for an embed service. That order follows the reasons above: a bookmark is a static card rather than a live frame of someone else's site, an embed earns its place when the content changes, and Notion's own Embed this page already updates with your edits.
Start with the page you open most. Switch its reference links to Paste as bookmark, keep the one video or board you really watch as an embed, and add an HTML block only for a self-contained piece you'd otherwise have to host. Notion draws the frame, the card and the published page. What you still decide is what deserves to stay live, and what a client or the public should see.
Can you embed one Notion page inside another?
Use the block that matches what you want to show. For the same text on several pages, use a synced block. For a database, add a linked view with /linked. For a whole page, link it: type /link and pick the page for a Link to page block, which shows up in your sidebar as a subpage, or type @ and the page name for a mention that works more like a hyperlink.