Beginner's Guide for WordPress - Start your WordPress Blog in minutes.
Choosing the Best
WordPress Hosting
How to Easily
Install WordPress
WordPress Plugins
View all Guides

How to Move WordPress From Local Server to Live Site

Last updated on by
Follow WPBeginner on YouTube
How to Move WordPress From Local Server to Live Site

Developing a WordPress site locally can help speed up the development process. In the past, we showed you how to install WordPress on your Windows computer using WAMP and on Mac using MAMP. Once you have finished the development on localhost, the next step is to move the site live. In this article, we will show you how to move WordPress from local server to a live site. By using this process, you would be able to migrate all of your content (posts, pages, images, etc), themes, as well as plugins from local server to a production site.

Before we start, we must let you know that you can make this migration from local server to a live site easier by using one of the two plugins: BackupBuddy or Duplicator. In this article, we will show you how to move WordPress from local server to live site manually, so you can learn the process. However to make the process easy for us, we rely on BackupBuddy when we do this on a day to day basis.


In order for you to migrate your locally developed WordPress site to a live server, you need to have two things. First is the local server. We are assuming that you have a WordPress site running on local server, and you have full access to it. Next, you would need to have web hosting that supports WordPress, so you can migrate your content over.

You would need to have a FTP program and know how to use FTP, so you can upload your content to the live site.

Note: the screenshots used in this article are from WordPress hosting providers that have cPanel.

Step 1: Export Local WordPress Database

First thing you need to do is export your local WordPress database. We will be using phpMyAdmin to do that. If you are unfamiliar with it, then you might want to take a look at our guide to WordPress database management using phpMyAdmin. Simply go to http://localhost/phpmyadmin/ and click on your WordPress database. Next, click on the Export button from the top menu bar.

Exporting WordPress database using phpMyAdmin

In the Export Method option choose custom, which will provide you with more options to export your database. Select all tables to export and gzipped for compression. Scroll down to the bottom of the page and press the Go button to download your database.

Step 2: Uploading WordPress Files to Live Site

Now open an FTP client and connect to your live site. Once you are connected to your live site, make sure you upload the files in the right directory. For example if you want the site to be hosted on, then you would want to upload all files in your public_html directory.

Now select your local WordPress files and upload them to your live server.

Uploading WordPress from localhost to live site

Step 3: Creating MySQL Database on Live Site

While your FTP client is uploading your WordPress files, you can spend this time on importing your database to the live server. Most WordPress hosting providers offer cPanel to manage your hosting account, so we will show you how to create a database using cPanel. Log in to your cPanel dashboard and click on the MySQL databases icon which can be found in the databases section.

Creating MySQL database in cPanel

On the next screen, create a database by entering a name for your database.

Create a new database

After creating a database, scroll down to MySQL users section and create or add an existing user to the database. After adding the user, cPanel will take you to set MySQL privileges for that user. Simply grant all privileges to the user.

Create a new MySQL user or Add an existing user to the Database

Step 4: Importing WordPress Database on Live Site

Next step in the process is to import your WordPress database. Go to your cPanel dashboard, scroll down to the databases section and click on phpMyAdmin. This will take you to phpMyAdmin where you want to click on the database you created earlier. phpMyAdmin will show your new database with no tables. Click on the Import tab in the top menu. On the import page, click on choose file button and then select the gzipped database file you saved in step 1. Lastly, press the Go button at the bottom of the page. phpMyadmin will now import your WordPress database.

Importing database in phpMyAdmin

Step 5: Changing the Site URL

Now you need to change the site URL, so you can setup your live WordPress site. In your phpMyAdmin, look for the wp_options table in your database that we just imported in step 4. If you changed your database prefix, then instead of wp_options it might be {prefix}_options.

Click on the browse button next to wp_options or the link that you see in the sidebar to open the page with a list of fields within the wp_options table. See screenshot below:

Browse wp_options in phpMyAdmin

