Unblock vs Kadence Blocks: I Built the Same Site on Both

I rebuilt the same client homepage on Unblock and Kadence Blocks. Kadence won Lighthouse and lock-in, Unblock won markup, AI build speed and price. Full results.

Disclosure: I earn a commission if you buy Unblock through the links on this page, at no extra cost to you. Kadence is linked plainly, with no affiliate link. Neither company saw this post before it went live, and nothing in it was paid for.

Kadence Blocks is the safer pick for most WordPress sites, and Unblock is the better tool if you write HTML and CSS yourself or build with AI agents. I rebuilt the same real client homepage on both, pixel for pixel, and Kadence won the scores you can measure from outside (Lighthouse, accessibility, what survives when you switch the plugin off), while Unblock produced the leaner page, the cleaner markup, the faster AI build and the far cheaper licence for anyone with more than one site.

The homepage belongs to Wrapaholic Breda, a Dutch car wrapping studio, so the copy in every screenshot is Dutch. It has a sticky header with a full screen mobile menu, a video hero with a rotating circular badge, 8 service tiles, an about block with stats and pillars, a draggable project strip, a contact section with a quote form, a footer with a giant outlined word, and a fixed contact bar on phones. I built it in November 2026 on identical local installs of WordPress 7.1.4 and PHP 8.5: Unblock 1.0.0 on the free Unblock Theme 1.0.0, and Kadence Blocks 3.9.1 + Blocks Pro 2.9.1 on the Kadence theme 1.6.0 + Kadence Pro 1.3.0. Both versions match the original design with under 0.2% pixel difference at 1440, 768 and 390 pixels wide, so every difference below comes from how each builder gets there.

Quick verdict

  • Pick Unblock if you or your team are comfortable with HTML and CSS, you build custom designs for clients, you want an AI agent to do the building, or you run more than a handful of sites. In my build it shipped 477 DOM nodes against 658, needed 2 check runs against 6, and costs $129 a year for 10 sites against $599.
  • Pick Kadence if the site owner will edit the pages alone, you want native components (a header builder, a background video, a form with validation and email delivery), you want a free version to start on, or you cannot accept a blank page if the builder plugin is ever removed.
  • Either is fine for a developer building one site for themselves. Both reached a pixel perfect result, and both needed about 31 KB of custom CSS to get there.
  • For a WooCommerce store, Kadence with its Shop Kit add-on gives you swatches and WooCommerce’s own variation logic without picker code, while Unblock built the lighter, shift free product page (27 requests against 58, CLS 0 against 0.03) with its own 6.6 KB cart script.

Kadence vs Unblock at a Glance

UnblockKadence Blocks
OwnerThemeone (Loïc Blascos, maker of WP Grid Builder)Liquid Web and Nexcess (StellarWP)
Free versionNone, and no trial (a live demo only)Kadence Blocks and the Kadence theme are free on WordPress.org
WordPress.orgNot listedBlocks: 600,000+ installs, 96 out of 100 from 334 ratings. Theme: 500,000+ installs, 98 out of 100
Current version1.0.0, released 10 November 2026Blocks 3.9.1 (11 November 2026), theme 1.6.0
Minimum WordPress and PHPWP 6.7, PHP 8.1WP 6.6, PHP 7.4
Cheapest paid plan$69 a year, 1 site$350 a year, 1 site (bundle)
Lifetime option$499 once, 1,000 sitesNone
Biggest yearly plan100 sites, $199 a year100 sites, $999 a year
EditorBlock editor with docked JavaScript, HTML and CSS panels per blockBlock editor, plus the Customizer, Elements and a separate form post
Styling modelReusable CSS selectors and variables, with visual panels that write the same CSSPer block settings, one value per device, global palette
Header and footerBlock theme template parts in the Site EditorCustomizer Header Builder, footer as a Kadence Pro Element
FormNative form element, server handles deliveryAdvanced Form block with validation, AJAX and email action
Code shipped (HTML, CSS, JS, fonts)390 KB (27 KB without fonts)151 KB
JavaScript shipped8.2 KB15.8 KB
DOM nodes477658
Lighthouse mobile / desktop70 / 9684 / 99
Lighthouse accessibility96100
Plugin switched offBlank page, 0% of the text left91% of the text left, still styled
WooCommerce product page code467 KB (363 KB fonts), 59 KB JS, 27 requests288 KB, 115 KB JS, 58 requests
WooCommerce mobile Lighthouse / CLS76 / 081 / 0.03
AI build effort352K tokens, 2 check runs, 19 minutes479K tokens, 6 check runs, 36 minutes
Best forDevelopers and agencies building custom designs, often with AISites the owner edits, and anyone who wants native components
Vendor pricing pages, the WordPress.org API and my own test sites, all checked on 12 November 2026

How Each One Thinks

These two plugins live in the same block editor and solve the problem from opposite ends.

Unblock turns every block into one HTML element. There is one block type, unblock/element, and you choose its tag (section, div, a, video, form, dl, svg) and its attributes in an Attributes panel. Styling lives in reusable CSS selectors that Unblock stores globally and prints only on the pages that use them. Select any block and three code editors dock at the bottom of the screen: JavaScript, HTML and CSS for that block. Twig expressions work inside text, which I used once to keep a straight apostrophe in “foto’s” away from WordPress’s texturizer.

That last point matters, because the build log I worked from says Unblock “has no style controls”, and that is wrong. The inspector has visual Layout, Sizing, Spacing, Borders, Typography, Background and Effects panels, and they edit the same selector you see in the CSS editor. Change a border in the panel and the line appears in the code. Edit the code and the panel updates. You are always working on a reusable class, never on a one off block style.

