Moving a WordPress site can feel like carrying a sleeping cat across a room full of balloons. One wrong move, and panic begins. But do not worry. With the right manual method, you can move your site to a new hosting provider without drama, tears, or mysterious error pages.
TLDR: To move a WordPress site manually, copy your website files, export your database, upload both to the new host, and update the settings so everything points to the new home. You can use cPanel, FTP, phpMyAdmin, or command line tools. Always make a backup first, test the site before changing DNS, and keep your old hosting active for a few days.
Why Move a WordPress Site Manually?
Plugins can move a site. They are handy. They are also not always perfect.
A manual move gives you more control. You see what is happening. You know where your files go. You know where your database goes. If something breaks, you have a better chance of fixing it.
Manual migration is also useful when:
- Your site is too large for a migration plugin.
- Your old host blocks backup tools.
- You want to clean up old files.
- You are moving to a host with different settings.
- You want to learn how WordPress truly works.
Think of it like moving house. Plugins are a moving company. Manual migration is you, a van, snacks, and a very serious checklist.
Before You Start: The Safety Checklist
Before touching anything, make a plan. A small plan can save many hours. It can also save your mood.
Here is what you need:
- Access to your old hosting account.
- Access to your new hosting account.
- FTP or SFTP login details.
- phpMyAdmin access or another database tool.
- Your domain registrar login.
- A fresh backup of files and database.
Also, lower your DNS TTL if you can. TTL means “time to live.” It tells the internet how long to remember old DNS settings. Lower it to something like 300 seconds. Do this a day before the move if possible.
And please, keep the old host active. Do not cancel it the minute the move is done. That is like selling your old house while your sofa is still inside.
Method 1: Manual Move with cPanel File Manager and phpMyAdmin
This is a popular method. Many shared hosting providers offer cPanel. It has tools for files and databases. You do not need fancy software.
Step 1: Download Your WordPress Files
Log in to your old host’s cPanel. Open File Manager. Find your site folder. It is often called public_html. If your WordPress site is in a subfolder, open that folder instead.
Select all WordPress files. You should see folders like:
wp-adminwp-contentwp-includes
You should also see files like:
wp-config.php.htaccessindex.php
Compress these files into a zip file. Then download the zip to your computer.
Tip: The wp-content folder is very important. It holds themes, plugins, and uploads. It is the closet where WordPress keeps all the fun outfits.
Step 2: Export the Database
Now open phpMyAdmin on the old host. Choose the database used by your WordPress site.
Not sure which database it is? Open wp-config.php. Look for this line:
define('DB_NAME', 'your_database_name');
In phpMyAdmin, click the database name. Then click Export. Choose Quick and format SQL. Download the file.
Congratulations. You now have two treasures:
- Your WordPress files.
- Your WordPress database.
Step 3: Upload Files to the New Host
Log in to the new host’s cPanel. Open File Manager. Go to the site folder. This is usually public_html.
Upload your zip file. Then extract it. Make sure the WordPress files are in the correct place.
Watch out for nested folders. This is a common mistake. Your files should not be inside public_html/wordpress/wordpress unless you want that. The index.php file should usually sit directly inside public_html.
Step 4: Create a New Database
In the new cPanel, open MySQL Databases. Create a new database. Then create a database user. Give the user a strong password. Add the user to the database. Give it All Privileges.
Write down these details:
- Database name.
- Database username.
- Database password.
- Database host. Usually
localhost.
Step 5: Import the Database
Open phpMyAdmin on the new host. Choose your new database. Click Import. Upload the SQL file you exported earlier.
If the file is too large, do not panic. You can ask the host to import it. Or you can use command line tools if your host allows SSH. More on that soon.
Step 6: Edit wp-config.php
Open wp-config.php on the new host. Update these lines:
define('DB_NAME', 'new_database_name');
define('DB_USER', 'new_database_user');
define('DB_PASSWORD', 'new_database_password');
define('DB_HOST', 'localhost');
Save the file. Your WordPress site now knows where its database lives. It has the new address. It has the new key. It can stop looking confused.
Method 2: Manual Move with FTP or SFTP
FTP stands for File Transfer Protocol. SFTP is the safer version. Use SFTP if your host supports it. It is like FTP wearing a helmet.
This method is great if you do not want to use File Manager. It is also helpful for large sites.
Step 1: Connect to the Old Host
Use an FTP app. Popular choices include FileZilla, Cyberduck, and WinSCP. Enter your host, username, password, and port.
After connecting, find your WordPress folder. Download all files to your computer. This may take time. Go get coffee. Or tea. Or stare at the progress bar like it owes you money.
Step 2: Export the Database
Use phpMyAdmin, just like in Method 1. Export the database as an SQL file.
Step 3: Connect to the New Host
Now connect to the new host with FTP or SFTP. Open the target folder. Upload all WordPress files.
After that, create a database, import the SQL file, and update wp-config.php.
This method is simple. But it can be slow for sites with many images. If your media library is huge, be patient. WordPress sites love collecting images like dragons collect gold.
Method 3: Manual Move with SSH and Command Line
This method is faster. It is also more advanced. If the command line makes you nervous, that is normal. It looks scary at first. But it is just typing instructions.
Use this only if both hosting accounts allow SSH.
Step 1: Compress Files on the Old Host
Log in with SSH. Go to your WordPress directory. Then run a command like this:
tar -czf site-files.tar.gz public_html
This creates a compressed archive. It is like vacuum-packing your website.
Step 2: Export the Database
Use this command:
mysqldump -u database_user -p database_name > database.sql
Enter the database password when asked.
Step 3: Move Files to the New Host
You can download the files and upload them again. Or use scp to copy them directly between servers.
Example:
scp site-files.tar.gz user@newhost.com:/home/user/
You can also copy the database file:
scp database.sql user@newhost.com:/home/user/
Step 4: Extract and Import
On the new host, extract the files:
tar -xzf site-files.tar.gz
Then import the database:
mysql -u new_database_user -p new_database_name < database.sql
Update wp-config.php. Then test the site.
This method is fast and powerful. It is great for big sites. It is also less likely to time out than browser tools.
Testing Before Changing DNS
Do not point your domain to the new host right away. Test first. This is very important.
Many hosts give you a temporary URL. You can use it to preview the site. But WordPress may not behave perfectly on a temporary URL.
Another option is editing your computer’s hosts file. This lets only your computer see the domain on the new server. Everyone else still sees the old site.
Ask your new host for the server IP address. Then add a line in your hosts file like this:
123.456.789.000 yourdomain.com www.yourdomain.com
Now open your site in a browser. Check everything.
- Homepage.
- Blog posts.
- Images.
- Menus.
- Forms.
- Shop pages.
- Login page.
- Admin dashboard.
If you see a white screen, do not scream. Well, maybe a small scream. Then check error logs. Also check file permissions and database settings.
Search and Replace for Domain Changes
If your domain stays the same, this step may not be needed. But if you are changing the domain, you must update links in the database.
Do not simply open the SQL file and replace text. WordPress stores some data in serialized format. A careless replace can break things.
Use a safe search and replace tool. You can use WP CLI if available:
wp search-replace 'oldsite.com' 'newsite.com' --skip-columns=guid
Or use a trusted search and replace script. Remove the script after using it. Do not leave tools like that sitting online. They are powerful. Powerful tools should not be left on the porch.
Update DNS Settings
When the new site works, update DNS. This usually means changing nameservers or updating A records.
If your new host gave you nameservers, they may look like this:
ns1.newhost.comns2.newhost.com
You can enter these at your domain registrar.
Or you can keep your DNS where it is and update the A record to the new server IP. This gives you more control. It is often cleaner.
DNS changes can take minutes. They can also take hours. Sometimes up to 48 hours. During this time, some visitors may see the old site. Some may see the new site. The internet is basically passing notes in class.
After the Move: Final Checks
Once DNS has changed, test again. Use a private browser window. Try another device. Ask a friend to check too.
Then do these tasks:
- Log in to WordPress and save permalinks again.
- Check SSL and make sure HTTPS works.
- Test contact forms and email delivery.
- Clear all caches on plugins, server, and CDN.
- Check images on key pages.
- Run updates if everything is stable.
- Create a fresh backup on the new host.
To refresh permalinks, go to Settings > Permalinks. Click Save Changes. You do not need to change anything. This rebuilds rewrite rules. It can fix many 404 errors.
Common Problems and Quick Fixes
Error establishing a database connection: Check wp-config.php. The database name, user, password, or host is wrong.
White screen of death: Disable plugins by renaming the plugins folder. Then test again.
404 errors on posts: Save permalinks again.
Missing images: Check that wp-content/uploads was fully copied.
Mixed content warnings: Some files still load with HTTP. Run a safe search and replace from HTTP to HTTPS.
Emails not sending: Set up SMTP. New hosts often handle mail differently.
Which Manual Method Is Best?
The best method depends on your comfort level.
- Use cPanel if you want the easiest visual method.
- Use FTP or SFTP if you prefer a file transfer app.
- Use SSH if the site is large or you want speed.
For most beginners, cPanel plus phpMyAdmin is the best choice. It is clear. It is simple. It uses tools most hosts provide.
For bigger sites, SSH is the winner. It moves files faster. It handles large databases better. It also makes you feel like a wizard. A careful wizard, of course.
Final Thoughts
Moving a WordPress site manually is not magic. It is a recipe. Copy files. Export the database. Upload files. Import the database. Update settings. Test. Change DNS. Celebrate.
The key is to go slowly. Do one step at a time. Keep backups. Keep the old host active. Test before sending visitors to the new server.
Once the move is complete, your site gets a fresh home. Maybe it loads faster. Maybe support is better. Maybe you just escaped a host that made you sigh too much. Either way, you did it. Your WordPress site packed its bags, rode across the internet, and arrived safely.
