Three builders define much of the WordPress page-builder decision in 2026. Gutenberg ships with WordPress core. The WordPress.org plugin directory reports 10+ million active Elementor installations, while Elementor’s own site says 22M+ websites built. Those are different measures and should not be merged. Divi does not publish a directly comparable audited active-install figure, so a precise three-way footprint ranking would be false precision.
The versions this comparison was checked against on 12 October 2026: WordPress 7.1.3, Elementor 4.3.4 (WordPress.org lists “Requires at least 6.8” and “Tested up to 7.1.3”), and Divi 5, which Elegant Themes declared out of beta on 26 February 2026.
The choice between them is not a beauty contest. It is a trade between asset overhead, vendor lock-in, developer workflow, and how a non-technical client edits the site after handover. This guide walks each axis with the trade you actually face.
Short answer: Gutenberg for content sites where an editorial team will be trained and a developer maintains theme.json. Elementor for landing-page agency workflows where a non-developer needs to ship pages without touching code. Divi for solo freelancers handing finished sites to non-technical clients on a long-term retainer.
How Gutenberg, Elementor and Divi store content
The architectural difference is not a slogan, it is what ends up in the database and on the wire.
Gutenberg
Block markup is stored in post_content as HTML with comment delimiters (<!-- wp:paragraph -->). On render, blocks emit semantic HTML; styling lives in theme.json plus block stylesheets. Deactivate Gutenberg (impossible in practice since it is core) and the HTML still parses. Migrate to a different platform and the content body is portable.
One caveat that most comparisons skip: dynamic blocks such as Latest Posts, Query Loop or Navigation store only a self-closing comment with JSON attributes and build their markup on each request through a render callback.
<!-- wp:latest-posts {"postsToShow":3,"displayPostDate":true} /-->Static content survives any theme switch or export. Dynamic content needs whatever registered the block. WordPress core trunk currently ships 115 block directories under src/wp-includes/blocks/; a block added by a plugin that is later removed has the same problem as any builder, only on a smaller scale.
Elementor
Page content is stored as _elementor_data postmeta, a JSON tree of widget definitions. The constant sits in Elementor’s core/base/document.php:
const ELEMENTOR_DATA_META_KEY = '_elementor_data';
const BUILT_WITH_ELEMENTOR_META_KEY = '_elementor_edit_mode';The post_content column itself is mostly empty for Elementor pages. Deactivate Elementor and the front end falls back to whatever is in post_content, which is usually nothing. The often repeated “shortcode mess” is a Divi 4 trait, not an Elementor one: Elementor leaves a blank page, not brackets.
Divi
Up to Divi 4, layout lived in shortcodes inside post_content: [et_pb_section][et_pb_row][et_pb_column][et_pb_text].... Deactivate Divi 4 and the front end shows raw shortcode brackets. Divi 5 replaced that format. Elegant Themes writes that “Divi 5’s new storage format mimics WordPress’s native blocks” and gives two reasons: WordPress is moving from shortcodes to blocks, and a page built from shortcodes is slower to parse because it has no proper hierarchy (Elegant Themes).
The takeaway: Gutenberg outputs portable HTML, Elementor and Divi output proprietary structures that bind your content to the plugin runtime. Lock-in exists with all three. The useful question is whether a migration script can parse the format at all. JSON in a postmeta can be parsed. Deeply nested shortcode attributes could be parsed only with pain.
WordPress page builder market share in 2026
Elementor is by far the most used third-party page builder: W3Techs detected it on 31.5% of WordPress sites on 12 October 2026, and WordPress.org reports 10+ million active installations. Gutenberg does not appear in these lists for a structural reason: it ships inside WordPress core, so the meaningful question is how many sites use it as their primary layout tool rather than whether it is installed.
| Builder | Share of WordPress sites (W3Techs, 12 Oct 2026) |
|---|---|
| Elementor | 31.5% |
| WPBakery | 7.3% |
| Beaver Builder | 1.0% |
| Oxygen | 0.4% |
| Bricks | 0.4% |
| Divi Builder (plugin) | 0.1% (see note) |
Two caveats before quoting these numbers anywhere. First, Divi is undercounted here: it ships primarily as a theme, not a plugin, so W3Techs’ plugin detection misses most Divi sites, and the multi-million figure usually quoted for Divi comes from Elegant Themes’ own marketing rather than an independent measurement. Second, share of installs is not share of new projects: WPBakery’s share is largely legacy ThemeForest themes, while newer builders like Bricks show small totals but grow from a recent base. For choosing a builder in 2026, the practical reading is simple: Elementor has the largest ecosystem and hiring pool, Divi has a loyal but less measurable base, and Gutenberg is the only one guaranteed to be on every WordPress install you will ever touch.
Gutenberg vs Elementor vs Divi feature comparison
Before the per-axis argument, here is the whole comparison on one screen. Read the rows, not the columns: the interesting differences are where one builder does something structurally that the others cannot.
| Capability | Gutenberg (block editor / FSE) | Elementor Pro | Divi |
|---|---|---|---|
| Ships inside WordPress core | yes | no (plugin) | no (theme plus plugin) |
| Visual drag-and-drop canvas | partial (block placement, not free-form) | yes (full) | yes (full) |
| Full site editing (header, footer, templates) | yes (native FSE) | yes (Theme Builder, Pro only) | yes (Theme Builder) |
| Ready-made template and pattern library | growing native plus block-suite packs | large first-party library | large first-party library |
| Free-form and absolute positioning | limited by design | yes | yes |
| Per-device breakpoints in the editor | no (fluid typography plus theme CSS) | up to seven devices | yes (builder views) |
| Content stored as portable HTML | yes | no (postmeta JSON) | no (Divi 4 shortcodes, Divi 5 own format) |
| Custom extension model | React blocks via block.json | PHP widget API | PHP module and child-theme API |
| Renders with the tool uninstalled | yes (it is core) | no | no |
| Native WooCommerce blocks | yes (Cart and Checkout blocks) | via widgets | via modules |
| Editor learning curve for a non-developer | moderate | low | low |
The shape of the table is consistent: Elementor and Divi win the rows about free-form visual control and a large ready-made template library, Gutenberg wins the rows about portability, core alignment, and the extension model. The one row where the three are not close is content storage, and that is the row that turns into a cost line item two or three years later.
Elementor vs Divi vs Gutenberg page speed
The popular summary says Gutenberg is lean, Elementor is bloated and Divi sits in between. That summary does not survive the source code. Core loads its block library in full by default, Elementor ships a stable experiment for leaner markup, and Divi replaced its shortcode format. Four mechanisms decide the result on a real site.
Does WordPress load all block styles on every page
wp_should_load_separate_core_block_assets() in wp-includes/script-loader.php ends with a single line:
return apply_filters( 'should_load_separate_core_block_assets', false );The filter default is false, so without intervention a page with one paragraph loads the whole wp-block-library stylesheet. Two things change that. Block themes set the filter to true automatically in _add_default_theme_supports(). Since WordPress 6.9, classic themes get the same treatment through wp_load_classic_theme_block_styles_on_demand(), hooked to wp_default_styles at priority 0. Anyone claiming Gutenberg is lean by nature has either a block theme or a current install. On a classic theme running an older WordPress version, the claim is false.
How to enable optimized markup in Elementor
Elementor’s experiments manager lists e_optimized_markup as stable, described as “Reduce the DOM size by eliminating HTML tags in various elements and widgets”. Its defaults:
'default' => self::STATE_INACTIVE,
'new_site' => [
'default_active' => true,
'minimum_installation_version' => '3.30.0',
],New installs from 3.30.0 get it switched on. An agency install from 2019 that was only ever updated does not. The same description warns that the change “might require updating custom CSS/JS code”, which is why few people flip the switch on a live site. Much of what comparison articles call Elementor’s div soup is a property of that migration strategy rather than of the plugin itself.
Lazy loading and missing image dimensions in Elementor
In includes/controls/groups/image-size.php, Elementor calls wp_get_attachment_image() only when it has an attachment ID and a registered WordPress image size. With custom dimensions it builds the tag itself, with a hard-coded loading="lazy" and no width or height. Core’s wp_get_loading_optimization_attributes() exits early without those dimensions, before it can decide on fetchpriority. A hero image with a custom size is therefore lazy-loaded even when it is the LCP element. That is the first place to look in an Elementor audit.
Divi 5 and page speed
Elegant Themes describes Divi 5 as fast and states that pages still running in backward compatibility mode do not get “Divi 5’s performance improvements” until they are migrated (Elegant Themes). The vendor publishes no independent benchmark, so a Divi 4 site upgraded to Divi 5 without running the migrator should not be expected to change speed.
Performance levers that apply to all three builders
Speculative loading has been part of core since WordPress 6.8 and works at the document level, independent of the builder. The default is prefetch with conservative eagerness, and it applies only to pretty permalinks and logged-out visitors.
| Lever | Who decides | Where to look |
|---|---|---|
| Separate block styles | Theme type and WordPress version | should_load_separate_core_block_assets |
| DOM depth in Elementor | Experiment switch of the install | e_optimized_markup, container |
| LCP image | Image size chosen in the widget | loading and fetchpriority in the HTML |
| Prefetch | Core, from 6.8 | Speculation rules script in the footer |
| Divi 5 output | Migration status of each page | Divi 5 migrator report |
A comparison measurement is only worth something when it uses the same page, the same hosting and the same window, with field data rather than one lab run. A Gutenberg site also has its own failure mode: without a central pattern registry, editors copy a hero pattern, customise it inline, and the site ends up with many hero variants and no single source. Gutenberg performance wins do not survive editorial drift unless someone owns theme.json and the pattern library.
What happens when you deactivate Elementor or Divi
Two separate questions get conflated in most comparisons. One is how fast the builder is in normal operation, covered above. The other is what happens to Core Web Vitals, and to the content itself, if the builder is ever removed. That second question is the lock-in tax expressed as a rendering problem, and it is the one that decides whether a site can survive its own tooling.
With Gutenberg, deactivation is a non-event because the block editor is core and cannot be switched off. The useful thought experiment instead is exporting the content: block markup is valid HTML, so an exported post keeps its structure, headings, lists, and image references intact. Largest Contentful Paint and Cumulative Layout Shift are then governed by the theme and the images, not by an editor runtime that has to boot on every request.
With Elementor, the front end depends on the plugin reading _elementor_data and injecting its own CSS and JavaScript on render. Remove the plugin and the layout is gone; keep it and every page carries the builder’s stylesheet and script budget, which is exactly the weight that pressures LCP through render-blocking CSS and pushes Interaction to Next Paint up through the event handlers attached per widget. The builder is not merely how a page was built once, it is a permanent runtime dependency of how that page renders.
Divi 4 behaves the same way through shortcodes. The modules have to be resolved by the active Divi runtime, so its CSS and JavaScript travel with every page, and deactivation leaves raw shortcode brackets on the front end. Divi 5 changes the storage format, not the dependency: its content still needs Divi to render as designed.
The single sentence that matters for a site meant to last: with Gutenberg the content outlives the tool, and with Elementor or Divi the content is the tool’s output and cannot render without it. Every performance-remediation project on a builder-heavy site eventually runs into this wall, because you cannot strip the runtime weight without also stripping the layout.
Custom Gutenberg blocks vs Elementor widgets
This is where the comparison stops being about end users.
Gutenberg assumes a React + ESNext build pipeline. To ship a custom block you need a build step (usually @wordpress/scripts), a block.json metadata file, and registration on both sides. The block editor handbook describes block.json as the file that “simplifies the process of defining and registering a block”, with one definition used on the server and in the editor. The learning curve is real: WordPress shops that grew up on classic PHP themes hit it hard the first time. The payoff is that custom blocks behave like first-class WordPress citizens: REST API support, block templates, block patterns, and theme.json overrides come for free.
Elementor lets a non-developer ship pages without code. The custom-widget API exists, but most agencies never touch it; they assemble from the built-in widget library and third-party packs. This is the actual reason Elementor wins agency-to-client handoffs: the client can edit the site without breaking it, and the agency does not get a late-night call about a broken syntax error.
Divi sits between. The Divi Builder is non-technical-friendly like Elementor; the Divi child-theme and module API is closer to Gutenberg’s developer model than Elementor’s widget API. Solo freelancers who do design but not React tend to land here.
If you need to know which one to learn: a 2026 WordPress developer ships Gutenberg blocks and FSE templates, knows enough Elementor to migrate sites off it, and knows Divi exists for client retainer work.
Elementor or Gutenberg for flexible design
Design rules with theme.json in Gutenberg
The contract between design and editor is theme.json. The current schema version is 3, defined in core as const LATEST_SCHEMA = 3; in class-wp-theme-json.php. There is no version 4, whatever year-in-review posts claim. The practically important part is not styles but settings, because settings decides what the editorial team is allowed to touch:
{
"version": 3,
"settings": {
"color": { "custom": false, "defaultPalette": false },
"typography": { "fluid": true, "customFontSize": false }
}
}With that file, the free colour picker disappears from the editor. This is why large editorial teams move to blocks: not for load time, but because the editor has limits that live in Git.
Per-device breakpoints in Elementor
Elementor still feels more like a graphics tool, and that is a way of working rather than an insult. The concrete functional difference is breakpoints. Elementor’s core/breakpoints/manager.php defines seven devices: mobile, tablet and desktop are active by default, and four more can be switched on (mobile extra, tablet extra, laptop and widescreen). The core editor offers no equivalent. It offers fluid typography through settings.typography.fluid, meaning clamp() values between a minimum and a maximum, and everything else goes through theme CSS.
For a design that specifies different spacing and order per device, this is where a Gutenberg build costs developer time that an Elementor build does not. Anyone who argues otherwise is selling.
Divi as a closed ecosystem
Divi brings its design system inside its own interface and stays a closed ecosystem: it is not in the WordPress.org plugin directory, and updates arrive through the Elegant Themes membership. For many agencies that is no drawback while the membership runs, and a clear drawback once a client is supposed to take the site over.
Do updates break Elementor, Divi or Gutenberg
The old formula “Gutenberg almost never breaks, builders break constantly” is too comfortable. The break points are just different.
Blocks break through block validation. When a block changes its saved markup without a deprecated definition covering the old version, the editor reports that the block contains unexpected or invalid content. The front end is unaffected, the editorial team is not. This almost always hits custom blocks or blocks from plugins, rarely core blocks, because core maintains its deprecations.
Elementor and Divi break through version gaps. For Elementor 4.3.4, the WordPress.org plugin directory lists “Requires at least 6.8” and “Tested up to 7.1.3”. The plugin follows core quickly, but it follows rather than ships with it. Divi adds a date in 2026: Elegant Themes promises to support Divi 4 “for at least the next 12 months, and longer if practical” from 26 February 2026, with security and compatibility fixes (Elegant Themes).
For a maintenance contract this means: with blocks, check your own blocks and patterns after a core update. With Elementor and Divi, also check the order in which core, builder, theme and Pro add-on are updated, and do it on staging, not on production.
Cost of migrating off Elementor or Divi
Two failure modes follow directly from how the builders store content.
An Elementor site where saved templates were inserted into pages instead of being assigned through Theme Builder conditions. Inserting a saved template copies its content into the page, so a later change to the template does not reach the copies. Adding one field to a repeated layout then means editing every page by hand.
A long-running Divi 4 site. Switching themes means manually rebuilding every page, because Divi shortcodes are bound to Divi modules and no third-party migrator preserves layout fidelity. Staying inside Divi is easier: the Divi 5 migrator converts all Divi 4 modules across the site and keeps a backup copy of the Divi 4 post content first.
From Elementor to blocks there is no button. The process that holds up in practice:
- Count the inventory. Use WP-CLI to list all posts carrying
_elementor_edit_modeand sort the widget types they use by frequency. - Define the mapping. For the most common types pick a target: core block, pattern or custom block. Anything without a place on that list is rebuilt by hand, not converted automatically.
- Freeze URLs. The migration changes markup, not addresses. Where a slug does change, the redirect ships in the same deploy.
- Measure before and after. Same URLs, same tool, and field data over a sufficiently long window.
- Only then deactivate the plugin. Not earlier, because
post_contenton Elementor pages is usually empty.
wp post list --post_type=any --meta_key=_elementor_edit_mode --meta_value=builder --format=countGutenberg’s portability is the practical answer to all of this. Block markup survives theme switches, plugin churn, and even export-to-static workflows.
Synced patterns vs Elementor global widgets
Where Gutenberg and Elementor diverge sharpest is bulk editorial.
Gutenberg has synced patterns (formerly reusable blocks; WordPress 6.3 renamed them). The WordPress documentation is explicit: when a synced pattern is changed, the change is reflected in all the places where it is used, and an editor can detach a single instance to edit it locally. This is the feature that matters for editorial teams running a magazine, knowledge base, or documentation site. Combined with block templates and template parts in FSE, you get genuine inheritance: change the article-footer template part, every article reflects the change.
Elementor has global widgets in Pro and theme parts in the Theme Builder. Theme Builder templates apply by display conditions, so they do propagate. Saved templates inserted into a page do not. Editorial teams that did not learn the difference early end up with many copies of the same hero, drift across them, and a maintenance bill.
Divi has global modules and the Theme Builder, similar to Elementor.
For a 500-article content site, Gutenberg’s synced patterns plus block templates is the only one of the three that scales without depending on a paid add-on.
Page builders and the European Accessibility Act
The European Accessibility Act (Directive 2019/882) applies from 28 June 2025 and covers e-commerce services, meaning selling and booking through a website or app, not every company site. Microenterprises that provide services are exempt. The first question is therefore not which builder, but whether the page lets a visitor order, book or sign a contract. If yes, the builder is only the tool that meets or misses the requirement.
No builder delivers conformance out of the box. The errors that recur in audits are the same in all three:
- Buttons that contain only an icon and no accessible name.
- Carousels and accordions whose focus order no longer matches reading order after absolute positioning.
- Brand palette contrasts that fail the 4.5:1 threshold because nobody checked them.
- Heading levels that jump from H2 to H4 because the level was chosen by font size.
Core blocks output semantic elements, which improves the starting point, but the template makes the design decision, not the block.
A related EU issue is fonts. Elementor’s “Load Google Fonts Locally” setting is off by default ('std' => '0' in includes/settings/settings.php). On a site serving EU visitors, switch it on or self-host fonts another way, because a font request to Google sends the visitor’s IP address to a third party.
Elementor Pro vs Divi license and long-term cost
The license question matters less than the renewal-and-migration question. The vendors’ billing models, as published on their own pages:
- Elementor bills Pro annually, plans are tiered by site count (from one site up to unlimited on the agency tier), and subscriptions renew at list price.
- Elegant Themes sells Divi as a yearly membership or a one-time lifetime membership, and both allow unlimited sites. The company does not charge per website.
| Cost axis | Gutenberg | Elementor Pro | Divi |
|---|---|---|---|
| License | free (core) | annual subscription, tiered by sites | yearly or lifetime membership, unlimited sites |
| Dev time to ship a custom block/widget | higher (React pipeline) | lower (visual editor) | lower (visual builder) |
| Renewal across portfolio | none | grows with site count | flat on the lifetime plan |
| Migration cost when leaving | low (portable HTML) | high (rebuild required) | high (rebuild required) |
| Editorial maintenance at scale | low (synced patterns) | high without discipline | high without discipline |
The bill that sinks projects is not the license, it is migration cost three years from now and editorial drift two years from now. “Gutenberg is free” is also only half true: without block plugins you pay developer time for patterns and tokens, and with block plugins you pay licences like anywhere else. Gutenberg’s real saving is its low migration cost.
Which page builder to choose in 2026
A practitioner-grade decision rule:
Pick Gutenberg if:
- The site is content-heavy (blog, documentation, magazine, knowledge base)
- An editorial team will be trained, not assumed competent on day one
- You can budget developer time for theme.json plus a managed pattern library
- You expect the site to outlive any single plugin vendor
Pick Elementor if:
- The deliverable is landing pages and the editor is the marketing manager
- The design needs different values per breakpoint
- The agency-to-client handoff is the failure mode you most need to avoid
- You have processed renewal cost across the portfolio and accepted it
Pick Divi if:
- You are a solo freelancer or two-person studio with a long client retainer book
- Lifetime licensing with unlimited sites makes the math work across many small sites
- Clients are non-technical and edit rarely
And the uncomfortable case: if nobody on the team can touch theme.json and the editorial team still expects free-form design, a half-hearted block build is worse than a cleanly configured Elementor site. Staffing decides that project, not technology.
The wrong question is “which builder is best in 2026?” The right question is “which trade can my team carry for the next four years?”
Last updated: 2026-10-12
Author: wppoland.com
Want a clean break from Elementor or Divi? Talk to our WordPress developer team about a Gutenberg migration, or browse recent block-theme builds in our portfolio. For Core Web Vitals work, see WordPress speed optimization.