Kadence gives you purpose built blocks: Row Layout, Section, Advanced Text, Advanced Buttons, Icon, Image, Advanced Form. Each one has Layout, Style and Advanced tabs with a value per device (desktop, tablet, mobile). Global colours come from the Kadence Global Palette, typography from the Customizer, and the header from the Customizer Header Builder. Anything the controls cannot express goes into Customizer Additional CSS and, with Kadence Pro, into a footer scripts box.

The page counts show the difference. My Unblock homepage is 243 blocks in the page body and 364 with the header and footer, because every span and svg is a block. The Kadence page is 181 blocks, plus 20 in the footer Element, 5 in the mobile bar and 7 in the form, and the header has no blocks at all because it is Customizer settings.

That second caption is the first practical difference you hit. Unblock’s editor canvas shows the finished design. Kadence’s editor does not load the Customizer Additional CSS, so in my build the rotating badge was a plain white disc, the project strip was a tall stack of cards and nothing had its glass effect until I opened the front end. If a client edits the page, they edit a version that does not look like their site.

Header and Mobile Menu

The design needed a transparent header that turns solid after 12 pixels of scrolling, hides when you scroll down past 320 pixels and comes back on scroll up, a pill shaped navigation with a blurred glass background, WhatsApp and quote buttons, and a full screen numbered mobile menu that opens with a clip path reveal.

In Unblock the header is the Unblock Theme’s header template part, edited in the Site Editor. It is one Site header element holding an inline SVG sprite of 16 icons, a skip link, the header bar and the mobile menu overlay: 57 blocks, 6 levels deep. There is no header widget or menu component, so every link is an anchor element, and the scroll behaviour, menu toggle, Escape key, scroll lock and aria-current are a 1,355 byte block script on the Site header block. Styling is 23 selectors in a Header collection, 5,205 bytes.

In Kadence the header is pure Customizer: logo on the left, Primary Navigation and two Kadence Pro buttons on the right, a mobile row with a trigger, and the off canvas drawer switched to the Fullwidth layout. The drawer JavaScript, including Escape, aria-expanded and scroll lock, is Kadence’s own, and the menu comes from a normal WordPress menu with aria-current built in. That is a lot of work you do not have to do.

Kadence still needed 6,602 bytes of Additional CSS here, the most of any section, because the Customizer has colours and typography for header items but no pill container, no blur and no per item gap. Header button labels are escaped text, so the WhatsApp icon went in as a CSS mask. And Kadence’s sticky “reveal on scroll up” hides the header from the first scrolled pixel, which is not what the design does, so I switched it off and replaced it with 688 bytes of JavaScript.

HeaderUnblockKadence
Blocks57 (6 levels)0, it is Customizer settings
Custom CSS5,205 bytes6,602 bytes
Custom JS1,355 bytes (everything)688 bytes (scroll behaviour only)
Native menu and drawerNoYes

Two small things went wrong on both sides. Unblock’s template part wraps the design in its own header tag that cannot take a class, so the real header is a div inside it, and WordPress adds its own hidden “Skip to content” link next to the design’s “Naar inhoud” link. Kadence mangled the relative menu URL “./#diensten” into “http://./#diensten”, and Unblock’s URL sanitising did exactly the same to “./” links, so on both I used root relative links instead.

Winner for this section: Kadence. A native drawer with proper keyboard handling and a real WordPress menu beats hand writing them, even after the extra CSS.

Video Hero

The hero is a full screen autoplaying video with a poster, a dark gradient overlay, an eyebrow, the H1, two glass pill buttons, a round play and pause toggle, and a badge with text running around a circle.

In Unblock the hero is one section element, 22 blocks and 7 levels: a background div with a real video element and two source elements, the rotating badge as an inline SVG with a textPath, and a container with the copy and buttons. Autoplay, muted, loop and playsinline are just attributes you type in the Attributes panel. There is no background video setting. A 756 byte block script handles the toggle, reduced motion and pausing off screen.

In Kadence the hero is one Row Layout with its background set to video in the Style tab: a local file, muted and looped, with a poster and Kadence’s own play and pause buttons. Inside sit two Sections for the copy and the badge: 12 blocks, 5 levels. That is the native way, and it is quicker to click together. But the text ring around the badge needed a Custom HTML block (324 bytes of SVG), because no Kadence block puts text on a path. The height clamp of 620 pixels to 960 pixels could not be set, because the Row min height takes one unit for all devices and has no maximum, and Kadence also puts a min height on the inner column that overflowed by 2.5 pixels until I reset it.

The native video buttons have hard coded English aria-labels, no reduced motion handling, no off screen pause and no sync with the video state. Fixing that for a Dutch site took 1,121 bytes of JavaScript, more than Unblock’s whole hero script.

HeroUnblockKadence
Blocks22 (7 levels)12 (5 levels) + 1 Custom HTML
Custom CSS2,136 bytes3,447 bytes
Custom JS756 bytes1,121 bytes
Native video controlNo, a video elementYes, background video

Winner for this section: Unblock. Kadence has the native control, and still ended up with more CSS, more JavaScript and a raw HTML block than Unblock’s hand built hero.

Service Tiles

Eight linked tiles in a 4 column grid (2 on tablet and phone), each with a number, a line icon, a title and a subtitle, a photo that fades in on hover, a gradient overlay, and a frosted glass call to action tile at the end.

In Unblock the Diensten section is 71 blocks, 6 levels. Each tile is an anchor element containing an image from the media library (with srcset and sizes), a number span, an SVG icon, a title, a subtitle and an arrow badge. The grid, hover zoom and overlays are 13 selectors in a Services collection, 3,744 bytes, and no JavaScript. One quirk: Unblock prints each selector’s media query variants right after that selector, so a couple of descendant specificity tricks from the original stylesheet had to become modifier classes.

