The short answer
A website migration costs whatever it takes to rebuild your templates, move your content, reconnect your integrations, protect your search visibility and test all of it, multiplied by the hourly rates of the people doing the work. The page count matters less than most people expect. A 500-page blog with three templates can be cheaper to migrate than a 40-page site with fifteen unique layouts, five forms and a CRM integration.
That is why a single "average migration price" is not useful. This guide explains the drivers, walks through the phases, and shows worked examples calculated with the same transparent formulas SiteRefactor uses in its reports. It also covers the option that is often cheapest of all: not migrating, and improving the site you already have.
What drives the cost
Unique templates
Every distinct layout (home, service page, article, listing, contact, landing page) has to be designed, built, made responsive and tested. Twenty pages sharing one template are much cheaper than twenty pages that each look different. Templates are usually the largest single driver of design and front-end effort.
Content types
Posts, case studies, team members, locations, products, events: each content type needs a model in the new CMS, fields, a template and import logic.
Page volume and export path
Small sites are often migrated by hand. Larger sites need a scripted import, which has a fixed setup cost but a low cost per page. What matters is whether content can be exported in a structured way (database, API, CSV) or has to be scraped from HTML.
Page builders
Content built with Elementor, Divi, WPBakery and similar tools stores layout and content together in builder-specific markup. It rarely converts cleanly, so layout-heavy pages are rebuilt rather than imported. This affects modernizing WordPress as well as leaving it.
Forms and integrations
Each form needs validation, spam protection, notifications and often a connection to a CRM or newsletter tool. Each integration (CRM, booking, search, payments, marketing automation) must be reconnected and tested.
E-commerce
Products, variants, categories, customers, order history, payments, shipping, taxes and transactional emails turn a website migration into a commerce project. Checkout testing alone is significant work.
Languages
Every additional language adds localized routing, hreflang annotations, translation workflows and more URLs to redirect and test.
Closed platforms
Hosted website builders often offer limited export options. When content cannot be exported in a structured form, extracting it takes manual effort, and some functionality (built-in bookings, stores, member areas) has to be rebuilt from scratch.
Hidden functionality
Admin workflows, scheduled jobs, automated emails and private integrations are invisible from the public site. No external analysis can see them, so they must be discovered in a conversation and priced separately.
Phases of a migration
| Phase | What happens | What drives effort |
|---|---|---|
| Discovery | Requirements, inventory, platform and hosting choice | Number of integrations, e-commerce, languages |
| Design | Design system and template designs | Number of templates; re-skin or full redesign |
| Front-end build | Building templates, components and forms | Templates, forms, languages, interactions |
| CMS setup | Content models, fields, editor roles, previews | Number of content types |
| Content migration | Export, transform, import and verify content and media | Page volume, page builders, export options |
| Integrations | Reconnecting CRM, newsletter, analytics, search and other tools | Number and complexity of integrations |
| SEO migration | URL mapping, 301 redirects, metadata, structured data, sitemaps | Number of URLs that change |
| QA | Functional, visual, cross-browser, accessibility and redirect testing | Scales with build effort |
| Deployment | Environments, DNS, SSL, go-live and rollback plan | Hosting setup, e-commerce checkout tests |
| Project management | Planning, coordination, feedback rounds, reporting | Scales with total effort |
One-time vs recurring costs
The build is a one-time cost. Running the site is not, and over three years recurring costs can rival the build. A difference of $100 a month adds up to $3,600 over three years, so compare total cost of ownership, not only the project price.
Recurring costs typically include hosting, platform subscriptions (site plans, store plans, CMS plans), plugin or app licenses, editor seats, and maintenance time for updates, monitoring and small fixes. SiteRefactor uses these planning ranges per option:
| Option | Platform fees / month | Maintenance hours / month |
|---|---|---|
| Keep & optimize | Your current fees (unchanged, not included) | 1–4 h |
| Modernize WordPress / Rebuild on WordPress | $25–150 (managed hosting, premium plugins) | 2–5 h |
| Migrate to Next.js | $0–150 (hosting and headless CMS; many have free tiers) | 2–8 h |
| Migrate to Webflow | $18–80 (site plan and seats) | 1–3 h |
| Migrate to Shopify | $60–450 (plan and typical paid apps) | 2–6 h |
Maintenance hours are priced at the development rate, and payment processing or transaction fees are excluded. Check current vendor pricing for your own plan choices; these are planning assumptions, not price lists.
DIY, freelancer or agency
- DIY costs the least in cash and the most in time. It suits small brochure sites, especially when keeping the platform or using a template. The biggest risk is the SEO migration: missed redirects are cheap to prevent and expensive to discover later. SiteRefactor generates a DIY roadmap for exactly this situation.
- A freelancer offers flexibility and usually lower rates. Check relevant portfolio work and make sure you own the accounts and code, so you are not dependent on one person.
- An agency brings design, development, QA and project management under one roof, at higher rates. It is often the safer choice for sites with e-commerce, many integrations or several languages.
Whoever you hire, ask for a quote that itemizes phases, lists assumptions and exclusions, describes the redirect and QA approach, defines post-launch support, and confirms that you will own the code, content and accounts.
How SiteRefactor estimates
SiteRefactor's estimates are deterministic: the same inputs always produce the same output, and every number can be traced back to an explicit formula. No AI model invents prices.
- Measured inputs. The analysis collects detected platform and page builder, the number of templates, content types, forms and integrations, page volume (from the XML sitemap where available, otherwise from a limited crawl), product count, languages, publicly referenced plugins, and performance and SEO scores.
- Hours per phase. Each phase has a formula with a minimum and maximum, for example a fixed base plus a number of hours per template. Content migration uses manual effort per page up to about 30 pages and a scripted import above that, with extra effort for page-builder content.
- QA and project management. QA is calculated as roughly 15–25% of build effort, and project management as roughly 10–15% of total effort. Store migrations to Shopify use 20–30% for QA because of catalog and checkout testing; the smaller keep-and-optimize scope uses 10–15% for QA and 8–12% for project management.
- Hours × rates. Each phase is multiplied by the rate for its role. The low end of a range uses the minimum hours at the minimum rate, and the high end the maximum hours at the maximum rate.
- Rounding. Hours are rounded to the nearest five, and one-time costs to $100, $250, $500 or $1,000 depending on size (monthly running costs to the nearest $10), so the result does not imply false precision.
- Timeline. Calendar time assumes a small team delivering 30–60 hours per week in total, with a buffer week for larger projects. Content readiness and feedback speed can change this more than anything else.
The default planning rates are:
| Role | Default planning rate |
|---|---|
| Development | $50–100 per hour |
| Design | $40–90 per hour |
| QA | $35–70 per hour |
| Project management | $40–90 per hour |
These rates are configurable planning assumptions, not verified market rates and not quotes. Real rates vary widely by country, seniority and type of provider, and a deployment of SiteRefactor can be configured with different rates.
Missing data widens the range. When less than 60% of the analysis data is available, for example because few pages could be inspected, no sitemap was found or PageSpeed results were unavailable, the upper bound is multiplied by 1.25. If the platform could not be identified at all, it widens further. Each estimate also carries a confidence level. High confidence requires at least 85% data completeness, a page count taken from the sitemap, and answers to at least two of the optional questions about your goal, who maintains the site and your budget. Low-confidence results are labeled "preliminary" in the report.
Always excluded: copywriting, photography and new content; paid licenses and subscriptions (shown separately as recurring costs); functionality not visible on public pages; and ongoing marketing, SEO campaigns or advertising.
Worked examples
Illustrative examples computed with SiteRefactor's default planning assumptions. The inputs below are hypothetical but plausible sites; the outputs are exactly what the estimator returns for them, with no optional preferences selected (so no redesign goal is assumed). They are not quotes and say nothing about what any particular provider would charge. The recurring column combines platform fees with maintenance hours at development rates, rounded outward to the nearest $10 per month.
Example A: a 15-page brochure site on WordPress
Inputs: WordPress, 15 pages counted from the sitemap, 4 templates, 2 content types, 1 contact form, 2 integrations (analytics and a newsletter tool), 12 publicly referenced plugins, no page builder, one language, no store. Mobile performance score 45, SEO fundamentals score 72, 90% data completeness.
| Option | One-time cost | Effort | Timeline | Recurring / month |
|---|---|---|---|---|
| Keep & optimize | $1,900–9,000 | 40–95 h | 1–4 weeks | $50–400 |
| Modernize WordPress | $4,000–21,000 | 90–225 h | 2–9 weeks | $120–650 |
| Migrate to Webflow | $4,500–22,500 | 100–240 h | 2–9 weeks | $60–380 |
| Migrate to Next.js | $6,500–30,000 | 140–320 h | 3–12 weeks | $100–950 |
For a site this small, content migration is a minor item (6–13.5 hours in the Next.js estimate). The front-end build (50–89 hours) and design (20–40 hours) dominate. If the main problem is a mobile performance score of 45, the keep-and-optimize option addresses it for a fraction of the cost of any rebuild.
Example B: a 250-page content site built with Elementor
Inputs: WordPress with Elementor, 250 pages counted from the sitemap, a blog, 7 templates, 3 content types, 2 forms, 3 integrations (analytics, CRM and a newsletter tool), 25 publicly referenced plugins, one language, no store. Mobile performance score 38, SEO fundamentals score 68, 90% data completeness.
| Option | One-time cost | Effort | Timeline | Recurring / month |
|---|---|---|---|---|
| Keep & optimize | $2,000–9,500 | 40–100 h | 1–4 weeks | $50–400 |
| Modernize WordPress | $7,750–41,500 | 165–445 h | 3–16 weeks | $120–650 |
| Migrate to Webflow | $7,750–40,000 | 170–435 h | 3–16 weeks | $60–380 |
| Migrate to Next.js | $10,500–53,000 | 235–570 h | 4–20 weeks | $100–950 |
This example surprises people: modernizing WordPress is estimated at roughly the same range as moving to Webflow. The reason is the page builder. Converting up to 250 Elementor layouts to native blocks accounts for 41.5–108 hours on its own. Staying on the same platform is not automatically cheap if every layout has to be rebuilt; it does, however, keep URLs and the editing workflow in place, which lowers SEO and training risk. Keeping and optimizing the existing site remains by far the least expensive path.
Example C: a WooCommerce store with about 300 products
Inputs: WordPress with WooCommerce, about 380 URLs in the sitemap including roughly 300 products, a blog, 6 templates, 3 content types, 2 forms, 4 integrations (payments, email marketing, shipping and analytics), 30 publicly referenced plugins, one language. Mobile performance score 35, SEO fundamentals score 70, 90% data completeness.
| Option | One-time cost | Effort | Timeline | Recurring / month |
|---|---|---|---|---|
| Modernize WordPress (keep WooCommerce) | $6,000–31,500 | 130–340 h | 3–13 weeks | $120–650 |
| Migrate to Shopify | $9,250–47,000 | 205–510 h | 4–18 weeks | $160–1,050 |
Moving to Shopify includes product, customer and order migration (20–60 hours for about 300 products), store configuration for payments, shipping and taxes, and a larger QA share for checkout testing. The recurring range covers the Shopify plan and typical paid apps plus maintenance time; transaction fees are excluded.
What missing data does to a range
Take Example A's Next.js migration again, but assume only 50% of the analysis data was available and the page count came from a limited crawl instead of a sitemap. The estimator then returns $6,500–37,000, 140–400 hours and 3–15 weeks, labeled preliminary. The lower bound is unchanged; the upper bound widens by a factor of 1.25 to reflect what is not known.
How to read an estimate range
- The low end assumes the work goes smoothly and is done at the lower planning rate. The high end assumes more effort at the higher rate. Both uncertainties multiply, which is why ranges are wide.
- Compare options side by side. Because every option uses the same assumptions, the relative differences between them are more informative than any single absolute number.
- Look at the phase breakdown to see what actually drives the total. If content migration dominates, a content audit may save more than negotiating rates.
- Read the assumptions and exclusions. A quote that looks cheaper may simply exclude the SEO migration, QA or content work.
- Treat preliminary results with extra caution. They are based on incomplete data and are best used for orientation.
- An estimate is not a quote. A binding price requires a scoping conversation with the provider. Real quotes can fall outside the range, especially where rates differ from the planning assumptions or where non-public functionality exists.
Reducing cost and risk
- Fix in place first when the problem is speed, security hygiene or SEO basics. The keep-and-optimize option is often the best value.
- Audit content before migrating. Merging or retiring outdated pages reduces import, QA and redirect work.
- Consolidate templates. Fewer, more flexible layouts are cheaper to build and easier to maintain.
- Keep URLs unchanged wherever the new platform allows it.
- Prepare content early. Late content is a frequent cause of delay.
- Phase the project. Launch the core site first and add secondary features afterwards.
- Agree on acceptance criteria before the build starts, so "done" means the same thing to everyone.
For platform-specific considerations, see our guides to migrating WordPress to Next.js and WordPress to Webflow, and use the migration checklist to plan the launch. To see these formulas applied to your own site, run a free analysis below.