How to MANUALLY Migrate Your WordPress Site
In this tutorial, I walk you through How to MANUALLY Migrate your WordPress Site from one host to another. There are several great duplicating, cloning and migration tools for transferring WordPress sites but it’s good to know how to do it manually just incase a migration fails or times out. This is often the case when the site is really large or if you’re transferring between different hosting companies. In a recent Divi Chat episode, we discussed this topic in detail so I wanted to put my process together in a tutorial to better articulate what we went over in the chat!
While the thought of manually transferring a site can be overwhelming, it’s actually not that difficult if you know what’s going on the behind the scenes and you have an understanding of the basics. I’ve had many headaches, frustrations and lost hairs due to failed migrations in my day and it was all because I didn’t have a understanding of what goes into migrating a WordPress site. My hope is that by the end of this tutorial, you’ll have a basic understanding of what goes into a WordPress migration and that you’ll have a good grasp of the most important elements to double check when you migrate a site even if you use a duplicator or cloning tool.
Below the video timestamps are simple or advanced version checklists for you!
00:00 – Introduction and why you should know how to manually migrate a WordPress site
00:56 – Overview of what we’re going to do
*** Phase 1 – Backup site on old domain ***
01:12 – Backup original site via cPanel
01:55 – Overview of WordPress files via File Manager
02:23 – The only important files you need for the transfer
02:49 – Zip/compress wp-content folder
03:14 – Download compressed wp-content.zip folder and wp-config.php file
03:47 – Download the site database via phpMyAdmin
04:25 – Overview of phpMyAdmin
04:47 – Export site database (.sql file)
05:42 – Overview of downloaded files
*** Phase 2 – Transfer site to new domain ***
06:14 – Install WordPress at new domain
06:48 – Set up new WordPress site
07:23 – Advanced database options
08:05 – View blank installation of WordPress site
08:24 – Drop folders in new database via phpMyAdmin
09:12 – Import old database (.sql file)
09:48 – Set correct domain name URL in database
10:52 – Upload wp-content folder in File Manager
11:57 – Extract wp-content folder (then delete it)
12:45 – Edit config.php file with old details
14:04 – Overview of WordPress databases (to show how it connects with the config.php file)
15:37 – Overwrite updated config.php file
16:13 – Check new site
16:30 – Setting up WordPress database manually (if you’re feeling wild)
17:06 – Login to new site
17:48 – Find and replace all image/file paths (using velvet blues plugin)
*** Phase 3 – Clean up ***
19:06 – Login into old host and delete old files
19:21 – Download and backup new site files
Here’s a simple and detailed version of my migration process! For advanced users, the simple checklist will most likely suffice. For newbies and those who want to be walked through the process step by step, I’ve broken the process down to 3 phases for you. I hope this helps all of your migrating experiences and saves you some heartache and hair!
How to Manually Migrate WordPress Website
2 Checklist Options:
- Backup site files
- Export database (SQL file)
- Install WordPress for new site
- Import database (SQL file)
- Replace wp-content folder
- Edit wp-config.php file with correct settings
- Replace URLs
- Delete old site
Phase 1: Preparing the site for transfer
- Login into development site Cpanel
- Go into File Manager
- Download wp-config.php file
- Zip up wp-content folder
- Download zip folder
- Go into phpMyAdmin
- Export site database (sql file)
Phase 2: Setting up the site on the new host
- Login into new hosting cpanel
- Install WordPress
- Go into phpMyAdmin
- Import sql file in new database
- Replace old URL with new URL in “_options” table
- Go into File Manager
- Replace wp-content folder with zipped file
- Extract zipped file
- Edit wp-config.php file with new database, user, password and wp table prefix
- Login into new site, find and replace all image/file paths with new URL
Phase 3: Clean up
- Double check permalinks and ALL image, link and file paths in new site
- BACKUP new site files and database
- Go to old hosting account
- Delete old database
- Delete wp files
- Remove sub or addon domain
Good WordPress duplicating and cloning tools:
This is fantastic! I like how you emphasize the speed benefits of using cPanel over FTP. And the hints that it could get even more manual haha. Very easy to follow for something with steps required in several different areas. Very nicely done.
Thanks so much, Terry! Yeah I was originally going to go into even more detail on manually setting up the database and such but tried to make it somewhat user friendly for the beginners. Really appreciate your feedback!
thanks Josh, does it work the same way if you’re doing it from subdomain to subdomain
Thanks, Leisa! Yep it works the exact same way. As long as the files are in the right directory and the database has the right URL, then you’re all set.
A weekly Divi Chat listener here … you sure didn’t waste any time getting this thorough tutorial to us! I can’t wait to try this out. Definitely a worthwhile skill to learn and be comfortable using. The less stressed I can get “behind the scenes” the better. Thanks
Thanks Sue! Yep I had to stick to my word on this one! Plus after that Divi Chat, I was already in the “migration mindset” if you will 🙂 And yes, anything I can do to help others feel less stressed during migrations is what this one was all about!
Hey Josh! Great tutorial – it certainly makes the whole process a lot less daunting! I do have a question – so downloaded the wp-contents folder, wp-config.php file and the database from the old site. And then uploaded wp-content & the database onto the new site and edited the database name in the new sites wp-config.php file. Unless I missed it, I didn’t see anything being down with the old site’s wp-config.php file. So, if that’s the case, what’s the reason for downloading that file from the old site? Apologies if it was in there and I totally missed it!
Hey Sharon! Yeah I could’ve been a little more clear on that. I usually either replace the wp-config and just edit the database name, username and password if need be or just edit those settings on the current config file. But regardless, I always backup the original just incase I ever need it as a back up or view the old settings. Hope that helps and makes sense!
Yep, makes sense. Thanks for the clarification!
I also just reread my original question – wow, sorry about the typos and sentences that don’t even make sense!!
haha, no problemo! I hate when that happens 🙂
Easy to follow tutorial Josh, thanks!
Thanks, Jonathan! Appreciate your feedback man.
Great vid but I have a question, I need to migrate a site to another host but use the same domain etc. will that work, will the new host allow me to create the same domain? They are both with hostgator.
Yeah the process will be similar, Paul. Things can get a little tricky with same domains depending on the host. I’d recommend doing a support chat with them just incase but the process of moving the database, the files, etc over will be the same. You’ll just end up changing the domain DNS to point over to the new host once it’s ready. Hope that helps!
Thanks’ for a great tutorial. I have had real problems moving sites with higher content and thanks to you I now have a solid reliable way of moving them.
AWESOME to hear. Thanks for the feedback, Jonathan!
I’m not only loosing my hair but my scalp too… Nothing work and I can’t even concentrate on this anymore… I’m just gonna rebuild the whole site it will take less time !!
Thank you for your work, anyways.
Migrating sites can certainly be tough, I’ve been there man. I’d just recommend going through the steps one at a time and making sure all settings are correct in the files mentioned then you should be ok!
After you use the Velvet Blue, can you delete the plugin?
Yep Rodrigo! Once all URL’s are changed you’re good to delete it.
Hi Josh, this tutorial has saved my bacon! I normally use a plugin which 9/10 times never fails me but I have just had one site which didn’t cope too well and I needed to transfer it manually.
Your tutorial is so easy to follow and it worked like a charm; thanks so much for taking the time to put it together.
In following along with your tutorial, I learned a lot more about the WP backend as well – a little, unintended, bonus training!
Thanks again, Kerrin 🙂
Awesome to hear, Kerrin! Yeah most cloning and duplicating tools are great but when things go awry (and eventually they do), it’s so important to know how to do it manually. Glad to hear it worked well for you and you got a little more familiar with the backend. I actually just released a little mini course on cPanel which goes even further into databases, WP files, phpMyAdmin and more if you’re interested in learning more! It’s like the tutorial but in 12 videos targeted to the most important aspects of cPanel. Anywho, thanks for the comment!
Thanks for this. It seems like one of the few and concise articles explaining the process without using a plugin (none worked for me).
I have a question that maybe you can answer. I have been trying to zip my contents folder through my online file manager in the browser, and it just doesn’t finish. I get the status bar, but it eventually times out. You said it needs to be a .zip file, but can I drag the folder onto my computer (windows 10) via an ftp client and zip it on my computer, or does the online file manager perform some special zip function?
either way, thanks a ton because this was super helpful.
Yeah Keith sometimes that works if it’s a small file but for big ones, I prefer to do it right in the cPanel File Manager instead of FTP. Things in FTP generally take waaaay longer than going through cPanel. Hope that helps!
Hi Josh, this isn’t the first time I’ve done a manual transfer, but I haven’t done it much and found your guide here helpful for getting my head around the whole thing again. And I liked your approach in letting the host do the packaged WP install, so that I only need to bring over wp-content and the database.
Something I ran into today, though, moving a site online from a MAMP setup on my machine, was a site permissions hangup. Everything looked good with the file upload and database import, and it took me a little fooling around before I noticed that permissions on the whole extracted wp-content directory were wrong. Once I saw it, I recalled that this had happened the last time I did a manual transfer, too. (That time, with SiteGround; this time, with HostPapa.) The only way I know to change permissions directory-wide (“recursive”) is using an FTP client — which took a while in my case, unhappily. If there’s a way to do it in cPanel’s file manager, I’d like to know.
I tried both Better Search Replace and Velvet Blues and couldn’t understand why they didn’t seem fully operable. It makes sense in retrospect, of course. I’m inexperienced enough, though, that the strange results I was getting when I ran their find-replace routines didn’t clue me in to the permissions issue right away.
Anyway, I may have missed it but don’t recall your mentioning this among potential trip-ups addressed in the tutorial. Thought it worth mentioning. This aside, your guide was very useful to me, again. Thank you for providing it!
Not for sure on this one, Paul. Might want to check with your hosting company to see if they can assist. Could be a number of things depending on files like the .htaccess file. You can also manually change the URL’s via phpmyadmin by doing a find and replace in the database. That might be work a try. I just use Velvet Blues because it’s quicker and I can see the changes in the dashboard.
Just followed you step by step and amazingly done!!! Thanks Josh
Awesome to hear, James!
Excellent tutorial Josh. Would this work the same way for a wordpress having WooCommerce in it?
Yep! Nothing would change at all unless you have any license keys or Woo settings that need to be adjusted to the new domain.
Thanks for the content.
I’ve done exactly as per your instructions. I’ve changed the “Site URL” & “Home” link from the database ‘Option’ but the new site is getting redirected to my old site. I’ve tried to fix it but couldn’t find anything
Can you help me out?
Love from India
Hi Avee, if you changed the links but it’s still being redirected, I’d make sure that the database settings are correct in the wp-config file and to see if there’s any redirection or forwarding on the actual domain. May want to reach out to hosting support if that’s the case.
All the transfer guides I find says nothing about transferring emails which is very critical.
This is just transferring the website, not the email. In which case, you’d either just redirect the A record which just effects the website or if you change nameservers, you’d need to make sure the MX Records are mirrored. I got into that in detail in my cPanel course. Again, this tutorial is NOT about full domain or email transfers but I understand why you mention that in your comment.
That has worked perfectly.
Thank you mate and wish you good luck.
Hey Josh! Thanks for the FANTASTIC tutorial. That was a blast and my new migrated website is now up and 100% working! Thanks Thanks Thanks!
I’d tried a few plugins. Site was too big to move efficiently with those. So I had to roll up my sleeves and do it manually. Your step by step guide was just what I needed. Thanks for putting the time into this.
Awesome to hear, Blake! Glad it helped.
Thanks. I just moved my website easily using this method. My old host had restrictions on the server which prevented using a migration plugin.
Glad it worked for ya, Mark!
This is really helpful!
Will this same method work with overriding an EXISTING domain/hosting site?
Yep! Same method will work for that.
This is such an incredibly in-depth tutorial. You always bring the goods. Thanks Josh!
I am searching on google how to migrate WordPress website and I find your post. Hopefully, now we can migrate WordPress website easily. Thank you!
Really informative and creative post. I am sharing a solution to create iCloud email account on MAC & PC. Visit Website
Such a great tutorial, This is a very useful and helpful tutorial
Thanks for sharing this wonderful tutorial
Bridger Grey Smith
Your step-by-step guide was just what I needed. Thanks for putting the time into this.
Thanks for sharing this blog