In Kadence it is also 71 blocks and 6 levels, built as a Row Layout with a nested 4 column Row of Sections. Each tile is a Section turned into a link with the Overlay Link option, and the hover photo is set natively under Style, Background, Hover. That is a nice feature, and it is visual. The icons are Kadence Icon blocks with Kadence Pro Custom SVG files, which come out filled, so line icons needed a fill:none rule. Kadence also centres Section grids on mobile with justify-content, which I had to reset, and since the theme CSS loads after Additional CSS inside the main element, several resets needed a #wrapper prefix to win. Total: 3,661 bytes of CSS.

Winner for this section: Kadence, narrowly. Same block count and the same amount of CSS, but the hover image and the linked Section are things a non developer can change without touching code.

About, Stats and Pillars

A two column intro with uneven columns (1fr and 1.1fr), three stats, a photo with a frosted caption, and four pillars with dividers that reflow on tablet and phone.

In Unblock it is 33 blocks, 6 levels. The stats are a real description list (dl, dt, dd), the pillars a real unordered list, and the photo a figure element with a figcaption. Semantics come from picking the HTML tag, not from a widget. The CSS is 12 selectors and 1,966 bytes.

In Kadence it is 32 blocks but 7 levels: a Row with a Section holding nested Row Layouts for the intro, a 3 column stats Row and a 4 column pillars Row, with every text item as Advanced Text and the photo as a Kadence Image with a caption. The 1fr 1.1fr split cannot be set in the Row or Section UI, which only offers preset and percentage widths, and fluid clamp() sizes are not possible because Kadence takes one value per device. That came to 2,224 bytes of CSS.

Winner for this section: Unblock. Better HTML, one level shallower, and the uneven grid is one line of CSS in the place you expect it.

Project Strip

A horizontal strip of six project cards and a portfolio card that snaps as you scroll, with round previous and next buttons that move one card, and mouse drag on desktop.

In Unblock it is 41 blocks: a heading row with two buttons and a Project strip div with seven cards. The strip is overflow scrolling with scroll snap in the strip rule (1,633 bytes of CSS for the section), and a 1,048 byte block script moves it by one card and adds drag. There is no carousel block, so this is HTML, CSS and a script. In the editor you see the strip as it looks on the site.

In Kadence it is 38 blocks: a header Section with two icon only Advanced Buttons and a strip Section with seven card Sections, each with a Kadence Image. No Kadence carousel option behaves like a native scroll snap strip with an end card, so the scroll is Additional CSS (2,285 bytes) and the buttons and drag are 1,261 bytes of footer JavaScript. In the editor the cards stack vertically, because the editor does not load Additional CSS, so you are editing seven tall cards that look nothing like the front end.

Winner for this section: Unblock. Both needed custom code, Unblock needed less of it, and its editor shows what the visitor sees.

Contact and Quote Form

Contact details and opening hours with a live open or closed status in Amsterdam time, today’s hours in bold, and a quote form with service chips, three fields, a message box, validation and a success message.

In Unblock this is the biggest section: 76 blocks, 7 levels. The form is Unblock’s own form mechanism, a plain form element with a data-unbk-form attribute. Unblock injects the action URL, a honeypot and a timestamp on the server and handles delivery. Every input, label, fieldset and legend is a real element. What the native form does not do is client side validation or an inline success state, so a 1,819 byte block script validates required fields, posts with fetch and swaps in the thank you message, and a 774 byte script on the contact info computes the open status. This section is also where the visual controls show best: Borders, Typography and Background panels sit next to the CSS editor and write into the same contact rule.

In Kadence the contact section is a 2 column Row with Advanced Text for the details, and the form is a Kadence Advanced Form block pointing at a separate form post: a checkbox group, three text fields, a textarea and a submit button with an SVG icon. Required validation, AJAX submit, an Email action and “hide form after submit” are all native, so no form script was needed. The open status still needed 805 bytes of JavaScript. The friction was in the details: the form wrapper ignores the block className, there is no half width field option (the two up fields are CSS grid), the pill checkboxes are CSS, and the validation strings stay English unless you install the Dutch language pack.

ContactUnblockKadence
Blocks76 (7 levels)28 on the page + 7 in the form post
Custom CSS6,607 bytes5,447 bytes
Custom JS2,593 bytes805 bytes
Native validation and success messageNoYes
Delivery handled by the builderYesYes, Email action

Winner for this section: Kadence. A proper form block with validation and a success state is worth more than markup purity on the one section that takes leads.

Footer

A 4 column footer (brand, services, more links, workshop address), a giant outlined “Wrapaholic” word across the full width, and a bottom bar with the current year.

In Unblock it is the Unblock Theme’s footer template part: one Footer element, 54 blocks, 7 levels, with real ul, li and h4 elements for the link columns, the giant word as a single div with CSS text stroke, and a 100 byte script for the year. 2,198 bytes of CSS. Like the header, the template part wraps it in a footer tag you cannot class.

In Kadence I did not use the theme’s Footer Builder, because the design is a full block layout. It is a Kadence Pro Element of the Content Section type, placed on the replace footer hook for the whole site: 20 blocks, a Row Layout rendered as a footer tag with a 4 column grid, the giant word and the bottom bar. The 1.4fr 1fr 1fr 1fr columns and the giant word sizing are Additional CSS (1,839 bytes), plus 89 bytes of JavaScript for the year. Elements print their block CSS after Additional CSS, so my overrides needed higher specificity.

Winner for this section: Unblock, narrowly. Kadence used fewer blocks, but it needed a Pro add on, a hook and a specificity fight. In Unblock the footer sits where a block theme expects it.

Mobile Contact Bar

A fixed pill bar at the bottom of the screen on phones with call, WhatsApp and quote buttons, hidden while the menu is open or the form has focus.

In Unblock the bar is a nav element in the footer template part, 10 blocks, with three anchors. It is hidden on desktop and becomes the fixed bar inside a 680 pixel media rule (974 bytes of CSS). It has no script of its own: it hides through classes the header and form scripts already set on the html element. One friction point: the design’s breakpoints are 1080, 680 and 380 pixels, Unblock’s presets are 780 and 360, so I created new site at rules.

