Move your website with every old link mapped and checked.

For owners stuck on a platform: each old URL gets a 301, checked against a crawl, and the text is compared before release. The static target is checked at 12 stages on eight sites.

An interactive example Redirect map builder

Runs in your browser

URLs
26
Redirected
16
Kept
7
Need a decision
3
Unaccounted
0
Old URL to new URL for cafe.example, a Wix site moving to WordPress
RowOld URLNew URLStatus
01 / to / kept: kept, no redirect needed
02 /menu to /menu/slash added by WordPress kept: kept, no redirect needed
03 /post/sourdough-starter-guide to /blog/sourdough-starter-guide/ 301: permanent redirect
04 /product-page/house-blend-coffee to /product/house-blend-coffee/ 301: permanent redirect
05 /old-menu to /menu/chain flattened 301: permanent redirect
06 /blog/tags/sourdough tag archive decide: needs a decision
07 /About to /about/case variant 301: permanent redirect
08 /catering to /catering/slash added by WordPress kept: kept, no redirect needed
09 /about to /about/slash added by WordPress kept: kept, no redirect needed
10 /contact to /contact/slash added by WordPress kept: kept, no redirect needed
11 /visit to /visit/slash added by WordPress kept: kept, no redirect needed
12 /blog to /blog/slash added by WordPress kept: kept, no redirect needed
13 /blog/categories/recipes to /category/recipes/ 301: permanent redirect
14 /blog/page/2 pagination decide: needs a decision
15 /cart-page platform system page decide: needs a decision
16 /post/why-we-mill-our-own-flour to /blog/why-we-mill-our-own-flour/ 301: permanent redirect
17 /post/winter-menu-is-here to /blog/winter-menu-is-here/ 301: permanent redirect
18 /post/meet-the-bakers to /blog/meet-the-bakers/ 301: permanent redirect
19 /post/holiday-hours to /blog/holiday-hours/ 301: permanent redirect
20 /post/catering-for-small-weddings to /blog/catering-for-small-weddings/ 301: permanent redirect
21 /post/how-we-roast-coffee to /blog/how-we-roast-coffee/ 301: permanent redirect
22 /post/cold-brew-at-home to /blog/cold-brew-at-home/ 301: permanent redirect
23 /product-page/sourdough-loaf to /product/sourdough-loaf/ 301: permanent redirect
24 /product-page/gift-card to /product/gift-card/ 301: permanent redirect
25 /product-page/cold-brew-concentrate to /product/cold-brew-concentrate/ 301: permanent redirect
26 /product-page/granola-jar to /product/granola-jar/ 301: permanent redirect
Show all 26 rowsShow the first 5 rows
redirects.conf
# Redirect map: cafe.example (Wix) to WordPress. 16 permanent redirects.
# map block: http context. if line: inside the server block.
map $uri $ffd_redirect {
    default "";
    /post/sourdough-starter-guide        /blog/sourdough-starter-guide/;
    /product-page/house-blend-coffee     /product/house-blend-coffee/;
    /old-menu                            /menu/;
    /About                               /about/;
    /blog/categories/recipes             /category/recipes/;
    /post/why-we-mill-our-own-flour      /blog/why-we-mill-our-own-flour/;
    /post/winter-menu-is-here            /blog/winter-menu-is-here/;
    /post/meet-the-bakers                /blog/meet-the-bakers/;
    /post/holiday-hours                  /blog/holiday-hours/;
    /post/catering-for-small-weddings    /blog/catering-for-small-weddings/;
    /post/how-we-roast-coffee            /blog/how-we-roast-coffee/;
    /post/cold-brew-at-home              /blog/cold-brew-at-home/;
    /product-page/sourdough-loaf         /product/sourdough-loaf/;
    /product-page/gift-card              /product/gift-card/;
    /product-page/cold-brew-concentrate  /product/cold-brew-concentrate/;
    /product-page/granola-jar            /product/granola-jar/;
}
if ($ffd_redirect) { return 301 $ffd_redirect; }
# decide: /blog/tags/sourdough (tag archive)
# decide: /blog/page/2 (pagination)
# decide: /cart-page (platform system page)
.htaccess
# Redirect map: cafe.example (Wix) to WordPress. 16 permanent redirects.
RedirectMatch 301 "^/post/sourdough-starter-guide$" "/blog/sourdough-starter-guide/"
RedirectMatch 301 "^/product-page/house-blend-coffee$" "/product/house-blend-coffee/"
RedirectMatch 301 "^/old-menu$" "/menu/"
RedirectMatch 301 "^/About$" "/about/"
RedirectMatch 301 "^/blog/categories/recipes$" "/category/recipes/"
RedirectMatch 301 "^/post/why-we-mill-our-own-flour$" "/blog/why-we-mill-our-own-flour/"
RedirectMatch 301 "^/post/winter-menu-is-here$" "/blog/winter-menu-is-here/"
RedirectMatch 301 "^/post/meet-the-bakers$" "/blog/meet-the-bakers/"
RedirectMatch 301 "^/post/holiday-hours$" "/blog/holiday-hours/"
RedirectMatch 301 "^/post/catering-for-small-weddings$" "/blog/catering-for-small-weddings/"
RedirectMatch 301 "^/post/how-we-roast-coffee$" "/blog/how-we-roast-coffee/"
RedirectMatch 301 "^/post/cold-brew-at-home$" "/blog/cold-brew-at-home/"
RedirectMatch 301 "^/product-page/sourdough-loaf$" "/product/sourdough-loaf/"
RedirectMatch 301 "^/product-page/gift-card$" "/product/gift-card/"
RedirectMatch 301 "^/product-page/cold-brew-concentrate$" "/product/cold-brew-concentrate/"
RedirectMatch 301 "^/product-page/granola-jar$" "/product/granola-jar/"
# decide: /blog/tags/sourdough (tag archive)
# decide: /blog/page/2 (pagination)
# decide: /cart-page (platform system page)
_redirects
# Redirect map: cafe.example (Wix) to WordPress. Netlify or Cloudflare Pages.
/post/sourdough-starter-guide        /blog/sourdough-starter-guide/  301
/product-page/house-blend-coffee     /product/house-blend-coffee/  301
/old-menu                            /menu/  301
/About                               /about/  301
/blog/categories/recipes             /category/recipes/  301
/post/why-we-mill-our-own-flour      /blog/why-we-mill-our-own-flour/  301
/post/winter-menu-is-here            /blog/winter-menu-is-here/  301
/post/meet-the-bakers                /blog/meet-the-bakers/  301
/post/holiday-hours                  /blog/holiday-hours/  301
/post/catering-for-small-weddings    /blog/catering-for-small-weddings/  301
/post/how-we-roast-coffee            /blog/how-we-roast-coffee/  301
/post/cold-brew-at-home              /blog/cold-brew-at-home/  301
/product-page/sourdough-loaf         /product/sourdough-loaf/  301
/product-page/gift-card              /product/gift-card/  301
/product-page/cold-brew-concentrate  /product/cold-brew-concentrate/  301
/product-page/granola-jar            /product/granola-jar/  301
# decide: /blog/tags/sourdough (tag archive)
# decide: /blog/page/2 (pagination)
# decide: /cart-page (platform system page)
vercel.jsonpermanent: true answers 308. Google treats 308 like 301.
{
  "redirects": [
    { "source": "/post/sourdough-starter-guide", "destination": "/blog/sourdough-starter-guide/", "permanent": true },
    { "source": "/product-page/house-blend-coffee", "destination": "/product/house-blend-coffee/", "permanent": true },
    { "source": "/old-menu", "destination": "/menu/", "permanent": true },
    { "source": "/About", "destination": "/about/", "permanent": true },
    { "source": "/blog/categories/recipes", "destination": "/category/recipes/", "permanent": true },
    { "source": "/post/why-we-mill-our-own-flour", "destination": "/blog/why-we-mill-our-own-flour/", "permanent": true },
    { "source": "/post/winter-menu-is-here", "destination": "/blog/winter-menu-is-here/", "permanent": true },
    { "source": "/post/meet-the-bakers", "destination": "/blog/meet-the-bakers/", "permanent": true },
    { "source": "/post/holiday-hours", "destination": "/blog/holiday-hours/", "permanent": true },
    { "source": "/post/catering-for-small-weddings", "destination": "/blog/catering-for-small-weddings/", "permanent": true },
    { "source": "/post/how-we-roast-coffee", "destination": "/blog/how-we-roast-coffee/", "permanent": true },
    { "source": "/post/cold-brew-at-home", "destination": "/blog/cold-brew-at-home/", "permanent": true },
    { "source": "/product-page/sourdough-loaf", "destination": "/product/sourdough-loaf/", "permanent": true },
    { "source": "/product-page/gift-card", "destination": "/product/gift-card/", "permanent": true },
    { "source": "/product-page/cold-brew-concentrate", "destination": "/product/cold-brew-concentrate/", "permanent": true },
    { "source": "/product-page/granola-jar", "destination": "/product/granola-jar/", "permanent": true }
  ]
}
redirection.csv
source,target,regex,code
/post/sourdough-starter-guide,/blog/sourdough-starter-guide/,0,301
/product-page/house-blend-coffee,/product/house-blend-coffee/,0,301
/old-menu,/menu/,0,301
/About,/about/,0,301
/blog/categories/recipes,/category/recipes/,0,301
/post/why-we-mill-our-own-flour,/blog/why-we-mill-our-own-flour/,0,301
/post/winter-menu-is-here,/blog/winter-menu-is-here/,0,301
/post/meet-the-bakers,/blog/meet-the-bakers/,0,301
/post/holiday-hours,/blog/holiday-hours/,0,301
/post/catering-for-small-weddings,/blog/catering-for-small-weddings/,0,301
/post/how-we-roast-coffee,/blog/how-we-roast-coffee/,0,301
/post/cold-brew-at-home,/blog/cold-brew-at-home/,0,301
/product-page/sourdough-loaf,/product/sourdough-loaf/,0,301
/product-page/gift-card,/product/gift-card/,0,301
/product-page/cold-brew-concentrate,/product/cold-brew-concentrate/,0,301
/product-page/granola-jar,/product/granola-jar/,0,301
Download map (.csv)
Checks run on the map
Chains flattenedold redirects now point straight to the final page1
Many old URLs to one new URLonly variants of the same page may share one0
Sent to the home pagethree or more is a soft 404 risk0
Case and slash variants foldedeach variant still gets its own rule1
Duplicates removed0
ID-only addressesa person matches each ID to its page0
Unaccountedevery URL in the list has a status0

