Yes, you can upload HTML to Notion, and two different things can happen. Import turns the file into Notion content you edit like any other page. The HTML block, added in Notion 3.6 in July 2026, runs the file as written inside your page.

Which one you want depends on what the file is for. If the value is in the words, import it. If the value is in how the page looks and behaves, use the HTML block, or give the page an address of its own.
Two ways to upload HTML to Notion
| Import | HTML block (/html) | |
|---|---|---|
| What you get | Notion pages and blocks | The file running inside a block |
| What carries over | Headings, lists and paragraphs, mapped to Notion blocks | Styles and scripts, which run as written |
| Changing it later | Edit it as normal Notion content | Replace the file from the block menu |
| Source | Notion import help page | Notion 3.6 release and our test |
Pasting the code as text is a third, different thing. It shows the code as text, which is useful when you want to show the source on purpose and not when you want the page.
Importing: when you want the words
Notion's import help page lists HTML among the file types it imports. It says HTML headings map to Notion headings, with H4 and below becoming H3, and lists and paragraphs map to Notion list and text blocks.

The same page asks you to keep the HTML file and any images or assets it refers to in the same folder before you import.
Import is the right choice for:
- Documentation exported from another tool
- A long article you want to keep editing in Notion
- Wiki text that other people will maintain
Compare the result with the original afterwards, section by section, so nothing you rely on is missing.
The HTML block: when you want the page running
Since Notion 3.6, a page can hold an HTML block. Notion's developer reference says it "renders the file's contents interactively in a sandboxed iframe".
To add one, type /html, choose HTML · Embeds and upload the file. The block also offers to generate a page with Notion AI. There is no field for pasting code, so code from a chat needs saving as an .html file first.

In our test on 27 September 2026, the styles were applied, the script ran and a button counted clicks. A fetch request to an outside address was blocked, so a page that loads live data from elsewhere needs that data inside the file.
To change the page later, edit your copy of the file and use Replace in the block menu. Embedding HTML in Notion has the full step-by-step and a table of what we checked.
When the page should travel on its own
The HTML block keeps the page inside Notion, under the page title, in a block frame. That suits a page that lives with your notes. A page you send to a client or a friend can do better with its own address.
In NOS, paste the HTML into a document as code text, or import the .html file. It renders exactly as written, with its scripts running, as a page rather than as source code.

Then choose Share and Create share link. The link opens the page on its own, full screen, for anyone who has it, without an account. People who open it can view the page but cannot edit it.

When you edit the code later, the link stays the same, so the address people already have shows the new version. Like the HTML block, the share page blocks requests to outside addresses.
Static host versus document compares this with uploading files to a host, and a self-contained file works best in every route here.
Short version
| If you want | Do this |
|---|---|
| The words, editable as Notion content | Import the HTML file |
| The page running inside a Notion doc | Type /html and upload the file |
| The page on its own, for readers outside Notion | Paste it into NOS and create a share link |
| To show the source code | Paste it as text |
Turning HTML into a link covers the share-link route in one paste, and the same link works in chat, email and slides.