In Kadence it is a second Kadence Pro Element hooked after the footer: one Section rendered as nav with an Advanced Buttons block of three buttons and SVG icons, 5 blocks. Fixing it to the bottom, the glass and hiding it with the drawer open is 1,129 bytes of CSS, and hiding it while the form has focus is 314 bytes of JavaScript. On a desktop width editor canvas the bar renders empty, so you have to switch to the Mobile preview to see it.

Winner for this section: Unblock. Less CSS, no extra script and no second Element to keep track of.

Section tally: Kadence takes the header, the service tiles and the form, Unblock takes the hero, the about block, the project strip, the footer and the mobile bar. Kadence wins where it has a mature native component. Unblock wins wherever the design asks for something no component offers, which on a custom agency design is most of the page.

Design System, Fonts and Global Styles

Unblock has a Variables manager. My build holds 120 CSS custom properties on :root in collections for Colors (34, in HSL), Spacing (36), Typography (25, including fluid clamp() sizes), Effects (20 radii, shadows, gradients and easing values) and Layout. Every colour, size, radius and shadow in every component rule reads a token. Selectors live in 11 collections (156 selectors in total), and there are 11 at rules for breakpoints, hover, reduced motion and keyframes. Fonts are installed through the WordPress Font Library from Unblock’s Fonts tab and served from the uploads folder, with no request to Google.

Kadence uses the Global Palette: 10 colour slots that every block references by name, which is excellent when a client wants to change the brand colour in one place. Typography sits in the Customizer (Inter Tight body, headings inheriting it at weight 500), with Kadence Blocks typography for the JetBrains Mono labels. Spacing and fluid sizes are where Kadence stops: there is no clamp() support in the controls, so my Additional CSS maps the palette to its own tokens for the fluid sizes.

My verdict here: Unblock is a real design system in the developer sense, Kadence is a friendlier one for site owners. If you think in tokens, Unblock. If your client needs to recolour the site without help, Kadence.

Custom CSS and JavaScript: How Much Each Needed and Where It Lives

This is the number people ask about first, and the answer surprised me. Both builds needed almost the same amount of CSS. The difference is where it lives and how it is organised.

Bar chart comparing custom CSS and JavaScript bytes in the Unblock and Kadence builds
Custom code in both builds, from the build logs
UnblockKadence
Custom CSS31,394 bytes as served (33,666 source)31,612 bytes of rules (33,560 with comments)
Where the CSS lives156 named selectors in 11 collections, printed only on pages that use themOne Customizer Additional CSS box, printed on every page
Custom JavaScript5,852 bytes in 6 block scripts4,550 bytes in one footer script
Where the JS livesOn the block it belongs to, bundled into one deferred fileKadence Pro Custom Scripts, footer
Raw HTML blocksNone1 (the badge ring, 324 bytes)
Bytes from the build logs and sections.json of both sites

In Unblock, CSS is the builder, so “custom CSS” is a slightly unfair label: those 31 KB replace the per block settings Kadence stores in block attributes. In Kadence, the 31 KB is on top of everything Kadence generates itself, and it lives in one long box nobody on a client team will want to touch. When I needed to find the strip script in Kadence, I scrolled a single footer file. In Unblock I clicked the strip.

The honest catch on the Unblock side: a few things are fiddly. Universal selectors like *, ::selection and :focus-visible need a global scope flag, and a test keyframe I created while probing the parser could not be removed through the CSS tool and still prints about 40 bytes on the page.

Performance: What Each One Ships

I measured both homepages the same way: compressed transfer by type, DOM size, unused CSS and JavaScript, and Lighthouse as the median of three runs on mobile and desktop. The hand coded original is the baseline.

Bar chart of code shipped, JavaScript, DOM nodes and requests for Unblock, Kadence and the hand coded original
What each build ships, compressed, hero video excluded
Hand codedUnblockKadence
Code shipped (HTML, CSS, JS, fonts)96 KB390 KB151 KB
Of which fonts75 KB363 KB65 KB
JavaScript2.9 KB8.2 KB15.8 KB
HTML document, uncompressed22 KB89 KB315 KB
CSS total / unused64 KB / 71%50 KB / 44%384 KB / 75%
DOM nodes / max depth449 / 10477 / 12658 / 23
Requests171822
Lighthouse mobile767084
Lighthouse desktop979699
Mobile first contentful paint1.6 s3.0 s1.4 s
Lighthouse accessibility9696100
My measurements on identical local installs, November 2026; Lighthouse is the median of 3 runs

Strip the fonts out and Unblock ships 27 KB of HTML, CSS and JavaScript, which is close to hand written code. Its DOM is 477 nodes against the original’s 449, and the deepest node is 12 levels down. Kadence ships 658 nodes up to 23 levels deep, a 315 KB HTML document because 232 KB of CSS is inlined into it, and three quarters of the CSS it loads goes unused on this page. On markup, Unblock wins clearly.

So why did Kadence score higher? Two reasons. First, fonts: Unblock served 363 KB of font files against Kadence’s 65 KB. Kadence’s “Load Google Fonts Locally” and “Preload Local Fonts” options load only the weights in use, while the Unblock build installed ten Inter Tight faces plus Instrument Serif and JetBrains Mono through the Font Library. That is the single biggest gap between them and the most likely reason Unblock’s mobile first paint landed at 3.0 seconds against 1.4. It is fixable by installing fewer faces, and I left it as built because I tested each builder the way its own setup produced it. Second, on every page in this test, mobile included, the largest contentful paint is the 2.3 MB hero video, so the mobile scores mostly measure how the video loads. Desktop, where the video matters less, is 96 against 99.

Accessibility: Kadence scored 100, Unblock 96. Unblock’s one axe violation is a colour contrast issue that the original design has too, so Unblock reproduced it faithfully. Kadence ended up without it.