Checked against Google's site-move guidance (opens Google Search Central)

3 need a decision. The audit resolves these.

Pick a sample site or paste your own URLs: the map, its 301 rules and its checks are worked out live in your browser, and nothing is uploaded.

Sound familiar

Your platform is slow and pricey, a cage you want out of. What keeps you there is a Google result that leads to a dead page, and a lost weekend fixing links. We crawl the old site, map every URL, write the 301 redirects and compare the new text with the old before anything goes live.

Before anything changes, we back up the files, database and domain settings and restore them once on a test server. Undoing the move is planned as one change, and your customers keep the same links.

What you get

Your site sits on the GoDaddy builder or Wix, and you want to own it and edit it freely. We weigh a new builder or host against what you need.

  • Page inventory. We crawl the old site and account for every page, post and image before choosing what moves.
  • Old links. Each old web address gets a 301 redirect, checked against the crawl and a truth table of expected destinations. [301, truth table]
  • Content check. Old and new text are compared, and the release stops if anything beyond the agreed change differs.
  • Hosting choice. We compare a shared host with a private or managed server: software updates, certificate renewal and backups.
  • Browser padlock. The new certificate is checked before the switch, and every address, with and without www, goes to the secure version. [SSL]
  • Release plan. One switch to the new site, a way back, and a check that the new site answers.

