Custom website vs website builder: why I build by hand

Custom website vs website builder: an honest comparison of speed, SEO, cost over 3 years, ownership and editing, plus when a builder is the right call.

By Ilham Musyafa · June 20, 2026

Custom website vs website builder: why I build by hand

For a business website that has to load fast, rank, and keep working for years while its content changes a few times a year, a custom, hand-coded website usually wins. A website builder or page builder is the better choice when you will edit pages yourself every week, need to launch in days, or have almost no budget. I build sites by hand for a living, and I still tell some people to use a builder. Here is where the line sits, and how to measure the difference on your own site.

What "custom website" and "website builder" actually mean

"Website builder" and "page builder" are often used as if they were the same thing. They are not, and the difference matters for cost, speed and ownership.

Hosted website builders

Wix, Squarespace and Shopify are hosted platforms. You rent the software and hosting as one subscription and design in their editor. Nothing needs updating on your side, but the site only exists inside that platform.

WordPress page builders and the block editor

Elementor, Divi and Beaver Builder are plugins that sit on top of WordPress and add a drag-and-drop editor. The block editor (Gutenberg) is WordPress's own built-in editor. It is lighter than most page builders and good enough for many sites, but layouts are more limited unless a developer builds custom blocks.

Custom theme vs fully hand-coded site

A custom WordPress theme keeps WordPress as the content system, but the templates are written by a developer instead of assembled in a builder. A fully hand-coded site goes one step further: the pages are plain HTML, CSS and a little JavaScript, often generated from simple content files by a static site generator. That is what "custom coded website" means in this article.

OptionWho hostsWho edits contentCode involvedTypical fit
Hosted builder (Wix, Squarespace)The platformYou, in their editorNoneQuick small sites, DIY owners
WordPress + page builderYou or your hostYou, visuallyLittleSites edited often by non-developers
WordPress + block editorYou or your hostYou, in blocksLittle to someBlogs, simple business sites
WordPress + custom themeYou or your hostYou, in WordPressDeveloper-written themeLarger content sites
Hand-coded / staticAnywhereContent files or a small adminAll of itCompany profiles, fast lean sites

Custom website vs website builder, side by side

This compares the two ends. Most real projects land somewhere between them.

FactorWebsite builder / page builderHand-coded custom site
Cost to launchLow, often DIYHigher, a developer's time
Running costSubscriptions, licences, pluginsHosting, occasional developer hours
Page weightHeavy by defaultOnly what the page uses
EditingAnyone, visually, any timeContent files, a small admin, or a developer
SEO controlGood, with plugins and limitsFull, nothing in the way
Security surfacePlugins, themes, loginsVery small on a static site
OwnershipTied to the platform or the builderPlain files you can host anywhere
Time to launchDaysWeeks

Neither column is "good" or "bad". The question is which costs you can live with for the next three years.

Page weight: what a page builder ships

A page builder has to support every layout any user might build, so it loads the CSS and JavaScript for widgets, animations and options you may never use. Each section is also wrapped in several nested containers. The result is more bytes to download and more elements for the browser to lay out. Recent Elementor versions have trimmed some of this with their container system, so it is less extreme than it was, but the starting point is still heavier than a page that only contains what it needs.

A hand-coded page starts at zero and only grows when you add something. This site is an example: ilhammsf.com ran on WordPress until July 2026, then I moved it to a hand-coded static build where every page is generated from a Markdown file into plain HTML. Rather than quote someone else's test, here is how to measure your own.

How to measure your own site in 5 minutes

  1. Open the page in Chrome, press F12, go to the Network tab, tick "Disable cache", and reload.
  2. Read the summary bar at the bottom: number of requests, data transferred, and total resources.
  3. Press Ctrl+Shift+P, type "Coverage", start recording and reload. The Coverage tab shows, file by file, how much of the CSS and JavaScript the page actually used.
  4. In the Console, run document.querySelectorAll('*').length to count DOM elements. Lighthouse warns when a page's DOM is excessively large.
  5. Run the URL through PageSpeed Insights on mobile three times and take the middle result for LCP, INP and CLS.

Do the same on a comparable page built with a page builder and put the numbers side by side. That comparison is more convincing than any article, including this one.

Here is that measurement done for real on two sites I run, both loaded in Chrome with the cache disabled, desktop viewport, on October 21, 2026. The first is this site, which is hand-coded. The second is the homepage of Tangkap Rasa, my camera rental business, which runs on WordPress with Elementor. They are different pages with different content, so read it as a picture of where the weight comes from, not as a lab test.