My take: Kadence won the scores, Unblock won the code. If you trim Unblock’s fonts, I would expect the gap to close, but I did not test that, so I will not claim it.

Building It With AI

Unblock sells itself on AI building, so I also had an AI agent build each version from the same written brief, with the same pixel comparison as the finish line. That measures how easy each builder is to drive from text, which is where a lot of agency work is heading.

AI buildUnblockKadence
Tokens used352,000479,000
Pixel check runs to pass26
Time to a passing build19 minutes36 minutes
Final pixel difference at 1440 / 768 / 3900.003% / 0.003% / 0.002%0.091% / 0.112% / 0.134%
Same brief, same agent, same comparison harness

Unblock was the cheapest and fastest build of the six builders I tested, and Kadence was among the slowest. The reason is the model. An agent thinks in HTML and CSS already, and Unblock’s blocks are HTML elements with CSS selectors, so there is almost nothing to translate. Unblock also exposes its own abilities (create post, insert blocks, update CSS, install fonts) that the agent called directly, and it ships an MCP Bridge for WordPress 6.9 and newer with 16 listed MCP tools and 31 more through the adapter, which connects clients like Claude Code, ChatGPT and Cursor. Its built in assistant, Unbot, uses your own API key through the WordPress AI connectors; I did not use it for this build.

Kadence has to be translated. The agent generated Kadence block markup through the block editor itself, so that every static block carried exactly the HTML its save function expects, and it still needed six comparison runs to chase down Kadence’s defaults: the inner column min height, the mobile centring, theme CSS that loads after Additional CSS, the filled SVG icons. A human hits the same walls, just more slowly.

Lock-in: Switch the Builder Off

I deactivated each builder plugin, left the theme on, and measured what survived on the homepage.

Plugin switched offUnblockKadence
Text still visible0%91%
Links still there0 of 4426 of 44
Form fields0 of 40 of 4
Hero videoGoneGone
Page height (original 5,772 px)900 px, empty7,774 px, sections stacked
Lock-in test on both local sites, theme left active

Kadence’s blocks save their HTML into the post, so with the plugin off WordPress still prints the content, and the theme, the Customizer header, the Additional CSS and the Kadence Pro Elements keep most of it styled. The tiles stack and the form disappears, but a visitor could still read the page and call the studio.

Unblock renders its elements on the server. Without the plugin there is nothing to render them, and since the Unblock Theme’s header and footer parts are Unblock elements too, the page is empty. This is the price of Unblock’s model, and you should decide up front whether you accept it. If you stop renewing, the plugin keeps working and only updates, AI and support stop, so the risk is removing it, not lapsing.

Winner: Kadence, by a mile.

WooCommerce: the Same Product Page on Both

A homepage tells you how a builder handles layout. A shop tells you how it handles data, so I went one step further and built a WooCommerce single product template on both sites, against a hand coded reference page that uses the same header, footer and design tokens as the homepage. Both builds run WooCommerce 11.3.0 on the same WordPress 7.1.4 installs as before.

The template had to serve two real products from the Wrapaholic shop. The first is the AlloyGator velgbescherming (wheel protection rings), a variable product with 7 rim sizes from 16 to 22 inch and 5 colours: 35 variations, with the price depending on the size. The second is the XPEL PPF Compact pakket, a simple product on sale from € 895 to € 795. One template had to render both: gallery with thumbnails and a lightbox, breadcrumb, title, price, short description, size buttons and colour swatches with the chosen value next to the label, a variation box with live price and stock note, a quantity stepper, tabs with a renamed “Specificaties” tab, a related product card with a promo banner, and a product bar with the live price on phones.

Hand coded reference product page for the AlloyGator wheel protection set at 1440 pixels wide
The hand coded reference: the AlloyGator product page both builders had to match at 1440, 768 and 390 pixels

The finish line was the same as for the homepage: under 1% pixel difference at all three widths on both products, and a real cart test. On both builds I chose 20 inch and Rood (red), set the quantity to 2, and got € 498,00 in the WooCommerce cart with the right variation on the line.

How each one builds the product template

Unblock has WooCommerce data built in. The template reads the current product straight in Twig: post.price_html, post.product_gallery, post.attributes, post.variations, post.is_on_sale, SKU and stock. There is no product template builder with display conditions, because Unblock uses the block theme’s template hierarchy, and that is where I hit its biggest WooCommerce limitation. WooCommerce registers a template called single-product, and every Unblock tool refused to write to that name (“Both a template and a template part have this id”), because WordPress looks templates up by slug without checking the type. Unblock also cannot place WooCommerce’s own blocks in a template. The workaround was clean but manual: a single product template written once with WP CLI that only holds three template parts (header, product, footer), and the whole product page built with Unblock inside a new template part of 193 blocks.

Kadence does it with Kadence Shop Kit, its paid WooCommerce add-on (version 3.0.10, installed from the vendor zip). Shop Kit adds a Woo Templates post type: one Single Product template assigned to all products in a Template Settings sidebar, built from Kadence Row Layouts around Shop Kit’s “Product:” blocks (gallery, title, price, excerpt, add to cart, tabs, upsell). It worked without entering a licence key; the licence only drives updates. The whole template is 67 blocks, plus 9 in the product card template and 5 in the mobile bar Element. Kadence’s pricing page does not say which bundle includes Shop Kit, so check that before you count on it.

The variation picker is where the two models split completely. In Unblock the picker is generated, not placed: a Loop over post.attributes renders one fieldset per attribute, an inner Loop renders the buttons, and a Condition sends the colour attribute to swatches and every other attribute to pill buttons. Each swatch colour is a design token named after the colour term, so adding a colour means adding one token. The buttons sit on a real WooCommerce add to cart form, and a 6.6 KB block script matches the choice against the product’s variations, updates price, stock note and SKU, sets the variation ID and posts to WooCommerce’s AJAX endpoint. Without JavaScript the form still adds the right variation through WooCommerce’s own form handler; I tested that too.

