How To Move Your WordPress Website From localhost To Live Server

A virtual web server installed on your computer (or local server) allows you to build and customize a WordPress website with ease and speed. Since every edit requires saving and refreshing, developing a WordPress site on a live server can easily turn into a nightmare given the limitations of bandwidth and Internet traffic.

For this reason, most developers rightly choose to do all the nitty-gritty of WordPress development on a local server and later upload the finished website to the live server. Similarly, future updates to the website are done and tested locally before being uploaded to the live environment.

In this post, I’ll be going through the process of moving a WordPress website from a local server to a live server. This process allows you to safely move all of your site’s content (images, posts, and pages) as well as themes and plugins from a directory on your computer to your host’s production server. Obviously, there are a couple of handy plugins that can make this process a breeze, but it’s always advantageous to learn the manual process.


In this tutorial, I assume that you already have a WordPress website running on your computer. I set up and customized a starter theme specifically for this tutorial. The customized site I’ll be migrating is called ‘MYTEST’ based on the NAKED starter theme by Joshua Beckham.

Naked Starter theme

I also assume that you have paid hosting with PHP and MySQL support. Fortunately, most hosting providers support PHP and MySQL. Better yet, many providers offer one-click install scripts for WordPress so you don’t have to go through the manual setup.

And finally, you should have FTP access to your hosting account along with a client program such as FileZilla FTP. You’ll be using it to upload the files to your host. Alternatively, you can use the File Manager option in cPanel but unlike FTP, cPanel doesn’t provide a view of your local directory structure. Okay, with all of that in place, we should be ready to go.

Method 1: Export Content Using Built-in WordPress Tools

The easiest way to move a WordPress site from local server to a production environment is by using the built-in export tool in WordPress. This method assumes that WordPress is already installed and setup on your hosting account.

To start, go to your website’s dashboard and scroll down to Tools. Select Export and check the “All content” radial button.


WordPress will download a file to your computer. This is an XML file that contains all details about your site’s content. Now move to the live location, login to the WordPress site, and activate the theme you developed/customized on the local server. Head to the dashboard again and select Tools > Import.


If you’re prompted to install the WordPress import plugin, do so and then activate it.  Finally, use the plugin to import the .xml file you exported and saved to your computer.

This method will move your posts, pages, media and menus to your live site. You will of course have to set your menu locations and re-add your widgets, but considering that everything else is moved over for you, this is a quick and easy option.

Method 2: Move Everything From Local Server To Live

This is the most recommended method if you’ve built everything on the local server from the ground up. Essentially, the process entails downloading the database file from the local installation, editing it for the correct paths before importing it to a new database on the server, and finally uploading all contents of the local WordPress installation.

 Step 1: Export Database File

To start, fire up your local server and navigate to phpMyAdmin—just type http://localhost/phpmyadmin into the address bar. I’m using XAMPP and here is what my phpMyAdmin interface looks like:


The panel on the left is where all databases are listed. Select the database for your local WordPress site and click on Export at the top of the phpMyAdmin window. The “Quick” export method is selected by default. Leave it intact and click Go.

Export database tables

A .sql file (such as my_test.sql) will be exported to the downloads folder on your computer.

Step 2: Modify File Paths

When you build your WordPress website locally from the ground up, keep in mind that all your URLs will be absolute paths. In other words, all links to your content files (posts, images, post types) will start with http://localhost/. You have to modify this link structure for your live installation or your content will not display properly after uploading the database file.

To do that, use a code editor to perform a “find and replace” on the database file you just exported. I’m using Notepad++ and I’m going to search and replace for “http://localhost/my_test”  and replace it with “”.  I simply created a “my_test” folder at the root folder of If you are going to install directly at the root, you don’t need to create any folder, so your replacement URL should be You will be uploading your local WordPress folders to public_html (the root of your hosting account).

Modify file paths

Once you’re done replacing the URLs, save and close. Don’t alter anything else.

Step 3: Create New Database on Your Hosting Account

Now you’re done with the main part on the local server. It’s time to setup the live environment and finally get the files uploaded so that your website can go live. To setup a new database for your WordPress site, login to cPanel and browse to MySQL Databases.

Create new database

When you select MySQL Databases, you will be prompted to enter a username and password. This is the new user account that will be associated with the new database for your website. Note the personal details  like your username and password because you’ll need them when configuring the database file in WordPress. The newly created database will have the same name as the username you chose.

Step 4: Upload Database File into New Database

Now that you have a new (empty) database on the live server, it’s time to upload your database file saved on your computer. Browse to the phpMyAdmin interface of your host and select Import. Browse and choose the .sql database file you exported from your website on the local server.

If your host doesn’t have phpMyAdmin, use the Database Restore option in MySQL Databases. It does the same thing—allows you to browse and select a .sql file.

mySQL database

I used the restore option to import my database file. Remember, this is a crucial step because it allows you to restore your website exactly as it was on the local installation. Now all that is left is to edit the wp-config.php file, upload website files, and fix the permalinks and we’ll be up and running.

