
I started out building websites in WordPress with Elementor, snapping together pages from pre-made themes. I did not like it. It felt limiting, and a bit boring. Every time I pictured something specific in my head, the builder had other ideas, and I'd spend an hour convincing it to do the one small thing I wanted.
That's the short version of why I build from scratch now. But I want to be fair about this, because templates aren't the enemy, and I'll tell you exactly when I think you should use one. This is about where they stop working, and why custom is worth it once you're past that point.
When a template is the right call
Let me start here so you know I'm not just selling you the expensive option.
If your budget is tiny and you need something live this week, use a template. A clean template beats no website, and it beats a custom site you can't afford or won't finish. Same goes for a quick page to test an idea before you invest in it, or a simple one-pager where custom would be overkill. In those cases I'll happily point someone at a good template and tell them to go.
So think of it as a line. On one side, a template is the smart, practical choice. On the other, it quietly starts costing you more than it saves. Here's where that line is for me.
You end up fighting the layout
The thing nobody tells you about template builders is how much time you spend arguing with them.
You have a clear picture of what you want. A section that breaks a certain way on mobile, a bit of spacing that feels right, a hero that does something slightly different. The template was built for the average case, so anything off that path turns into a fight. You nudge a setting, something three sections down shifts, you fix that, and now the padding's wrong again. An hour later you've got something close to what you pictured, held together with settings you're a little afraid to touch.
And here's the part that bothered me most. To make it work, you usually end up changing the brand to fit the template. The template wanted three columns, so now you have three things to say instead of two. That's backwards. The website should fit the brand, not the brand the website. When I build from scratch, the layout does what the brand needs, because I'm writing it to do exactly that, and nothing's fighting me.
The bloat you can't delete
Page and funnel builders are made to do everything, for everyone, so they include the code for every feature anyone might use. Your site then loads a big chunk of that code even when your page uses almost none of it. It works this way whether you're on Elementor, or on a funnel platform like GoHighLevel, ClickFunnels, or Systeme.
Those funnel builders are great at what they're built for, getting a campaign live fast with checkout and email already wired in. The tradeoff is weight and control. They load the styling and scripts for every widget the platform offers, used or not, and because they're closed hosted platforms, you can't get in and take any of it out. You didn't add that code, you can't remove it, and it sits there slowing the page down. GoHighLevel funnels, for example, routinely score low on Google's own mobile speed test, and there's no way to fix it from your side.
Page and funnel builders are made to do everything, for everyone, so they include the code for every feature anyone might use. Your site then loads a big chunk of that code even when your page uses almost none of it. It works this way whether you're on Elementor, or on a funnel platform like GoHighLevel, ClickFunnels, or Systeme.
Those funnel builders are great at what they're built for, getting a campaign live fast with checkout and email already wired in. The tradeoff is weight and control. They load the styling and scripts for every widget the platform offers, used or not, and because they're closed hosted platforms, you can't get in and take any of it out. You didn't add that code, you can't remove it, and it sits there slowing the page down. GoHighLevel funnels, for example, routinely score low on Google's own mobile speed test, and there's no way to fix it from your side.
That matters more than it sounds like it should, because a slow page loses you customers. Google's own web.dev research points to case after case: the BBC found it lost 10% of its users for every extra second its site took to load, and when Vodafone made one of its speed scores 31% faster, sales went up 8%. A slow site quietly sends people away before they ever see what you do.
When I build from scratch, the site ships the code it needs and nothing else. There's no widget library idling in the background. That's most of the reason a hand-built site tends to feel instant while a heavy template site makes you wait.
Everything starts to look the same
Here's one you feel more than you measure. So many sites look alike now, and templates are a big reason why.
The numbers behind that are striking. WordPress powers something like 42 to 43% of every website on the internet, which is around 600 million sites (W3Techs). Elementor alone is on more than 12 million of them (Colorlib), and a single theme like Divi runs on over two million live sites (BuiltWith). Funnel builders make it even more obvious. Click through a few ClickFunnels, GoHighLevel, or Systeme pages and you can spot the next one on sight, the same stacked sections, the same headline-then-button pattern, all drawn from the same small set of funnel templates. When that many businesses start from the same handful of layouts, you get the look everyone recognizes without being able to name it. The same hero, the same three feature cards, the same testimonial slider, the same everything.
This isn't only a template problem, by the way. AI can produce the same generic page just as easily, and often faster, if you let it run without a clear direction. Ask a tool for a landing page and you'll usually get the same safe layout everyone else gets, because it's pulling from the average of everything it has seen. I use AI every day, so this isn't me knocking it. What keeps a page from looking like everyone else's, whether it came from a template, a funnel builder, or a prompt, is a person with a point of view directing it. That's the difference between a real site and AI slop.
A brand's whole job is to look like itself. To be the one people remember. A template works against that from the first minute, because it's designed to be reused by thousands of other people who want thousands of different things. Building from scratch is how a brand gets to look like nobody else, which is what having a brand is for.
You inherit the SEO, accessibility, and code
This is the part that stays hidden until it causes a problem. When you use a template, you inherit whatever it was built with, the good and the bad, and you don't get much say.
Take accessibility, whether people who use screen readers, keyboard navigation, or just need decent contrast can actually use your site. Every year WebAIM tests the top million home pages, and the 2026 report found that 95.9% of them had detectable accessibility failures, with an average of 56 problems per page. The most common ones were low-contrast text (nearly 84% of pages), missing image descriptions, and missing form labels. Those are everyday defaults, exactly the kind a template ships with and hands straight to you, baked in where you can't easily reach them.
SEO and code quality work the same way. You're standing on choices somebody else made for the average case, and when you need to fix or fine-tune one of them, you're often stuck. On a closed funnel platform like GoHighLevel or ClickFunnels, you're stuck sooner, because you can't reach the underlying code at all. If a page has low-contrast buttons or missing labels, you're limited to the toggles the platform hands you, and past those you live with it. Build from scratch and every one of those becomes a decision you get to make on purpose. Contrast that passes. Real labels and alt text. Clean markup that search engines can read easily. You own it instead of inheriting it.
So I build from scratch
Put all of that together and it's the same thread running through every point. With a template, the site is in charge and you're working around it. Built from scratch, you're in charge and the site does what you and the brand actually need.
That's why speed, accessibility, SEO, security, and the rest are things I control on every build instead of hoping the template got them right. Those are the parts that decide whether a site is fast, findable, and usable, and I'd rather make those calls myself than inherit someone else's.
None of this makes templates bad. If money or time is tight, a good template is a smart move, and I'll tell you so. But if you've got a brand you want people to remember, on a site you want to be quick, easy to use, and easy to find, that's exactly where custom is worth it. That's the work I love doing, and it's why I build from scratch. 🐾