In Kadence the picker is WooCommerce’s own variation form, printed by the Shop Kit Add to cart block and dressed by Shop Kit Variation Swatches. You set the swatch type on the WooCommerce attribute itself (Radio Boxes for the size, colour swatches for Kleur) and a colour on each term, and WooCommerce’s variation script stays in charge of price, SKU, image and variation ID. That is less code to own. The catch is everything around the form: the chosen value next to the label, the “Keuze wissen” reset button, the stock note and two Dutch labels needed 3.9 KB of template JavaScript, and turning Woo’s variation table into the reference pills took 5.4 KB of the template CSS. With 35 variations the product is also over WooCommerce’s limit of 30 for loading variations up front, so every click is an AJAX request with a loading overlay, and only a PHP filter changes that limit.

Two more editor differences matter in daily use. Kadence’s Shop Kit blocks render a real product while you edit (you pick the preview product), although the canvas does not load the template’s own custom CSS, the same blind spot as on the homepage. Unblock’s template part has no product context in the editor, so you see “Product Title”, grey “Image” boxes and “No results” in the loops until you view the front end.

Product templateUnblockKadence (Shop Kit)
Where it livesTemplate part in the Site Editor, inside a 3 part single product templateShop Kit Woo Template (post type), display rule Single Product, all
Add-onsNoneKadence Shop Kit 3.0.10 (no key entered)
Blocks19367, plus 14 in the card template and mobile bar
Variation pickerOwn buttons on a real Woo form, 6.6 KB scriptShop Kit swatches on Woo’s form, no picker script
Custom CSS25.7 KB (incl. about 3 KB of new tokens)35.6 KB in the template’s custom CSS
Custom JavaScript6.6 KB (gallery, tabs, variations, cart, toast, bar)3.9 KB (labels, reset, stock note, bar)
Store settings changedColour term order onlyTerm order, attribute types, swatch colours, image sizes 800 px, Kadence quantity buttons
Build time and pixel runs21 minutes, 2 runs per product27 minutes, 9 runs (AlloyGator) and 5 (PPF)
From my build logs and editor captures, November 2026. Build time is the same AI agent working from the same written brief.

WooCommerce results

Both pages passed. The numbers below are for the variable AlloyGator page, compressed transfer, with Lighthouse as the median of 3 runs.

AlloyGator pageHand codedUnblockKadence (Shop Kit)
Code shipped (HTML, CSS, JS, fonts)104 KB467 KB (363 KB fonts)288 KB
JavaScript5 KB59 KB115 KB
Requests142758
DOM nodes388453654
Lighthouse mobile / desktop95 / 10076 / 9981 / 99
Mobile CLS000.03
Lighthouse accessibility999994
Variation pickerstaticOwn buttons on a real Woo form, 6.6 KB JSShop Kit swatches on Woo’s form, no picker JS
Pixel difference 1440 / 768 / 390n/a0.16% / 0.22% / 0.34%0.85% / 0.59% / 0.97%
Cart test (20 inch, Rood, x2)n/a€ 498,00, passed€ 498,00, passed
My measurements on local test sites, November 2026. Images are not counted in code shipped.

The homepage pattern repeats with one twist. Unblock’s fonts are again its single biggest cost: without them its page is about 105 KB of code against about 224 KB for Kadence. And most of Unblock’s 59 KB of JavaScript is not Unblock: WooCommerce enqueues jQuery, its cart scripts and order attribution on every product page even though this template uses none of them, and no setting removes them. The twist is that on this page Unblock scored higher on accessibility (99 against 94; Lighthouse flagged a link without a name on the Kadence page) and needed 27 requests against 58.

Store settings were not identical, and two of them show up in the screenshots. Kadence’s build raised WooCommerce’s image sizes to 800 pixels to match the reference, so its page loads 358 KB of images against 155 KB on Unblock. Both stores keep 2 decimals so the cart reads € 498,00, but Unblock’s template strips “,00” on the product page in Twig, so it shows € 219 where Kadence shows € 219,00. That and Woo’s softer 100 pixel gallery thumbnails are most of Kadence’s remaining pixel difference.

The layout shift on phones

The one result that can hurt a store in search is layout shift on mobile, and both builders did well here, for different reasons. Unblock scored a CLS of 0: its main image box has a fixed 1:1 aspect ratio with width and height on the image, and WooCommerce’s gallery script never runs because Unblock draws its own gallery. Kadence scored 0.03. Its template CSS already sizes the main image, so the only movement comes when WooCommerce’s slider wraps the gallery after the page loads and builds the thumbnail strip, which makes the gallery 49 pixels taller and pushes the summary column down. That is well under Google’s 0.1 limit.

Why the page jumps on phones

WooCommerce’s gallery slider lays every gallery image out at full width for a moment before it starts, so on a phone the gallery briefly grows to around 3,600 pixels and everything next to or under it jumps. Builders that leave Woo’s gallery alone scored a mobile CLS of 0.47 to 0.49 in my six builder test. Templates that reserve the main image box barely move: Unblock because it draws its own gallery at a fixed 1:1, Kadence because its template sizes the main image.

The fix is a few lines of CSS on any builder: give the gallery’s main image wrapper an aspect-ratio: 1 / 1 (or your image ratio), and reserve the height of the thumbnail row so it does not appear late.

My WooCommerce verdict

For a WooCommerce store, I would pick Kadence with Shop Kit when the store owner adds products and expects standard WooCommerce behaviour: swatches set per attribute, WooCommerce’s own variation logic, a live product preview in the editor, and extensions that hook into the normal add to cart form. I would pick Unblock when a developer owns the template and wants a custom product page with fewer requests, no layout shift and the closest match to the design, and is happy to own the 6.6 KB of cart and variation JavaScript that comes with it. Trim Unblock’s fonts first, and keep in mind that its single product template needs a one time workaround.