Step 5: Fix wp-config.php File

Open the wp-config.php file in your code editor (browse to your local WordPress installation folder). Here are the only details you need to change:

  • define(‘DB_NAME’, ‘your_database_name’);
  • define(‘DB_USER’, ‘your_database_user’);
  • define(‘DB_PASSWORD’, ‘your_database_password’);
  • define(‘DB_HOST’, ‘localhost’);

Just fill in the settings you defined while creating the database on your live server in Step 3. For the host name, fill in the server IP address or leave it as localhost if your host explicitly says so. I’ll leave mine as localhost as it’s clearly stated here: “To connect to this database in a script running on your web server you should use “localhost” as the hostname.” When you’re done editing the settings, save and close the file. Don’t change anything else.

Note: Make sure to save a copy of your old values, just in case anything goes wrong you can always revert back.

Step 6: Uploading Website Files

It’s now time to move the actual WordPress website files as we’ve setup everything on the live server. Fire up your FTP client and connect to your hosting account using your FTP connection details. You can get them from your host if you don’t have them already. For some hosting providers, the FTP logins are the same as the cPanel details.

Once you’re connected, browse to the public_html or www folder (or a folder at the root where you want to install your WordPress website) and copy all files from your WordPress installation folder on the local server to this directory on the live server.

Step 7: Modify Permalinks

The final step is to modify the permalink structure of your new website to match that of your old site on the local server. To do this, go to the admin dashboard of your new website and browse to Settings > Permalinks. Select the structure you used for your local installation and save. Your WordPress website should now be live.


By now you should have proper insight on what happens when moving a local WordPress installation to a live server. WordPress allows for a lot of flexibility and ease of use. Developing on localhost allows for unlimited tweaks and customizations because you can afford to make mistakes there that you cannot afford to make in a live, production environment.

What’s your best method for uploading a WordPress website from local host to live server? If you’ve gone through this process before, what was your experience like? Please share your thoughts in the comments!

Tom Ewer
Post Author: Tom Ewer

Tom Ewer is a professional blogger, longtime WordPress enthusiast and the founder of WordCandy.

