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>
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