Pricing in 2026

Both companies sell yearly plans, and that is where the similarities end.

Unblock

PlanPriceSitesBlack Friday
Starter$69/yr1$48.30
Professional$129/yr10$90.30
Agency$199/yr100$139.30
Lifetime$499 once1,000$349.30
unblockwp.com/pricing, checked 12 November 2026. Black Friday prices run until 1 December. Every plan has every feature, AI assistant included; local and staging sites do not count; 14 day refund

Kadence

SitesPrice per yearPer site
1$350$350
10$599$59.90
25$799$31.96
50$899$17.98
100$999$9.99
liquidweb.com/software/kadence, checked 12 November 2026. One bundle with Kadence, Give, The Events Calendar and LearnDash; no lifetime plan; 30 day refund under the Kadence terms

Kadence does have something Unblock does not: a free tier. Kadence Blocks and the Kadence theme are free on WordPress.org, and a lot of this homepage could be built with them. My build used Pro features though: the two Elements for the footer and mobile bar, the second header button, the custom SVG icons and the custom scripts box. Kadence no longer sells Blocks Pro or Kadence Pro on their own, so getting those means the bundle.

What you needUnblockKadenceCheaper
1 site, free onlyNot possible$0Kadence
1 site, everything$69 a year$350 a yearUnblock
10 sites$129 a year$599 a yearUnblock
25 sites$199 a year (Agency)$799 a yearUnblock
100 sites$199 a year$999 a yearUnblock
Lifetime$499 once, 1,000 sitesNot offeredUnblock
Bar chart of three year cost for ten sites on Unblock Professional, Unblock Lifetime and Kadence
Ten client sites over three years at list price

The comparison that should decide it for freelancers

Ten client sites cost $129 a year on Unblock Professional and $599 a year on Kadence. Over three years that is $387 against $1,797. Unblock Lifetime at $499 once covers 1,000 sites, which is less than one year of the Kadence 10 site plan.

Kadence gives you more product for the money, since Give, The Events Calendar and LearnDash come in the bundle. If you do not need those, you are paying for them anyway.

When Unblock Makes Sense, and When It Does Not

Unblock suits developers and designers who already write HTML and CSS and want the block editor to stop fighting them. It suits agencies building custom designs, because every section in my test that had no matching Kadence component was quicker and leaner in Unblock. It suits teams using AI agents, because the agent writes what it already knows. And it suits anyone who cares about markup: 477 DOM nodes, real dl, figure, fieldset and nav elements, and 27 KB of code before fonts.

Unblock does not suit a client who will edit the site alone. The visual panels help, but they still edit a CSS class, and a client changing the padding on one tile will change it on all eight. It does not suit people who want ready made components: there is no slider, no header builder, no background video setting, no form validation. It does not suit anyone who needs a free start or who cannot live with a blank page if the plugin ever goes, and it is a 1.0.0 release from November 2026, which it reached on 10 November 2026, against Kadence Blocks’ eight years on WordPress.org.

Kadence suits sites the owner maintains, freelancers who want native header, form and video features, and anyone starting on the free plugin. Kadence does not suit custom designs that need fluid sizes, uneven grids or glass effects without writing CSS anyway, and in my build that CSS ended up in one Customizer box the editor does not even load.

Pick Unblock if

  • You write HTML and CSS and want each block to be exactly one element.
  • You build custom client designs where no ready made component fits.
  • You build with AI agents or plan to, through its abilities or its MCP Bridge.
  • You run 10 or more sites and want $129 a year, or $499 once for up to 1,000.
  • You want a custom WooCommerce product page with no layout shift, and you are fine owning its cart JavaScript.
  • You accept that switching the plugin off leaves a blank page.

Pick Kadence if

  • Your client will edit the site without you.
  • You want a native header builder, off canvas menu, background video and validated form.
  • You want a free version first, with 600,000 installs and eight years of history behind it.
  • You want the higher Lighthouse and accessibility scores out of the box.
  • Losing the builder plugin one day must not take the content with it.
  • You run a WooCommerce store and want product templates and swatches from an add-on (Shop Kit) instead of code you maintain.

Pros and Cons

My verdict on Unblock

Unblock

4.0/5

The best builder I tested for developers and AI driven agencies: the leanest markup, the fastest build and the lowest price per site. Held back by heavy default fonts, total lock-in and a very young release. On WooCommerce it built the cleaner product page, with the cart logic in your own hands.

What works

  • Every block is one HTML element, so the page shipped 477 DOM nodes and 27 KB of code before fonts
  • Visual panels and a two way synced CSS editor working on reusable selectors and 120 design tokens
  • Editor canvas matches the front end
  • Fastest AI build of all six builders: 352K tokens, 2 check runs, 19 minutes
  • $129 a year for 10 sites, or $499 once for 1,000
  • WooCommerce product page with 27 requests, CLS 0 and accessibility 99, reading product data straight in Twig

What does not

  • Blank page with the plugin switched off
  • No native header, menu, slider, video or form validation components
  • 363 KB of fonts in my build pulled mobile Lighthouse down to 70
  • No free version or trial, and version 1.0.0 is brand new
  • WooCommerce: cannot write the single product template or place Woo blocks, so variation, cart and gallery logic is your own JavaScript

My verdict on Kadence Blocks

Kadence Blocks

4.5/5

The safer all rounder: mature native components, the best measured scores in this test and content that survives without the plugin. Held back by a high price, settings spread over four places and an editor that does not show your custom CSS. On WooCommerce, Shop Kit makes it the easier store to hand over.

What works

  • Native header builder, off canvas drawer, background video and a form with validation, AJAX and email
  • Highest scores in my test: Lighthouse 84 mobile and 99 desktop, accessibility 100
  • 91% of the text survives with the plugin switched off
  • Free Kadence Blocks and theme with 600,000+ installs
  • Shop Kit gives a real product template builder with swatches, WooCommerce’s own variation logic and a live product preview

