How to move your website to a new domain without losing your Google traffic
Changing your domain name is safe if every old address points to its new one, permanently. Here is the order to do it in.
To move a website to a new domain without losing Google traffic, redirect every old URL to its matching new URL with a permanent (301) redirect, then tell Google with the Change of Address tool in Search Console. Keep the redirects for at least a year, keep paying for the old domain, and expect rankings to wobble for a few weeks while Google catches up.
Most traffic lost in a domain move is lost to one of three things: old pages that redirect to the homepage, old pages that redirect nowhere, or an old domain that expires. All three can be avoided. Below is the order to do it in, with what each step looks like in practice.
Before you start: change one thing
Google's own advice is to change one thing at a time. If you want a new domain, a new website builder and a new design, do them one after another, not in the same week. When traffic drops after three changes, you can't tell which one caused it.
Two more decisions to make first:
- Pick a quiet week. Not the week before your busiest season.
- Check your email. If your email addresses end in the old domain, they keep working only as long as the old domain's mail records do. Leave email where it is during the move. Move it later, as its own change.
Step 1: list every old URL
You can only redirect pages you know about. Build one list from several sources, because each one misses something:
- Your sitemap. Open
olddomain.com/sitemap.xmland copy the addresses. - Search Console. Open Indexing → Pages, then View data about indexed pages, and export. This is what Google actually has.
- Search Console Performance. Open Performance, choose the Pages tab, set the date range to 12 months and export. These are the pages that bring visitors, so they matter most.
- Your analytics. The landing pages report shows pages people arrive on from links, ads and old emails.
- Files. PDFs, menus, price lists and images that other sites link to directly.
Paste everything into one spreadsheet column and remove duplicates.
Step 2: map each old URL to one new URL
Next to each old address, write the new address that does the same job. If the paths don't change, this is easy: olddomain.com/menu becomes newdomain.com/menu. If some pages were renamed or merged, write those out one by one.
The rule: each old page goes to the closest matching new page. Not to the homepage. Google treats a pile of old pages redirected to one unrelated page as "soft 404s", which means it treats them as missing, and the traffic those pages had goes with them. If an old page has no equivalent at all, let it return 404.
When the map is done, paste it into the redirect map builder. It turns the pairs into rules for Apache, nginx, Netlify, Cloudflare and Vercel, and warns you about chains (A to B to C), loops and homepage dumps before they go live. It runs in your browser and sends nothing anywhere.
Step 3: get the new site ready
Put the full site live on the new domain before you add any redirects, and check these:
- Nothing blocks search engines. Staging sites often carry a
noindextag or aDisallow: /line inrobots.txt. Opennewdomain.com/robots.txtand view the source of a few pages. - Internal links use the new domain. Menus, footers, buttons and links inside your text. Search the site's content for the old domain name.
- Each page's canonical tag points to itself on the new domain, not to the old one. Copied sites keep the old canonical surprisingly often.
- A new sitemap lists the new URLs.
- Both domains are verified in Search Console, with the same Google account, and you're an owner of both. A Domain property covers http, https, www and non-www at once. If you verify with an HTML file, copy that file to the new site too.
- Every version of the old domain has its own property too. The Change of Address tool in step 5 runs on one host at a time:
olddomain.comdoes not includewww.olddomain.com. Add a URL-prefix property for each one, such ashttps://www.olddomain.com/, even the one you never used. - The new domain is added in Bing Webmaster Tools. Bing can import sites you've already verified in Search Console, which saves a step.
Step 4: switch on the redirects
Use server-side permanent redirects: 301 or 308. Not a JavaScript redirect, not a "this site has moved, click here" page. The redirect has to cover every version of the old domain: with and without www, http and https.
If your paths stay the same, one rule moves the whole domain and keeps the path. On nginx:
server {
listen 80;
listen 443 ssl;
server_name olddomain.com www.olddomain.com;
# keep a valid certificate for the old domain here
location / {
return 301 https://newdomain.com$request_uri;
}
}
On Apache, in the old site's .htaccess:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com$ [NC]
RewriteRule ^(.*)$ https://newdomain.com/$1 [R=301,L]
Point the rule at the exact address your new site uses. If the new site lives on www.newdomain.com, write that, or every old link takes two hops instead of one.
If some paths changed, you need the page-by-page rules from your map as well, and they have to win over the whole-domain rule:
- nginx: add them as
location = /old-pathblocks in the sameserverblock. An exact match beatslocation /wherever it sits. That's why the example wraps itsreturninlocation /: areturnwritten directly in theserverblock runs before nginx looks at any location, so the page rules would never fire (nginx's rewrite module docs give the order). - Apache: put them above the whole-domain rule.
RewriteRulelines run top to bottom.RedirectandRedirectMatchlines in.htaccessrun before anyRewriteRule, wherever they sit (Apache's docs), so those win too.
One thing people miss: the old domain still needs a valid HTTPS certificate. Every old link starts with https://olddomain.com. If the certificate has lapsed, the browser shows a security warning before the redirect ever runs, and most visitors leave.
Test every row, not three
Save your map as a text file, one pair per line, old and new separated by a space. Then run this in a terminal (Mac and Linux have curl built in):
while read -r old new || [ -n "$old" ]; do
got=$(curl -s -o /dev/null -w '%{http_code} %{redirect_url}' "$old")
[ "$got" = "301 $new" ] || echo "WRONG $old -> $got (want 301 $new)"
done < map.txt
It prints nothing when every row is right. Each line it prints is a page to fix. If you used 308 redirects, change 301 to 308 in the third line.
If every row prints WRONG even though the redirects work in a browser, check how the file was saved. A file saved from Excel or on Windows ends its lines with an invisible carriage return, so the expected address never matches. Strip it with tr -d '\r' < map.txt > map-clean.txt and run the loop on map-clean.txt.
Then check that the new addresses themselves load, without a second redirect:
while read -r old new || [ -n "$old" ]; do
code=$(curl -s -o /dev/null -w '%{http_code}' "$new")
[ "$code" = "200" ] || echo "$code $new"
done < map.txt
On Windows, open PowerShell. Windows 10 and 11 include curl.exe, so the same two checks are:
Get-Content map.txt | ForEach-Object {
$old, $new = $_ -split ' '
$got = curl.exe -s -o NUL -w '%{http_code} %{redirect_url}' $old
if ($got -ne "301 $new") { "WRONG $old -> $got (want 301 $new)" }
}
Get-Content map.txt | ForEach-Object {
$old, $new = $_ -split ' '
$code = curl.exe -s -o NUL -w '%{http_code}' $new
if ($code -ne '200') { "$code $new" }
}
For a single page, Search Console's URL Inspection tool does the same check from Google's side.
Step 5: tell Google and Bing
In Search Console, open the old domain's property, go to Settings → Change of address, and pick the new domain. The tool checks that you own both sites and that a few old pages return 301s, then asks Google to crawl the new site first and carry signals across. It works only for real domain or subdomain changes, not for moving from http to https or from www to non-www.
Run it once for every version of the old domain: from olddomain.com, then again from www.olddomain.com, both to the new domain. Google's guide says to do this for all variants, even the ones you don't use. One request covers both http and https of the same host.
Then open the new domain's property and submit the new sitemap under Indexing → Sitemaps.
Bing used to have a Site Move tool. It's gone from the current Bing Webmaster Tools, and Microsoft's answer is that 301 redirects are enough. Submit the new sitemap in Bing Webmaster Tools, and use Submit URLs (Bing help) for your ten most important pages so they're crawled first. Bing matters beyond Bing: Microsoft Copilot searches with it.
Step 6: change the address everywhere else
Redirects catch old links, but every link still costs a hop. Update the ones you control:
- your Google Business Profile and Bing Places website field;
- social media profiles and link-in-bio pages;
- directory listings, marketplaces and review sites;
- ads, QR codes you're about to print, email signatures and invoice templates;
- payment, booking and newsletter tools that store your website address.
If a few sites link to you a lot, ask them to update the link. That's the one request in this list worth sending.
Step 7: watch, and keep the old domain
Google says a small to medium site takes a few weeks for most pages to move, and larger sites longer. Rankings may go up and down in that time. That's normal. A steady fall after a month is not, and usually means a redirect problem: run the test from step 4 again.
What to look at, once a week:
- Pages report, both properties. Indexed pages on the old domain should go down, and on the new domain go up.
- Performance report, new property. Clicks and impressions should climb as the old property's fall.
- Pages report, "Not found (404)". Old URLs you forgot to map show up here. Add them to the map.
How long to keep the redirects: Google's site-move guide says at least a year, and suggests keeping them for good. The Change of Address request itself lasts 180 days, so treat 180 days as the floor, not the finish. Old links in emails, forums and bookmarks never stop working on their own schedule.
Keep the old domain. Google recommends paying for it for at least a year, so nobody else buys it and uses your old reputation. Domains cost little to renew. Set it to auto-renew and keep it as long as anything still links to it.
Mistakes that cost traffic
- Redirecting every old page to the new homepage. Google treats them as missing pages.
- Temporary (302) redirects. They tell search engines the old address is coming back.
- Redirect chains. Old domain to new http to new https to new www: four hops. Send each old URL straight to its final address.
- Blocking the old domain in robots.txt. Google then can't crawl the old pages, so it never sees the redirects.
- Letting the old certificate or the old domain lapse. Every old link breaks at once.
- Moving domain, design and platform in one go. If traffic falls, you won't know why.
The checklist
- Leave email and design alone; change only the domain.
- List every old URL: sitemap, Search Console exports, analytics, files.
- Map each old URL to its closest new URL. No homepage dumps.
- Put the new site live: no noindex, new internal links, self canonicals, new sitemap.
- Verify both domains in Search Console, plus a property for each old variant, and add the new one to Bing.
- Switch on 301s for every version of the old domain. Keep its certificate valid.
- Test every row of the map with
curl. - Run Change of Address in Search Console, once for each old variant (www and non-www). Submit the new sitemap to Google and Bing.
- Update your business profiles, social profiles, listings and print.
- Check the Pages and Performance reports weekly for a couple of months.
- Keep the redirects and the old domain for at least a year. Longer is better.
Sources: Google's site move with URL changes guide, Google's Change of Address tool help page, and Microsoft's answer on the retired Bing Site Move tool. If you're also cleaning up pages you don't need any more, here's how to find and retire old pages.
taktekbot