Measured Oct 21, 2026ilhammsf.com (hand-coded)tangkaprasa.com (WordPress + Elementor)
Requests9120
Data transferred335 KB2.3 MB
JavaScript0 KB673 KB
CSS filesabout 1 KB (the rest is inline)155 KB
Fonts47 KB730 KB
Images271 KB734 KB
DOM elements3631,012

Most of the hand-coded page's weight is a single photo. On the builder page, the scripts and fonts alone weigh several times more than the entire hand-coded page, and none of that is content a visitor came for.

Is Elementor (or any page builder) bad for SEO?

No, not by itself. Plenty of Elementor sites rank well, because Google ranks pages mainly on relevance and helpfulness. A page builder makes some technical parts of SEO an uphill job, not an impossible one.

What Google actually measures

Google's page experience documentation says Core Web Vitals are used by its ranking systems, and also that Google will still show the most relevant content even when its page experience is weaker. The Core Web Vitals are LCP (how fast the main content appears, good is 2.5 seconds or less), INP (how quickly the page responds to taps and clicks, good is 200 milliseconds or less) and CLS (how much the layout jumps, good is 0.1 or less). Heavy CSS, render-blocking scripts and large DOMs hurt the first two. So does page speed affect SEO? Yes, as one signal among many. It rarely decides a ranking alone, but it is a tie-breaker you do not want to lose by default.

Markup and heading problems to check

The bigger SEO risk with builders is often the markup, not the speed. Things I check on builder sites:

  • Several H1s on one page, or headings chosen for their font size instead of their meaning.
  • Text that only exists inside tabs, sliders or accordions loaded by script.
  • Separate mobile and desktop copies of the same section, so the content appears twice in the HTML.
  • Images inserted as CSS backgrounds, which means no alt text and no image search.

All are fixable in a builder. On a hand-coded site they only happen if someone writes them that way.

Structured data on a hand-coded site

On WordPress, an SEO plugin usually adds structured data for you. On a hand-coded site you add it yourself, which takes minutes. For a company profile site, a LocalBusiness block covers the name, address, phone and opening hours. I generate it with the schema markup generator, paste the JSON-LD into the page head, and check it in Google's Rich Results Test. Structured data helps Google understand who the business is; it does not guarantee any special display in results.

The schema markup generator with a LocalBusiness example filled in. The JSON-LD on the right is ready to paste into the head of the page.
The schema markup generator with a LocalBusiness example filled in. The JSON-LD on the right is ready to paste into the head of the page.

Maintenance and security: the cost nobody quotes

A WordPress site with a page builder is software you have to keep running. Core, theme, builder and every plugin update on their own schedules, and each update is a small chance of a broken layout or, if skipped, a security hole. Somebody has to apply them and fix what breaks.

I see this first-hand. My camera rental business, Tangkap Rasa, has its public site on WordPress with Elementor. A few things I have had to fix there: a caching plugin injected a script into a page and turned part of an inline script into visible text. A long page cache outlived a form's security token, so bookings from a cached page were rejected until I shortened the cache lifetime. A global button colour from the Elementor kit overrode a design I had set per page. None were disasters, but each cost time a static page would not have.

The security side is real too. The old WordPress install of this site was hit by a spam injection that had to be cleaned up. A static site has no admin login exposed to the internet, no database to inject into, and no plugins to exploit.

Custom website vs website builder cost over 3 years

Launch price is the number everyone compares, and the least useful one. Compare three years instead:

Cost lineBuilder or page builder siteHand-coded site
BuildYour time, or a cheaper freelancerDeveloper fee, usually higher
PlatformMonthly builder plan, or a yearly page builder licenceNone
Plugins and add-onsPremium plugins, often yearlyNone
Hosting and domainIncluded in hosted plans, separate for WordPressSmall, static files are cheap to serve
Fixes and updatesYour time or developer hours after updatesOccasional developer hours for changes

To put real ranges against those lines, open the website cost calculator. Pick "Small business site", set "Who builds it" to "DIY builder" with "Template" and note the range. Then switch to "Freelancer" with "Custom design", add "Maintenance (monthly)" and "Hosting and domain (yearly)", and compare the yearly running lines, not just the build line. Multiply the running lines by three and add the build: that is the number to weigh against a quote. The calculator gives market ranges from published sources, not a quote.

