Our own site ran on a page builder for three years. Elementor, Astra Starter Templates, Slider Revolution, the usual stack. It looked fine in a screenshot. It was quietly accumulating a bill nobody was tracking, and the invoice wasn’t in dollars.
The subscription is the smallest part
Elementor Pro costs a few hundred dollars a year. That’s the number everyone budgets for. It’s not the number that matters.
What matters is what a page builder does to every request your visitor’s browser has to make. A hand-coded page loads its own CSS and its own JavaScript, nothing else. A page-builder page loads the builder’s runtime, the builder’s CSS framework, whatever animation library the theme bundled, and then your actual content on top of all of it. We measured this directly on our own site before the rebuild: over 3 megabytes of assets to render a homepage that had, generously, four paragraphs of unique text.
The vulnerability surface you didn’t choose
When we audited our own WordPress install before rebuilding it, we found Elementor and Elementor Pro carrying a combined 40 known vulnerabilities across their version history, most already patched upstream but not applied. Slider Revolution, a plugin most visitors never consciously interact with, had 14 more. None of that is a knock on those tools specifically. It’s what happens to any dependency you don’t actively maintain: it drifts, and the gap between your installed version and the current one is exactly the size of your exposure.
A hand-coded theme has no equivalent surface. There’s no builder to patch because there’s no builder. The only code running is code you wrote and can read.
The design ceiling
Page builders are genuinely good at getting a site live fast. They’re less good at getting out of the way once you know exactly what you want. Every builder has an opinion about how spacing, breakpoints, and components should work, and at some point your design and the builder’s opinion diverge. You either fight the tool or you compromise the design. We’ve watched clients do both, and neither is a good outcome for money already spent.
What we do instead
Every site we build now is hand-coded: our own component markup, our own CSS, no builder runtime shipped to the browser. It takes longer to build the first page. It takes less time to build the fifth, because by then the design system exists and every new page is assembly, not invention. And the PageSpeed score is a property of the architecture, not a discipline someone has to keep defending after launch.
We didn’t learn this from a case study. We learned it rebuilding our own site, which is exactly why it’s the first thing we tell a client asking why we don’t just use WordPress and a builder like everyone else.