Disclosure: This page contains external affiliate links that may result in us receiving a comission if you choose to purchase said product. The opinions on this page are our own. We do not receive payment for positive reviews.
Got something to say? Join the discussion.
  1. nemanjaj says:
    Xcloner plugin is a backup-restore solution i use for migrating a WP site. It is flexible in sense that it allows you to micromanage which files you will move, and it handles both sql backup and file backup. The restoration process is simple enough, although you still need ftp access and of course a destination db.
  2. Steve Eldridge says:
    You could just install a fresh Wordpress server and install All-in-one Migration on both the local and target destinations. This tool will copy the theme, database and plug-ins and install the full build taking care of everything you just mentioned above in one easy step.
    • Mehdi says:
      I know the "all in one migration" plugin used to work great but with the latest update, it doesn't migrate the whole website. I tried it so many times and it still do the job. Do you have any suggestions? Thank you.
  3. ducnghia0105 says:
    duplicator plugin using for newbie... some host free not support this plugin...
  4. Ellis says:
    My website is uploaded to server true FTP. but when i go to my site link and visite my site, than i enter; /wp-admin it goes to localhost, and i cant enter the wordpress admin on the server? hows that? :O cant find it ;(
  5. powographix says:
    This article was very helpful when I was migrating a local website to a live server for the very first time. Kudos man.
  6. says:
    this is awesome, i get this error? "Unable to open WampServer's config file, please change path in index.php file" Not sure if this thread is still alive.
    • Andrew Lyndem says:
      I think you moved the WampServer's default index.php too along with your wordpress site. Just try renaming it to some other name (e.g. index-test.php) and see if you still get that error. If the error doesn't come up anymore, then you can delete that renamed php file.
  7. Albert says:
    You could also use akeeba backup for WordPress it kinda automates the process for you including the path modifications and all
  8. nilaysanganiNilay says:
    Dear Sir, I have followed your steps till the end. However, after I have uploaded my front end files, when I navigate to my domain site to login to the admin, I am redirected to the wp admin installation page. Is this correct? I feel somewhere I have done some mistake. Please advise. Thanks
  9. Rich says:
    I would like more info on where to upload the site files using fillzilla or cyberduck please
  10. caralandicho says:
    I forgot to save the old values for my local wp-config file. Now I can't establish a connection with it. Is there a way to change it through phpmyadmin?
  11. Kbam7 says:
    I suggest using All-in-one WP Migration. Its ridiculously easy to use and it works! First tie! No problems!
  12. ERDCV says:
    I created the export file but there are no instructions how to import this file into your localhost. The import option seems to apply only to import the file into the live site after it has been saved in some place (clould, google drive, etc).
  13. Fabrizio Del Tufo says:
    I follow this procedure , but I still continue to loose the setup of theme, on local all is perfect, after ftp all online and setup of wp-config.php with correct parameters for db, I export, replace path and import on online db but the results is always the same, my online website is ok for the contents i wrote except for customisation theme, it returns to his default, any ideas ? thanks in advance ....
    • Tom Ewer says:
      Tom Ewer
      Hi, Yes, you're right. In order to import the file, you have to log in to a website where WordPress is already running, so you may need to install it first. Cheers, Tom
    • Tom Ewer says:
      Tom Ewer
      Hi Fabrizio, That may happen when you use Method 1. Give Method 2 a try, and don't forget to transfer all of the tables in the database. Cheers, Tom
  14. Abid Naimat says:
    Really my initial introduction about your site is phenomenal. Much obliged for the greater part of the instructional exercises. This instructional exercise is additionally awesome. Much obliged once more... :)
  15. Alcides Apaza Yanarico says:
    Thanks Tom, I tried all the afternoon to do this process following at least 3 different methods without success, but with "Fix wp-config.php File" I realized my failure. This really works! =)
  16. Darrell Ring says:
    I don't understand how method one can work(Method 1: Export Content Using Built-in WordPress Tools). Does it also grab the mysql database files? And the media files? how are they uploaded in the process?
  17. Indra Gotamey says:
    Method 2 is real smooth. Got it working in the first try itself. Thanks for posting this article. I have been wrecking my head for quite sometime regarding this issue. Thank you..
  18. Tom Ewer says:
    Tom Ewer
    Hi Nilay, Without actually seeing everything, I really can't help you much, but it seems WordPress may either be missing its configuration file or unable to find the required data on the database. Try checking these. Cheers, Tom
  19. tkcgospel says:
    Your idea was the best...i did all from rewrite rules to changing .htaccess permissions yet it didnt work i also used the sql script injections but no positive results until i manually download the sql file from my cpanel and did the find and replace method. God bless you man.
  20. Tiến Tài Đoàn says:
    Thank you for the useful post!! I wonder if there is any other better way if I wanna sync my website from localhost (xampp) to my live site once per day? Is there any tool can help?
  21. Xavier says:
    Thank you very much for your useful and well explained post! After many tries trying to upload successfully my wordpress (and making me crazy), I get it at the first with your tutorial. Best
  22. km says:
    Great article! How do you go about the last step of swapping the current live site for the one at the newly added /my_test directory? Any path issues to be aware of when making the swap? What about using a subdomain to upload the test site to instead of a test directory in the root?
  23. Marko says:
    Fantastic tutorial! It took me some trial and error for process to work on free hosting services but these 7 steps are golden rule to migration process. If Duplicator plugin is not working for some reason this here is all the knowledge you need in order to migrate to live server successfully. Big thanks!
  24. Alok says:
    today i am follow your tutorials to the end but my site is not online .please help me
  25. AmirRzd says:
    I did all of the above but faced 500 Internal Server Error. Then I deleted .htaccess file and it worked. Thank you for the "Replace" tip.
  26. Hari Kumar says:
    my site isn't live yet! I've completed all the process but still no result..
  27. Hari Kumar says:
    Someone please help me, I don't want to change my domain i just wanted to move my wordpress to new cpanel... I created MySQL Database, username and password. Added that user to database and granted all privileges.. Then updated my wp-config with new database and user/pass. Up-loaded the both sql files through phpMyAdmin and wordpress files through filezilla in public_html. Now when i open my blog it redirect to "cgi-sys/defaultwebpage.cgi" <<< It says!! 1. The IP address has changed. - ip address of this domain may have changed recently.. 2. There has been a server misconfiguration. - verify that your hosting provider has the correct IP address configured for your Apache settings and DNS records 3. The site may have moved to a different server.
    • AJ Clarke says:
      AJ Clarke
      If you switched to a different cPanel then the IP address may have changed so you need to make sure your domain is pointing to the correct location otherwise you will get DNS issues. If you contact your webhost they should be able to assist with this.
  28. Hari Kumar says:
    Hello, AJ Clarke!! I have a question, while uploading wordpress files do I need to create a new folder in Public_html to place my files?? Or i just need to upload all the files in public_html??
    • AJ Clarke says:
      AJ Clarke
      You should be placing the files in the root directory. If you don't have WordPress installed then you can migrate all the files from the localhost if WordPress is already installed on the server then you only need to move the wp-content folder because this is what has all your uploads, themes and plugins.
  29. Mohd Hasan says:
    Sir i followed all instruction but my site is goning to istallation directory
  30. Mark Winwood says:
    Actually Tom, you know what? I've just read your article again in case I missed anything...and I did. Considering the bulk of the site moved over I don't think a little more work updating manually what it missed the first time round is going to hurt me is it? No. So thank you once again and when I'm a bit more savvy I'll try Method 2.
  31. vricop says:
    Great post! You just saved my day! I was getting errors while I was trying to import the database, Database noob :(

Leave a Reply