Under the field options_name, you need to look for siteurl. Click the Edit Field icon which can be found at the far left at the beginning of the row.

Edit siteurl in phpMyAdmin

When you click the edit field, an edit field window will appear. In the input box for option_value, you will see the URL of your local install probably something like: http://localhost/test. Carefully insert your new site url in this field, for example:

Save the field by clicking the Go button.

Next, you need to replicate this step for the option name: home. The wp_options page can be a few pages long, so simply find the home tab. Usually it is on the second page which you can navigate to by clicking on the pagination arrows in phpMyAdmin.

Update the home url to be the same as your siteurl.

Step 6: Setting Up your Live Site

Now that we have imported the database, and all of our content should be uploaded, it is time to configure WordPress. At this time, your site should be showing an Error Establishing Database Connection error. To fix this, connect to your website using an FTP client and edit wp-config.php file. Provide the database name, user and password you created earlier in Step 3. Save the wp-config.php file and upload it back to your server. Visit your website, and it should be live now.

Login to your WordPress admin panel, and go to Settings » General. Click save Options. This will ensure that the site url is corrected anywhere else that needs to be.

Then go to Settings » Permalink and click Save to ensure that all post links are working fine.

Step 7: Fixing Images and Broken Links by updating Paths

Whenever you are moving a WordPress site from one domain to another, or from local server to a live site, you would face broken links and missing images issue. You can either use the SQL query or use the Velvet Blues WordPress plugin.

For those who want to do it via SQL, here is a simple SQL query that should solve this problem:

UPDATE wp_posts SET post_content = REPLACE(post_content, 'localhost/test/', '');

Simply go to phpMyAdmin, click on your database and then click on SQL from top menu. Write this query but don’t forget to change it with your own local site and live site URLs.

Fixing WordPress images and broken URLs after moving to live site

That’s all, hopefully your live site will be up and running by now. Checkout your site to make sure that every thing is working fine as expected. For troubleshooting and questions feel free to leave us a comment below and we will try to help out as much as we can.

If you are doing this on a regular basis, then we highly recommend that you get BackupBuddy because it will make your life easy. You will thank us for that later :)

Editorial Staff at WPBeginner is a team of WordPress experts led by Syed Balkhi. Page maintained by Syed Balkhi.

