The Elementor vs custom theme argument is usually conducted as a matter of taste, and occasionally as tribal identity. It is neither. It is a cost question with a predictable shape: a page builder moves cost out of the build and into the operating life of the site. Whether that is a good trade depends on two numbers almost nobody puts on the table, how many pages the site has and how often those pages change.
The debate stays unresolved because both sides argue from anecdote. Somebody says builders are slow, somebody else posts a green Lighthouse score, and nothing is settled. Performance is a real cost, but it is one line on a longer bill that also carries licence renewals, a plugin stack, editorial throughput, accessibility remediation, and at the end the price of getting your content back out again.
Elementor is not a bad tool. For a large class of site it is the correct answer, and an honest comparison says so first. The useful question is not whether the builder is good, it is where it stops paying, and that boundary is sharper than the shouting suggests.
Which actually costs less, Elementor or a bespoke theme? Elementor is cheaper to build and more expensive to run. A bespoke theme is the reverse. The crossover sits roughly where a site has more than about twenty five pages drawn from a small set of repeating layouts, already pays for developer time, and has a performance or accessibility standard it must meet rather than aspire to. Below that line the builder usually wins on total cost. Above it, the build saving is spent within two to three years.
What a Page Builder Actually Does to Your Output
Asserting that builders are slow is useless, because sometimes they are not. What is stable is the mechanism, and there are three parts to it. Each one is a tendency rather than a certainty, which is exactly why screenshot arguments never settle anything.
Depth in the document
A visual builder has to represent layout as containers, and containers are elements. A section holds a column, the column holds a widget, the widget holds its own wrapper and then its content. Hand written markup would express the same design in two or three elements where the builder emits six or seven.
That depth is not free. Style recalculation, layout and paint all scale with how many nodes the browser has to walk and how complex the selectors matching them are. Google’s guidance on DOM size and interactivity sets the practical markers: Lighthouse starts warning above 800 nodes and treats a page as excessive above 1,400. Builder pages cross 1,400 routinely, and a long page with several sliders and a mega menu can reach three or four thousand.
The cost is paid twice. Once at first render, and again on every interaction that changes the tree, because opening an accordion or filtering a list forces the browser back through the same work.
Stylesheets generated per page
Elementor’s own engineering write up on CSS rendering performance describes the two output modes plainly: the CSS is either printed into a <style> tag in the document, or written to a file that loads with the page. File output is static and only regenerated when the page changes.
Both modes have a cost that is easy to miss. Styling is generated per page rather than shared across the site, so a visitor moving from your homepage to a service page downloads a fresh stylesheet instead of reusing a cached one. With internal embedding the CSS travels inside the HTML on every request, which inflates the document and defeats caching entirely.
A hand built theme inverts this. One stylesheet, cached once, reused everywhere, and the second page a visitor opens costs almost nothing in CSS.
Scripts that run before the layout settles
Widgets carry their own JavaScript. Sliders, tabs, accordions, counters, popups and forms each register handlers, and several of them decide final dimensions at runtime. When the position of content is not known until a script has run, the browser paints one layout and then paints a different one.
That is the classic layout shift pattern, and it compounds with unsized media and late loading web fonts. None of it is unfixable, but the fixes are per widget, they have to be redone whenever the page is edited, and the person editing the page is usually not the person who applied them.
Core Web Vitals, and Which Metric a Builder Actually Hurts
Get the metric set right first, because a great deal of builder commentary is still arguing about a metric that no longer exists. There are three Core Web Vitals, and Google’s definitions give the thresholds for a good experience precisely: Largest Contentful Paint should occur within 2.5 seconds of the page starting to load, Interaction to Next Paint should be 200 milliseconds or less, and Cumulative Layout Shift should be 0.1 or less. All three are assessed at the 75th percentile of page loads, measured separately for mobile and desktop.
First Input Delay is gone. Interaction to Next Paint replaced it as a stable Core Web Vital on 12 March 2024, and the change matters here because FID measured only the delay before the first interaction was handled, which flattered heavy pages. INP measures the full path from input to the next painted frame, across the interactions on the page, and picks close to the worst one.
Why INP is the metric that resists
Largest Contentful Paint is largely a delivery problem. Better hosting, a CDN, properly sized and compressed images, a preloaded hero, fewer render blocking resources, and most builder sites can be brought under 2.5 seconds without touching the builder itself.
Cumulative Layout Shift is a discipline problem. Set dimensions on media, reserve space for anything injected, load fonts so they do not re-flow the page, and 0.1 is reachable.
Interaction to Next Paint is a structural problem. It measures how much work the main thread must do before it can respond, and deep markup plus a stack of widget scripts is precisely that work. You cannot cache your way out of it and a faster server does not help. This is the metric where an Elementor page and a lean bespoke theme diverge most, and it is the one that stays divergent after the easy optimisation is finished. Our WordPress performance audit guide walks through separating these three problems on a live site.
What Has Genuinely Improved
Being fair here is not politeness, it is accuracy, because a lot of the criticism aimed at Elementor is aimed at the 2019 version of it.
Elementor now ships as version 4.2.4 on the WordPress plugin directory, requires WordPress 6.8 or higher and PHP 7.4 or higher, and reports 10+ million active installations. Editor V4 rebuilt the element architecture around what Elementor calls atomic elements, with a CSS first approach and, in the company’s own words, without “the overhead of legacy DOM bloat”. Elementor states that the Atomic Editor is the default experience for all new websites from 4.0 onward.
Two qualifications matter more than the headline. First, existing sites do not get it by updating. Elementor is explicit that updating to 4.0 will not affect current live sites and that the new features are enabled manually, so a site built in 2022 keeps its 2022 output until somebody rebuilds it. Second, V3 and V4 elements coexist on the same page during migration, which means a partially migrated page carries both architectures and both sets of overhead.
Treat the improvement as real and as forward looking. It changes what a new Elementor site can be. It does not change what your existing one currently is.
The Lock In Mechanism, Stated Properly
This is the strongest argument against a builder and it is almost always stated badly. The usual version, that you will be left with a screen of broken shortcodes, is not quite what happens and is easy to dismiss. The accurate version is worse.
Elementor’s data structure documentation says exactly where your pages live: the editor saves page data and layout in JSON format as WordPress post metadata, in the wp_postmeta table, and the documentation notes that it is stored as a private custom field which is not visible in the WordPress dashboard. Your layout, your styling and much of your copy sit in a serialised structure that only Elementor can read.
Compare that with WordPress core. The block editor serialises blocks into post_content as HTML with HTML comment delimiters, with attributes carried as JSON literals inside the comments. Core’s stated aim is a single source of truth that stays readable and compatible with everything else that touches WordPress content. Strip the block editor away and you still have valid HTML in the content field.
That is the whole difference. One system keeps your content in the place WordPress has always kept content. The other keeps it in a private field beside it.
What this means for the redesign in three years
Deactivate Elementor and the pages do not degrade gracefully. WordPress renders post_content, which for a builder page is typically empty or a fragment, so the page goes blank rather than plain. Nothing has been deleted, but nothing renders.
Practically, that turns a redesign into two projects. You are not switching themes, you are running a content migration: extracting the rendered HTML page by page, or parsing the JSON, then rebuilding each layout in the new system. Budget it as a migration and it is manageable. Discover it halfway through a redesign and it is the thing that blows the timeline. The same discipline applies as in any CMS migration, where the work that decides the outcome happens before anything is switched off.
The Honest Case for Elementor
There is a real class of site where the builder is not a compromise but the right engineering decision, and it is a big class.
A brochure site of ten to twenty pages. No in house developer and no intention of hiring one. A marketing person who needs to change a headline, swap a photo or publish a landing page this afternoon, without a ticket, a branch and a deployment. A budget that genuinely does not stretch to a bespoke build, where the alternative is not a better site but a worse one, or none.
For that profile, a builder converts a developer dependency into a subscription, and that is usually a good trade. A site nobody in the organisation can update is a worse asset than a slightly heavier site that the marketing team owns outright. The failure mode of the bespoke route is not slowness, it is a site that goes stale because every change needs someone external.
There is a second honest case, which is speed to first revenue. Getting a credible site live in three weeks rather than three months has a value that no Core Web Vitals number captures, and for a new business that value is often larger than everything discussed above.
The Elementor vs Custom Theme Decision Rule
Here is a rule you can apply to your own site rather than to a generic one. Score these six, and treat three or more as the point where a builder starts costing more than it saves.
Page count against template count. More than about twenty five pages built from fewer than eight distinct layouts means you are paying for repetition. A theme expresses that repetition once; a builder makes you maintain it in twenty five places.
Editorial throughput. More than a handful of content changes a week, by more than one person, means the tooling and the review process matter more than the editing experience.
A design system that already exists. If there is a real token set in Figma, a theme can encode it once and enforce it. A builder cannot enforce anything, because every page can override everything.
Multilingual content. Every language multiplies the builder structures you maintain, and translation plugins interact badly with layout stored outside post_content.
A performance budget that is contractual. If Core Web Vitals appear in a tender, an SLA or a client agreement, you need a floor you control rather than a number you hope for.
An accessibility obligation. Covered below, and on its own it is often decisive.
If none of these are true, use the builder and spend the saving on content. If four or more are true, a bespoke theme is not a luxury, it is the cheaper option over the life of the site.
The Middle Path Most Comparisons Skip
There is a third option, and it is neither a bespoke theme nor a third party builder. WordPress core has shipped full site editing since 5.9 in January 2022, and the Site Editor is now a mature part of the product.
The important constraint is stated flatly in the WordPress Site Editor documentation: the Site Editor is only available when you install and activate a block theme. With one active, editors get Identity, Styles, Pages, Navigation, Patterns and Templates, and since WordPress 6.3 they can manage and edit pages from inside it. Global styles, typography, colour palettes and layout are set once in the theme’s theme.json and applied across the site.
What that solves is most of the builder’s real value. Marketing can change a page, edit a header, restyle the site and publish without a deployment. What it also gives you is the thing the builder does not: content in post_content, a design system defined by the developer, no third party licence, and an export in the Site Editor that produces a zip of the theme including your templates and styles.
What it does not solve is discipline. A block theme with a loose theme.json and a pile of third party block plugins reproduces the builder’s problems inside core, including the lock in, because those blocks leave your pages when the plugin does. It also still needs a developer to set up properly, and moving an existing Elementor site onto it is still a content migration.
Accessibility, Where Builders Quietly Fail
This is the failure mode nobody demos, and it is the one that turns into a legal problem rather than a slow page.
Heading order follows layout, not meaning. An editor picks H3 because H2 looked too big, and the document outline stops describing the content. That is WCAG 2.2 success criterion 1.3.1 Info and Relationships at Level A, with 2.4.6 Headings and Labels at Level AA on top of it. Nothing in the builder prevents it, because the heading control is a styling control.
Contrast defaults. 1.4.3 Contrast (Minimum) at Level AA requires a ratio of at least 4.5:1 for normal text and 3:1 for large text, and 1.4.11 Non-text Contrast requires at least 3:1 for interface components and graphical objects against adjacent colours. Light grey body text on white and pale icons on a tinted section are the two most common builder site failures we find, and both come straight from a template that looked good in a demo.
Focus order inside nested containers. 2.4.3 Focus Order at Level A requires that focusable components receive focus in an order preserving meaning and operability, and 2.4.7 Focus Visible at Level AA requires a visible focus indicator. Deeply nested containers, absolutely positioned overlays and popups routinely break both, and builder themes frequently remove the default focus outline because it looked untidy.
In the UK this is not optional for a large group of organisations. GOV.UK guidance is explicit that public sector bodies must meet WCAG 2.2 to Level AA under the Public Sector Bodies (Websites and Mobile Applications) (No. 2) Accessibility Regulations 2018, and publish an accessibility statement. That requirement increasingly propagates into private sector procurement through supplier questionnaires. Remediating generated markup is materially harder than fixing markup you wrote.
What Each Route Actually Costs
The licence line you can check yourself
Licence pricing first, because it is the only figure in this section that is not ours. Elementor publishes prices in GBP directly, so no conversion is involved. On Elementor’s pricing page, read on 2 September 2026, the annual plans run from GBP 48 a year for Essential, through GBP 72 for Advanced Solo and GBP 84 for Advanced, to GBP 168 a year for Expert. The newer bundled tiers are GBP 144 a year for Elementor One and GBP 348 a year for One Agency.
The rest of the numbers below are the bands we quote, not published figures, and they assume a UK small to mid sized business site rather than an ecommerce build.
Build, running cost and the redesign at the end
| Route | Build | Per year to run | Redesign at end of life |
|---|---|---|---|
| Builder site | GBP 2,000 to GBP 6,000 | GBP 400 to GBP 1,200 | GBP 8,000 to GBP 20,000 |
| Block theme on core | GBP 6,000 to GBP 18,000 | GBP 250 to GBP 700 | GBP 4,000 to GBP 12,000 |
| Bespoke theme | GBP 12,000 to GBP 40,000 | GBP 250 to GBP 800 | GBP 5,000 to GBP 15,000 |
Read that as prose, because the table only summarises it. A builder site is the cheapest to build by a factor of three or more, and the most expensive to run, because the annual figure carries the Elementor licence plus the premium addons that almost always accompany it, plus the plugin stack that grows around it, plus the periodic performance work that never quite finishes.
The redesign column is where the comparison resolves. Rebuilding a builder site costs more than rebuilding a themed one, for the reason set out above: the content has to be extracted before it can be rebuilt. Across five years, a GBP 4,000 builder site and a GBP 20,000 bespoke one land closer together than either party expects, and which one wins turns on page count and edit frequency rather than on taste. Our website cost breakdown covers how these bands behave for larger builds, and our website development service sets out what a bespoke build includes.
If You Are Already on a Builder and Want Out
The migration is tractable if you sequence it correctly, and painful if you do not.
Start with an inventory rather than a plan. Query the post meta to find which pages actually carry builder data, because on most sites it is far fewer than expected, and the blog posts are usually plain content already. Then triage: rebuild, convert or delete. Most sites carry a long tail of pages that nobody has visited in a year and that nobody should pay to migrate.
Extract before you rebuild. Render each surviving page and keep the HTML, or parse the JSON out of post meta, so you have the content in a form independent of the plugin. Do this even for pages you intend to rebuild by hand, because it is your only copy once the plugin goes.
Keep the URLs. A rebuild is not a reason to change addresses, and every changed address needs a redirect to its specific equivalent.
Then do the work page by page, keeping Elementor installed until the last page is off it, and measure Interaction to Next Paint before and after on real field data rather than a lab score, because a lab score on a fast laptop will tell you the problem was never there.
Where This Lands
The choice is not ideological. A builder is a legitimate answer for a small, slow changing site with no developer, and it is the right answer far more often than developers like to admit. It stops being the right answer once page count, template reuse, editorial throughput, or a hard performance or accessibility requirement enters the picture, and the cost of staying on it past that point is paid quietly, in annual licences, in remediation, and finally in a migration.
Mecanik builds both. We run builder sites for clients where that is the sensible economics and we replace them when it stops being sensible, usually with a block theme on core rather than a fully bespoke build. If you want a straight answer about which side of the line your site sits on, our website development and WordPress development pages set out how we scope it, and the guide to what to ask when hiring a WordPress developer covers how to test whoever you speak to, including us.
Frequently Asked Questions
Is Elementor bad for SEO? No. Elementor does not block indexing, and a well built Elementor page ranks like any other page. The pressure it puts on search is indirect and lands on Core Web Vitals, mainly Interaction to Next Paint, because deep generated markup and widget scripts give the main thread more work to do. Vitals are one input among many, so a slow builder page with better content still beats a fast page with worse content.
What happens to my pages if I deactivate Elementor? The layout disappears. Elementor keeps the page structure as JSON in a private custom field in the wp_postmeta table rather than in post_content, so deactivating the plugin leaves WordPress rendering whatever post_content holds, which for a builder page is usually empty or a fragment. Nothing is deleted, but nothing renders either, and recovering the pages is a data migration rather than a theme switch.
How much does a custom WordPress theme cost in the UK? The bands we quote are roughly GBP 12,000 to GBP 40,000 for a bespoke theme, GBP 6,000 to GBP 18,000 for a block theme built on WordPress core, and GBP 2,000 to GBP 6,000 for a builder site. The bespoke figure looks worst on day one and best across five years, because it carries no licence, a smaller plugin stack and a far cheaper redesign at the end.
Can an Elementor site pass Core Web Vitals? Yes, and plenty do. Largest Contentful Paint under 2.5 seconds and Cumulative Layout Shift under 0.1 are usually reachable with good hosting, sized media and restraint about widgets. Interaction to Next Paint under 200 milliseconds is the one that resists, because it reflects main thread work rather than delivery, and that is the metric where builder markup and widget scripts cost you most.
Is a block theme a better alternative to Elementor? Often, and it is the option most comparisons skip. Block content is stored in post_content as HTML with comment delimiters, so it survives a theme change, and the Site Editor lets marketing edit templates and styles without a deployment. It is not free of effort: the Site Editor needs a block theme, and someone has to define the design system properly or you have rebuilt the same problem inside core.
Comments