The website cost calculator set up for a custom small business site built by a freelancer. The result splits the one-time build range, $3,300 to $5,000, from the running costs of $650 to $2,700 every year after, which is what you need for a three-year comparison.
The website cost calculator set up for a custom small business site built by a freelancer. The result splits the one-time build range, $3,300 to $5,000, from the running costs of $650 to $2,700 every year after, which is what you need for a three-year comparison.

A builder is almost always cheaper in year one. Whether it stays cheaper depends on the running lines, because renewals, licences and paid fixes repeat every year while a hand-coded build is paid once.

Ownership and leaving later

With a hosted builder you rent the website. Hosted platforms let you take some content out, but the design and layout stay behind, so leaving usually means rebuilding. With Elementor you own the WordPress install, but the layouts are stored as Elementor data; switch the builder off and pages fall back to unstyled content.

A hand-coded site is plain files you can move to any host in an afternoon.

If you move from Wix or an Elementor site to a custom build, rankings survive when you keep the same URLs where possible, set up 301 redirects for every URL that changes, carry over titles, meta descriptions and content, and resubmit the sitemap. Then watch the Page indexing report in Search Console for a few weeks; this guide on pages that are not indexed covers what the statuses mean.

Who edits a hand-coded website?

This is the strongest argument for a builder, so here is a straight answer. There is no drag-and-drop editor, but there are three practical ways to edit:

  1. Content files. Each page or post is a Markdown file: plain text with a few symbols for headings and links. Edit the file, rebuild, done. This site works that way.
  2. A small admin. A simple form where you edit text, upload images and press publish. I use a small local admin for this site that writes the Markdown files and rebuilds the pages.
  3. A headless CMS. A hosted editing interface that feeds content into the custom site. It gives non-technical editors a familiar screen without a page builder on the front end.

None of these let you redesign a page by dragging blocks around. For a company profile that changes a few times a year, that is fine, even a feature: the design cannot drift. For a team that builds a new landing page every week, it is a real limitation.

When a website builder is the right call

I am not a purist. A builder is the better choice when:

  • You or your team will edit layouts, not just text, every week.
  • You need to be live within days and the budget is close to zero.
  • The site is a test: a new idea, a one-off event, a campaign page.
  • You want an online store with standard features and no custom logic; a hosted store platform does that well.
  • Nobody will be around to maintain code, and you would rather pay a platform than a person.

A 5-question decision framework

Answer these honestly and the choice usually makes itself.

QuestionIf yes, lean towards
Will you change page layouts yourself more than monthly?Builder
Do you need to launch within a week?Builder
Will the site run for 3 years or more with mostly the same structure?Custom
Does speed or SEO bring you customers (local search, organic leads)?Custom
Do you need features no template has (booking, calculators, integrations)?Custom

Mixed answers are common. In that case a lean WordPress setup with the block editor, or a custom site with a small admin, is often the middle ground. For bigger custom features, the same reasoning applies as in deciding between a custom tool and a SaaS subscription.

Frequently asked questions

Is it better to code a website or use a website builder?

It depends on who edits the site and for how long it has to last. Code it, or have it coded, when the site is a long-term business asset that changes a few times a year and needs to be fast. Use a builder when you will redesign pages yourself often or need to launch this week on a tiny budget.

Is Elementor bad for SEO?

No. Elementor sites can rank well, because relevance matters far more than markup. It does make speed and clean headings harder work, so check Core Web Vitals and heading structure if you use it.

What does "custom website" mean?

A website whose design and code are made for that business rather than assembled from a template or builder. In its strictest form, the pages are hand-written HTML and CSS, often generated from simple content files.

How much does a custom website cost compared with a website builder?

A custom build costs more upfront, while a builder costs more in subscriptions, licences and fixes over time. Compare the three-year total, not the launch price.

Can I move from Wix or an Elementor site to a custom website without losing rankings?

Yes, if the migration is done carefully. Keep URLs where you can, 301 redirect every URL that changes, carry over titles, descriptions and content, then resubmit the sitemap and monitor the Page indexing report.

Can I edit a hand-coded website myself?

Yes, for text and images. Content lives in simple files or behind a small admin or headless CMS, so updating a page does not need a developer. Changing the layout or design does.

Is WordPress still worth it in 2026?

For many sites, yes. WordPress is a sensible choice when several people publish often and you want a large plugin ecosystem. It is overkill for a small company profile that changes a few times a year and would rather have nothing to update.

If you want to see what a hand-coded company profile looks like for your business, here is how I build them. Already on a builder and not sure what is holding it back? A website audit will show you, or you can get in touch.