What does not

  • $350 a year for one site and no lifetime plan
  • Still needed 31 KB of Additional CSS and 4.5 KB of JavaScript for this design
  • The editor does not load Additional CSS, so pages look unfinished while editing
  • 658 DOM nodes up to 23 levels deep and a 315 KB HTML document
  • WooCommerce page: 58 requests, 115 KB of JavaScript and 35.6 KB of CSS to restyle WooCommerce’s markup

The Conclusion

I built the same homepage on both, to the same pixel, and I came away with a clear split. Kadence is the better product for the average WordPress site. It has the components most sites need, it scored higher on every Lighthouse score that differed between them, it was the only build with a perfect accessibility score, and if the plugin disappears tomorrow the site is still readable. For a client who edits their own pages, I would choose Kadence without hesitating.

Unblock is the better tool for the person building the site. It shipped a page within 28 nodes of the hand coded original, it let me put every rule and every script exactly where it belongs, its editor showed me the real design while I worked, and an AI agent built it in about half the time and with over a quarter fewer tokens. On a custom design, Kadence needed almost exactly as much CSS as Unblock did, and stored it somewhere worse.

Price tilts it further for anyone with more than one site. Kadence charges $350 a year for one site and $599 for ten. Unblock charges $69 and $129, and $499 once covers a thousand sites. That gap pays for a lot of font trimming.

The WooCommerce round did not change that split, it sharpened it. Both builders produced a working product page with a correct cart, and both kept layout shift under control. Kadence with Shop Kit got there with WooCommerce’s own variation form and less code to own, which is what I want for a store the owner runs. Unblock got there with fewer requests, half the JavaScript, no layout shift and the closer match to the design, but only because I wrote the picker, the gallery and the cart call myself, and it needed a workaround to own the single product template at all.

So my pick depends on who holds the keys. If I am building and maintaining the site, or an agent is building it for me, I choose Unblock. If the client is going to run it alone, I choose Kadence.

Frequently Asked Questions

Is Unblock better than Kadence Blocks?

For developers and AI driven builds, yes: in my test it shipped leaner markup (477 DOM nodes against 658), built faster and costs far less per site. For sites the owner edits, Kadence is better, with native components, higher Lighthouse scores (84 against 70 on mobile) and content that survives without the plugin.

Can I use Unblock with the Kadence theme?

Unblock is a block editor plugin and its free Unblock Theme is optional, but I only tested it on that theme, which is a blank block theme built for it. Template parts for the header and footer need a block theme, and Kadence is a classic Customizer theme.

Does Unblock work without the plugin?

No. With Unblock deactivated my homepage rendered as a blank page with 0% of its text. Kadence Blocks kept 91% of the text visible and styled. If you stop renewing Unblock the site keeps working, you only lose updates, AI and support.

Is Unblock code only?

No. Its inspector has visual Layout, Sizing, Spacing, Borders, Typography, Background and Effects panels. They edit the same reusable CSS selector the code editor shows, and changes sync both ways.

How much does Unblock cost compared with Kadence?

Unblock costs $69 a year for 1 site, $129 for 10, $199 for 100, or $499 once for 1,000 sites, with 30% off until 1 December. Kadence costs $350 a year for 1 site, $599 for 10 and $999 for 100, as a bundle with Give, The Events Calendar and LearnDash.

Does Unblock have a lifetime deal?

Yes, $499 once for up to 1,000 sites, or $349.30 during the Black Friday sale. Kadence has no lifetime plan.

Is there a free version of Unblock?

No, and there is no free trial, only a live demo and a 14 day refund. Kadence Blocks and the Kadence theme are free on WordPress.org.

Which one is faster?

Kadence scored higher in Lighthouse (84 mobile and 99 desktop against 70 and 96), mostly because Unblock served 363 KB of fonts in my build. Unblock shipped less code otherwise: 27 KB of HTML, CSS and JavaScript against 151 KB total for Kadence, and half the JavaScript.

Which one is better for building with AI?

Unblock. An AI agent built my homepage in 19 minutes with 352,000 tokens and 2 check runs on Unblock, against 36 minutes, 479,000 tokens and 6 runs on Kadence. Unblock also offers an MCP Bridge and a built in assistant that uses your own API key.

Can Unblock build a WooCommerce product page?

Yes. Unblock reads WooCommerce data in Twig (price, gallery, attributes, variations, stock), and one template part served both my products. It cannot write WooCommerce’s single product template by name or place Woo blocks, so I used a three part template and wrote the variation picker and add to cart call as a 6.6 KB block script. The cart test added 20 inch, Rood, x2 for € 498,00.

Do I need Kadence Shop Kit for WooCommerce?

For a custom single product template and colour swatches, I used Shop Kit, Kadence’s WooCommerce add-on: it adds Woo Templates, Variation Swatches and toast style notices. It worked without a licence key entered; the licence drives updates. The design still needed 35.6 KB of custom CSS and 3.9 KB of JavaScript.

Which one gives the faster WooCommerce product page?

Kadence scored higher on mobile Lighthouse (81 against 76) because Unblock served 363 KB of fonts. Unblock shipped half the JavaScript (59 KB against 115 KB), 27 requests against 58 and no layout shift (CLS 0 against 0.03). Both scored 99 on desktop.

Related Posts

Subscribe to my Newsletter

If you love my tutorials, consider subscribing to not miss any awesome tips about block editors.

Don't Keep This Magic to Yourself - Share!
Rahul Singh
Rahul Singh

With more than 5 years of wrangling Kadence and Blocksy Themes, plus mastering the Block Editor, I turn complex web design into a breeze. My superpower? Crafting websites that are both fast and fabulous, with a dash of fun and a focus on making conversions soar!

Articles: 17

Leave a Reply

Your email address will not be published. Required fields are marked *