Website development costs are driven by four things: how much is custom, how many systems it must talk to, who does the work, and how fast it has to ship. Page count barely registers. That is why two quotes for “the same site” can differ by a factor of ten and both be honest.
This guide covers the market broadly — WordPress, custom builds, and the agency-versus-freelancer gap. If you only want the WordPress-specific numbers, what a WordPress website costs has that breakdown; the figures agree with this page.
The four cost drivers
| Driver | Cheap end | Expensive end |
|---|---|---|
| Design | Template, colours changed | Custom design system, multiple templates |
| Integrations | None | CRM, payments, ERP, booking, SSO |
| Content | You write and upload it | Copywriting, photography, migration of 400 pages |
| Timeframe | Next month | Three weeks, with penalties |
Everything else is a detail. A 20-page site with no integrations is cheaper than a 6-page site wired into a booking system, and anyone quoting per-page is either simplifying for your benefit or has not understood the brief.
What the market actually charges
| Route | Typical range | What you get |
|---|---|---|
| Do it yourself | $46–$100 first year | Domain, hosting, free theme, your own time |
| Freelancer, defined scope | $3,000–$7,500 | Theme-based build, 5–15 pages, basic SEO |
| Custom or commerce | $10,000+ | Custom theme or functionality, integrations, migration |
| Agency, brand-led | $25,000 and up | Strategy, design system, several stakeholders, QA |
Hourly rates track the same ladder: a freelancer in a low-cost region might be $25–$50 an hour, an experienced independent in a major market $75–$150, an agency $150–$250, and a specialist consultancy more. Multiply by the hours in a scope and you get the fixed price, plus the agency’s margin for project management you did not ask for but will use.
Treat every number here as a range, not a quote. The useful question is not “what should this cost” but “what is included at this price”.
Where the money hides
- Content. The most commonly underestimated line. A build finishes and sits empty for six weeks because nobody wrote the pages. Budget copywriting as a separate item and it stops being a surprise.
- Migrations. Moving 400 pages, 2,000 images and a decade of redirects is a project of its own. If a quote does not mention redirects, ask.
- Integrations. Each one has three costs: the connection, the testing, and the maintenance when the other service changes its API.
- Revisions. Two rounds included is normal; a client with five decision-makers needs more, and it should be priced rather than absorbed.
- After launch. Updates, backups, security and small changes. Roughly $300–$1,000 a year for basic care, more if you want changes included every month.
How to compare quotes that look nothing alike
- Write a one-page scope first. Pages, features, integrations, who supplies content, who supplies images, deadline. Send the same document to everyone.
- Ask what is excluded. A quote with a short exclusion list is usually more honest than a low number with no list at all.
- Ask what happens after launch. Handover, training, warranty period, and whether the code and accounts are yours.
- Compare the third number. Not the build price — the total cost over two years including maintenance and the changes you know are coming.
A $4,000 build with $2,000 of fixes in year one is worse value than a $7,000 build that holds. The cheapest quote is rarely the cheapest outcome.
Where people overspend
Custom design for a site whose visitors only want a phone number and a form. Bespoke functionality that a $60 plugin already does. A rebuild when a performance fix and a better theme would have solved the actual complaint.
Where people underspend, and pay twice
Hosting. A $2-a-month shared plan on a site with traffic produces the slow, unstable experience that everyone then blames on WordPress. Backups, because the first time you need one is the worst time to discover it was never configured. And technical SEO at build time — fixing a structural mistake after indexing costs more than doing it once, properly, before launch.
If the site is already live and the question is keeping it healthy rather than building it, that is a smaller and more predictable number: our WordPress maintenance plans cover updates, backups and small changes from $99 a month.
How to compare three quotes fairly
Three quotes for “a website” are rarely three prices for the same thing. Before you compare numbers, get each supplier to answer the same six questions in writing:
- How many pages, and which ones?
- Is the design custom, a modified template, or a stock theme?
- Who writes the copy, and who sources the images?
- What is included after launch — updates, backups, support, for how long?
- What happens when we need a change in month two, and at what rate?
- Who owns the site, the domain and the hosting account when we part ways?
The cheapest quote usually wins on price and loses on questions four and six. The most expensive one usually answers all six and adds a retainer you may not need. Put the answers side by side and the decision usually makes itself.
FAQ
Why is a custom website so much more expensive than a template?
A template is design work amortised across thousands of buyers. Custom means you pay for the design hours, the build hours and the testing once, yourself. The gap is real work, not markup.
Is it cheaper to hire a freelancer or an agency?
The freelancer, for a defined scope with one decision-maker. The agency buys you project management, several specialists and cover when someone is ill — worth it when the site matters to revenue and the scope keeps changing.
Should I pay hourly or fixed price?
Fixed price when the scope is clear and you want budget certainty; hourly when you are exploring or fixing an unknown problem. Fixed price with a vague scope is how disputes start.
How much should maintenance cost?
Basic care — updates, backups, uptime monitoring, a monthly report — typically $300–$1,000 a year. Plans that include a block of changes each month sit above that.