Notion's copy-paste HTML uses deeply nested div structures, custom data attributes, and class names tied to its internal block system. While cleaner than Google Docs or Word, Notion paste still carries unnecessary wrapper elements and non-semantic markup. Publish Helper strips the Notion artifacts for clean CMS-ready HTML.
Notion wraps each content block in nested divs with data-block-id attributes and internal class names. Toggle blocks, callouts, and databases use custom markup structures that don't translate to standard HTML. Inline formatting often uses <span> wrappers with style attributes rather than semantic tags.
Notion Output
<div data-block-id="abc123" class="notion-text-block">
<div class="notion-text-block__content">
<span style="font-weight:600">Introduction</span>
</div>
</div>
<div data-block-id="def456" class="notion-text-block">
<div class="notion-text-block__content">
This is a paragraph with <span style="font-weight:600">bold text</span> and <span style="font-style:italic">italic text</span>.
</div>
</div>Clean HTML
<h2>Introduction</h2> <p>This is a paragraph with <strong>bold text</strong> and <em>italic text</em>.</p>
Select and copy your content from Notion. All formatting, headings, lists, and links will be captured in the clipboard HTML.
Paste into Publish Helper. Toggle cleanup options: strip inline styles, convert heading prefixes, and run find-and-replace.
Click “Clean HTML” and copy the output. Paste the clean, semantic markup into WordPress, Ghost, Webflow, or any CMS.
Generally yes — Notion doesn't add per-character inline styles the way Google Docs does. However, Notion uses deeply nested div wrappers and custom data attributes that still need cleanup for CMS publishing. Publish Helper handles both.
Yes. Notion's table HTML is preserved during paste. Publish Helper removes the Notion-specific wrappers and attributes while keeping the table structure intact.
Toggle blocks and callouts use custom Notion markup that doesn't have a standard HTML equivalent. Publish Helper preserves the text content but removes the Notion-specific wrapper elements.
Last updated: March 2026