WPBeginner's Video Icon
Our HD-Quality tutorial videos for WordPress Beginners will teach you how to use WordPress to create and manage your own website in about an hour. Get started now »


  1. Ken says:

    I’ve followed all the steps given. When I access the live site I get everything I can without changing the media URLs.
    I can’t do that yet because I can’t login to the admin area. i get the following errors on the screen above the login box and valid logins are not accepted (checked with myPHP):

    Warning: session_start(): Cannot send session cookie – headers already sent by (output started at /home/cgbookss/public_html/wp-includes/functions.php:1) in /home/cgbookss/public_html/wp-content/plugins/event-commerce-wp-event-calendar/evntgen-scbooking.php on line 519

    Warning: session_start(): Cannot send session cache limiter – headers already sent (output started at /home/cgbookss/public_html/wp-includes/functions.php:1) in /home/cgbookss/public_html/wp-content/plugins/event-commerce-wp-event-calendar/evntgen-scbooking.php on line 519

    Warning: Cannot modify header information – headers already sent by (output started at /home/cgbookss/public_html/wp-includes/functions.php:1) in /home/cgbookss/public_html/wp-login.php on line 424

    Warning: Cannot modify header information – headers already sent by (output started at /home/cgbookss/public_html/wp-includes/functions.php:1) in /home/cgbookss/public_html/wp-login.php on line 437

    Have you any suggestions?

  2. geoff says:

    can’t seem to get the phpmyadmin to work locally. you seem to haven’t put that in, and the link you have provided to “explain” how to use the phpmyadmin, refers to that running on c panel not locally.
    it would be good if you could explain, running phpmyadmin locally, through webmatrix for explain.

  3. rodrigo says:

    Was a great help, this tutorial. I had some 500 server errors fixed after editing the htaccess.php file. But I still have no access to the wp-admin dashboard? Anyone got the same emptiness on the backend link? what could be the fix?

  4. Charlie says:

    I have the same exact issue. Trying to find a solution for this but it seems like one isn’t mentioned here on this page, or in the comments.

  5. hokka says:

    I have troubles with my new site address. Everything else seems to work just fine.

    In phpmyadmin if I change the siteurl to direct the site to the correct subfolder, the website content disappears when the “home” option value is correct. Then again if I also change my home-value into the same address as the files are in, meaning the same address as siteurl, then I see the content but the address is not what I wanted it to be. I’ve also tried to use Velvet Blues -plugin but nothing happened.

    In my case the WordPress url is different from website url, so basically the changes won’t affect in admin panel Settings.

    Thanks for this great tutorial.

  6. JulioC says:

    Not sure if was very lucky but in my case I followed all steps and everything worked perfect!!!

    Thanks a lot!

  7. WPBeginner Staff says:

    The other part of making backups is restoring your sites from backups. cPanel does not make that part easy. Configurations may differ from one site to another. Sometimes user may even want to move to a web host that does not offer cPanel. For more advanced users who can troubleshoot these issues, cPanel backups can be a good option. But for most beginners it can be difficult. There are other backup options as well, take a look at our pick of 7 Best WordPress Backup plugins.

  8. Joey says:

    BackupBuddy seems to be a bit of an overpriced option when you can simply back up a WP site via Cpanel … are there any other benefits for using BackupBuddy when backing up via Cpanel is easy and free?

  9. jeroen says:

    Hi, I’m still struggling withe the migration of my local hosted WP multisite to a webserver. Replaced all the urls’s as far as I can tell but still the navigation doens’t work. Ik can enter the root which shows the homepage correctle but clicking a navigation link I get this error.
    “Not Found
    The requested URL /index.php was not found on this server.”

    Although the paths of the menu links(shown on hover) look fine. Any Idea where to go look to solve this? Thanks in advance.

  10. Tim says:

    After importing the database, I tried to do step 5. However, when I click on wp_options, i do not have an edit spot. It says “current selection does not contain a unique column. Grid edit, checkbox, edit, copy and delete features are not available.”
    Why is this happening?
    Thank you

  11. nirali says:

    hello can anyone help me.. there is a image path error in hosting.. how to solve it?

  12. WPBeginner Staff says:

    You can find out your live site’s database information by vising phpMyAdmin through cpanel. Notice the database name, mysql host, mysql username, and password and then fill in that information in your live site’s wp-config.php file.

    On your local site go to localhost/phpmyadmin/ to find out the correct database name.

  13. allison ranieri says:

    I completed all the steps and now my live site just says Error Establishing database connection and I cannot access my localhost at all – it is just a white screen. When in Step 6 it said to change your config.php file I accidentally changed the info in my local config file instead of the one updated through MySql but I figured that one out and changed the info back in my local file to what I thought it was before, but now when I go to localhost/wordpress (where I had previously gone before) it just shows a white screen. And my live site says Error Establishing Database Connection. So confused. Any help would be lovely.

  14. WPBeginner Staff says:

    Yes, you will be able to see the edit link after signing into your live site.

  15. Prabhjot kaur says:

    I want to ask something as if i upload my site as a live site then edit link will appear or not ?that are already shown in localserver.

  16. Enoch Ramal says:

    Almost there but I get this…

    Parse error: syntax error, unexpected ‘define’ (T_STRING) in /home/klbensonsk/public_html/wp-config.php on line 31

  17. vanyoattila says:

    Hi, I have uploaded my first page with the help of this post and it has been working perfect since than. Now I have a problem with an other site. I went through all the critical points again and again but I have always the same issue. The site is working (with broken links) but I can’t log in to the admin site. I changed the database at phpmyadmin and the wp-config.php file also. They have the same username and same password so they have the same datas and yet I have the problem. How does it possible?

  18. Sybrin says:

    Hi there, my WordPress website has just moved to a new ip address, and I followed the steps at the bottom to fix broken links. It said that it fixed them but my website is still not displaying properly. Some images are displaying as broken images and some image sliders are not showing up at all. The website also seems a hell of a lot slower. How do I fix this all?

  19. Sybrin says:

    Hi there, my WordPress website has just moved to a new ip address, and I followed the steps at the bottom to fix broken links. It said that it fixed them but my website is still not displaying properly. Some images are displaying as broken images and some image sliders are not showing up at all. The website also seems a hell of a lot slower. How do I fix this all?

  20. vinamr says:

    Do i have to install WordPress through my cpanel? or do i straight away upload the files through ftp?

  21. WPBeginner Staff says:

    Contents of WordPress folder.

  22. up says:

    I have had a hard time finding an answer to a simple question: Do you upload the wordpress folder or the contents of the wordpress folder to public_html

  23. Krizia Bianca says:

    Thank you so much, this tutorial works fine for me! I uploaded my wordpress to a live site. And it run smoothly! :D

  24. GSR says:

    Hi. I’ve followed all the steps (I think so) and now I no longer have the error message about not having a database connection – instead I now just have a blank white screen. Can you tell me where I’ve gone wrong?

  25. Malik Talib Hussain says:

    Thanks a lot for such a descriptive guide,I have uploaded my site successfully using this guide.

  26. John says:

    Thanks for sharing this. It worked for me at a go.

  27. Daniel says:

    Is it normal that in the step 6, after I updated the wp-config.php file, instead of appearing the homepage of the site (as I viewed in localhost) it appears the installation process?

    PD: I have completed all the previous steps.

  28. duke says:

    Very easy, some tips to remember, i have to wait a while to transfer local wordpress site to public_html because of the number of themes i am using.

    I forget to grant access to the db user, so i did it and it worked.

    All steps is important, the sql command works great.

    I rename .htaccess to .htaccess_old and it works

    then just update and save permalinks.

    Very easy fix for everything.

  29. BJH says:

    Thanks for the tutorial.

    Unfortunately it doesn’t work for me. I think that there are so many variables with something like this. Your steps work for you, with your scenario, but for someone else it can be very easy to end up with something else which stops the process working. Migrating wordpress is a real chore in my experience.

  30. Matthew says:

    Great tutorial, thanks a bunch. I’m doing my first wp redesign for a client who already has a well established blog with posts images etc. I’ve exported all of her data into the local site, designed a new theme with new pages etc. While importing her posts locally and selecting the option to download attachments, the posts have appeared but none of the images and I’m about ready to upload everything to her server.

    Do I just upload the theme files and in doing so will my modifications be present? Or do I need to upload everything as this tutorial suggests. She has over 2000 posts, an image for each, and I’ve got new images, pages, and layout.

    If you can either make a tutorial for moving/importing a redesigned or newly designed blog into an existing blog with posts pages etc. Or point me in the right direction, That would be great.

    The client won’t give me access to the server itself and insists on doing the ftp himself because he saw on the news that he could get his identity stolen or some such nonsense. I explained that he could set access restrictions on a separate login but he insists he do it.

    And the don’t want me working directly on the site because they’re worried about downtime while I update and build it.

    You can’t always be picky when it come to clients and I don’t really have a choice I’m just about done.

  31. Emilio says:

    Thank you for the tutorial!
    But now that I’ve imported all my site, the logo isn’t showing and my Dashboard doesn’t show the theme functions, I run Divi from Elegant Themes.

  32. Martin says:

    I’ve imported my database and wordpress install, but none of my pages are showing when I login to the admin panel? I’ve activated the theme, but no pages? Please help!

  33. WPBeginner Staff says:

    Please go to the admin area -> Settings and make sure that you are using the correct Site Address and WordPress Address.

  34. Christine says:

    Good day.
    Thanks for this easy to follow tutorial.
    I managed all the steps and my site seems to be connected, except that my theme is missing. All the files are in place with their stylesheets, but the site seems to be displaying plain html.Has anyone else experienced this?
    Not sure how to go about fixing it.

  35. tawanda masvanhise says:

    thanks for the great tutorial! l have a problem after doing all the steps; my website is displaying
    Error establishing a database connection
    how can i solve this problem?

  36. Claudio Henrique Amorim says:

    Thank you so much.
    I’m definitely a wp beginner and this post was just of an wonderful help. Everything went on flawless.
    I’m really enjoying working as a web designer and wp developer. And I hope I’ll get more and more of these kind of jobs, and more challenging ones. I learned so much while doing this very first one.
    Thank you again.

  37. WPBeginner Staff says:

    Seems like your domain is not yet ready or you have uploaded WordPress in the wrong directory on your web server. Please contact your web hosting provider for support.

  38. Elliot Lee says:


    I have completed step 1 to step 6, but my site still displays:

    Future home of something quite cool.
    If you’re the site owner, log in to launch this site
    If you are a visitor, check back soon.

    Why is this happening???

  39. Elliot Lee says:

    I have completed step 1 to step 6, but my website still displays:

    Future home of something quite cool.
    If you’re the site owner, log in to launch this site
    If you are a visitor, check back soon.

    What could be the problem???

  40. Elliot Lee says:

    HELP!!! Why am I receiving this error in step 4?

    SQL query:

    — Database: `wordpress`

    — ——————————————————–

    — Table structure for table `wp_commentmeta`

    CREATE TABLE `wp_commentmeta` (

    `meta_id` bigint( 20 ) unsigned NOT NULL AUTO_INCREMENT ,
    `comment_id` bigint( 20 ) unsigned NOT NULL DEFAULT ‘0’,
    `meta_key` varchar( 255 ) DEFAULT NULL ,
    `meta_value` longtext,
    PRIMARY KEY ( `meta_id` ) ,
    KEY `comment_id` ( `comment_id` ) ,
    KEY `meta_key` ( `meta_key` ) ) ENGINE = InnoDB DEFAULT CHARSET = utf8 AUTO_INCREMENT =1;

    MySQL said:

    #1046 – No database selected

    • WPBeginner Staff says:

      Before you can run this query you need to select the database you want to run it on. If you are using phpMyAdmin then select the database and then click on the SQL to run the query.

  41. Thinh says:

    Hi, thanks for a easy guide.

    But I wonder how I can export to live when WordPress is already installed live? I redesigned the website from scratch, only thing is that I used the same theme. What would be the best way to get this live?

    Thanks, keep up the good work!

  42. PixelstoLife says:

    Great tutorial, thanks for the help.
    Like some others, the up_user updates don’t work and the links on my site are still calling the localhost. I’ve also been booted out as the admin user and cannot login to update permalinks etc.
    I’ve found a tutorial to re-instate an admin user via phpmyadmin so I’ll give that a go and see if I can get back in!

  43. Ben says:

    Great guide, but having a little bit of trouble and wondering if you can help.

    I’ve done everything above, but when I try to go on to the …/wp-admin page I get this: ‘Warning: require(/home/username/public_html/wp-includes/pomo/mo.php): failed to open stream: No such file or directory in /home/username/public_html/wp-settings.php on line 76′

    Any ideas?

  44. lokesh says:

    I m facing a prlessphp fatal error: load error: failed to find /home1/eminenta/public_html/server/Suman_Creations/wp-content/themes/theme49413/bootstrap/less/bootstrap.lesslessphp fatal error: load error: failed to find /home1/eminenta/public_html/server/Suman_Creations/wp-content/themes/theme49413/style.less oblem when i move my website from local server to live server

Add a Comment

We're glad you have chosen to leave a comment. Please keep in mind that all comments are moderated according to our comment policy, and all links are nofollow. Do NOT use keywords in the name field. Let's have a personal and meaningful conversation.