Tell us which editing limits you want gone. The work can start there.

The check, on real moves

Two sites moved from Kirby to Astro on this method, built and verified on staging first. The migration case study walks through the checks. [Kirby, Astro 5, Tailwind 4]

prlwarehouse.com, live prlwarehouse.com Captured

prlwarehouse.com at phone width: the used-racking banner, menu, Get a quote and the heading Pallet Racking and Warehouse Storage Denver CO. Enlarge
One of the two, Kirby to Astro: 34 of 34 mapped old URLs answer 301 on production. Open the site

A move-day checklist covers the home page, menu and order form, the padlock, test emails, contact messages, monitoring and backups. The old host stays available as the fallback.

Builder-to-builder moves, such as Wix to Framer, follow the same map-and-check method. WordPress conversions have their own page.

The static target

Your page text needs a checked destination as well as a redirect.

Judge the build quality yourself in the site factory. It also tested its contact-form handler against a test mail server.

  • 8 Trade-business sites Build inventory Checked
  • 309 Content pages Build inventory Checked
  • 8 Error pages Build inventory Checked

Moves for other people

We have moved sites for clients, too.

A host change needs a plan for your domain settings. Computers remember the old address for a set time. We shorten that time to minutes two days before the switch and raise it again once checks pass. [DNS, TTL]

The switch, drawn as a plan: the address refresh time (TTL) is lowered before move day T, both servers answer while the change spreads, and the old one stays ready as the way back.

Data out of a platform

Your customer records can move too. We plan an export from the tool holding your leads, operations or membership records into a database you own.

Before a hosting switch, we record the files, database settings and the domain records used for email. The site is copied to the new server and tested privately before the address switches, and the old host retires after the checks pass.

Your inbox and contact form belong in those checks. Mail settings are copied exactly, and test messages go in and out. [MX, SPF, DKIM]

The database work includes 27 repeatable database changes across two databases. [Postgres, Drizzle]

How it is built

Skip the technical part

This part is for the technical reader.

Each old address gets an entry in a redirect map. The map is checked against the crawl and a truth table of expected destinations before release. [redirect map, 301 truth table]

Each site runs about 25 build tools. They add structured page data for search engines and compare content, so only the declared text change passes. Releases go out in one step, with a rollback and a health check. [schema.org, content fidelity, atomic release]

We check forms, tracking and checkout privately before a builder or hosting move, then record a short video tour of the site.

During a host switch the old server keeps running. Any orders or messages that land there late are copied over afterward.

Start small

Nothing moves until a paid site audit lands: every page, redirect and risk mapped, plus the platform we would pick and why. The audit is yours to keep. Your old platform had its run; stop at the audit, or pack up and leave with a scope you can review.

Tell us what you would change.

One sentence about the project is enough. Name the tools you already use, or point at an example on this site.

Start a project