
There is a right way and a wrong way to convert HTML to Kadence Blocks — and the wrong way is everywhere. Paste your markup into a generic converter or an AI assistant, and you usually get something that technically renders: headings styled by custom classes, sections wrapped in raw HTML blocks, and a Kadence editor whose controls are all empty.
The right way produces real Kadence blocks — Row Layout, columns, Advanced Heading, buttons, info boxes — styled through native block attributes. The design lives where Kadence expects it, every control in the editor stays populated, and the layout remains editable long after the conversion.
This guide explains why that difference decides whether your conversion survives its first client edit, then walks through six conversions step by step: a pasted HTML section, a full landing page, a live URL, a screenshot, an HTML email turned into a reusable pattern, and refining a converted layout with plain instructions.
Kadence Blocks generates its CSS from block attributes, keyed to a unique ID on every block. Set the padding, colors and typography as attributes and Kadence writes the stylesheet for you — the editor controls show the real values, the responsive tablet and mobile controls work, and your global color palette applies everywhere.
A converter that styles the layout with custom classes and a bolted-on stylesheet skips that system entirely. The page may look correct on the day it ships, but it is practically unmaintainable:
A quick test for any converter output: open the page in the editor, click a heading, and look at the sidebar. If the typography controls are empty, the design is not in the blocks — and every future edit will be a fight.
NibWP exposes Kadence to your AI client — Claude, Cursor or ChatGPT — as typed MCP tools on your own site. The Kadence Pro skill takes HTML, a live URL or a screenshot and returns a genuine Kadence Blocks layout: Row Layout and column sections, advanced headings, buttons and info boxes, styled through native block attributes with correct nesting and a unique ID on every block.
Every conversion follows the same four-step pipeline:
Five tools drive the pipeline, and knowing their names helps you steer the conversation:
kadence-pro-html-to-blocks — converts HTML, a URL or an image into a validated Kadence Blocks layoutkadence-pro-list-blocks — the Kadence block library plus its parent/child nesting ruleskadence-pro-preview — validates and scores a block tree without writing anythingkadence-pro-refine — tweaks an existing Kadence layout from a plain-English instructionkadence-pro-feedback — records a thumbs up or down so future conversions improveReads are read-only and writes are gated behind an approval step, so you can try everything below on a live site without anything being saved until you say so.
The simplest case: you have a hero section as HTML — from a prototype, a template, or code an AI wrote — and you want it as editable Kadence blocks.
The output for a simple hero looks like this — real block names, a unique ID on every block, and the styling in attributes:
<!-- wp:kadence/rowlayout {"uniqueID":"1834_a7f2c1",
"padding":[80,20,80,20],"bgColor":"#101828"} -->
<!-- wp:kadence/column {"uniqueID":"1834_b3e9d4"} -->
<!-- wp:kadence/advancedheading {"uniqueID":"1834_c5a1f8",
"level":1,"align":"center","color":"#ffffff",
"typography":"Inter","fontSize":[56,44,34]} -->
...
<!-- /wp:kadence/advancedheading -->
<!-- wp:kadence/advancedbtn {"uniqueID":"1834_d2c7e6"} -->
<!-- wp:kadence/singlebtn {"uniqueID":"1834_e8b4a2",
"text":"Start free","color":"#ffffff"} /-->
<!-- /wp:kadence/advancedbtn -->
<!-- /wp:kadence/column -->
<!-- /wp:kadence/rowlayout -->
Three spot-checks tell you the conversion is genuine: every block name starts with kadence/ or a core text block — never a core/html dump; every block carries a uniqueID; and the padding, colors and font sizes sit in the block comment as attributes, not in a stylesheet.
A complete page — hero, feature grid, testimonial band, pricing, final call to action — works the same way, it just exercises the mapper harder.
Budget a few minutes for review on a big page. The point of the plan-first flow is that you catch a mis-mapped section before it is saved, not after.
When the page already exists — an old site you are rebuilding, a staging page, a design approved on another property you own — the URL is a better source than copied markup, because the converter sees the rendered result: computed styles, real image URLs, actual fonts.
Use this on properties you own or have permission to rebuild. The typical job is migration — moving your own pages onto Kadence without redoing every section by hand.
Sometimes there is no HTML at all — a mockup image, a section spotted in a gallery, a client's “make it look like this” attachment. Kadence Pro accepts an image as the source and infers the layout.
Working from a design file rather than a flat image? Pulling structured tokens from the source beats pixel inference — that flow is covered in Convert Figma to Kadence.
HTML email markup is the worst-case input: nested tables, inline styles on every cell, spacer images. It is also a common one — a designed newsletter section the client wants on the site.
The same save-anywhere choice applies to every walkthrough here: a conversion can land as a page, a post, a Kadence Element — header, footer or hook — or a pattern. Say which you want in the prompt.
Conversion is rarely the last step. The refine tool edits an existing Kadence layout the same safe way it was built — through attributes, with validation and approval.
This is the habit that keeps a converted page maintainable: refine through attributes, never by pasting CSS over the top of a clean build.
Whether you use the walkthroughs above or any other route, hold the output to this standard — it is exactly what the validator grades before you approve:
Some Kadence blocks are static-save: their final markup is written when the editor saves. Open the converted page in the Kadence editor and save it once — every block materializes and the front end matches the plan. This is a one-time step per conversion, not a recurring chore.
The output is made of real Kadence blocks, so the free Kadence Blocks plugin must be active on the site. Install and activate it, reload the editor, and the blocks resolve.
If a section that should stay in sync with your content — latest posts, team members from a post type — converted as hard-coded cards, ask for it dynamic: “Replace the article cards with a dynamic posts block.” Repeated post-shaped markup maps to a kadence/posts block that updates itself.
That is the signature of custom CSS overriding attribute styles — usually a leftover stylesheet from an earlier hand-conversion on the same page. Remove the old custom CSS, or re-run the conversion on a clean draft; a native-attribute build has no competing stylesheet by design.
A conversion is only as good as what you can do with it a month later. Flattened HTML with custom CSS freezes the design at the moment of conversion; every real Kadence block styled through native attributes keeps the page editable, responsive and on-palette for whoever opens it next.
The pipeline that gets you there is boring on purpose: map to real blocks, style through attributes, validate against Kadence's own rules, and write nothing without approval. The six walkthroughs above are the same pipeline pointed at different sources — section, page, URL, screenshot, email, refinement.
Kadence Pro is included in the NibWP Bundle, or available as a standalone Pro Skill — see pricing for both. New to the setup? Start with connecting your AI client to WordPress over MCP, or explore everything Kadence can do over MCP on the Kadence + MCP page. Building for Elementor instead? The same native-output rule applies in converting a design to an editable Elementor page.