Free hosting on WordPress.com is a great choice when you don’t want the hassle of maintaining the site yourself. However, there are limitations. If you want the freedom to customize, add plugins, and monetize the site, you could upgrade to a premium account or migrate the site to WordPress.org.

Migration
You copy the content (text and images) and database from one site to another using a process called “migration”. There are a few basic steps to take when migrating a site from WordPress.com (“source” site) to WordPress.org (“destination” site).
1. Export the WordPress.com site (“source”)
Log into the WordPress.com site and go to the “Tools > Export” section. This tool generates an XML file containing the site data. You download the XML file to your computer and use it in the Import step (Step 3 below) of the migration process.
You can choose to export all of the content or restrict the export to posts, pages, or media. If you select “Posts”, you’ll have additional options regarding categories, authors, dates, and status. Selecting “Pages” provides similar options as “Posts” (no categories). Selecting “Media” gives you images, videos, documents, and other attachments, with the option of months.
After you have selected the content you want, click the “Download Export File” button.

2. Prepare the new WordPress.org site (“destination”)
A
self-hosted site requires 2 things:
(1) Domain name
(2) Web hosting account
The free WordPress.com account allows you to choose a domain name, but the site is a subdomain of WordPress.com, like so:
https://YourDomainName.wordpress.com/
The paid plans offer different levels of customization, including the ability to have your domain name appear independently from the WordPress.com address, like so:
https://YourDomainName.com/
No matter what plan you have, you can usually keep your current domain name when changing hosting environments.
Keeping the Same Domain Name
Install a fresh copy of WordPress on the destination site. Retain the old source site while building the destination site, just in case something goes wrong. One way to do this is to create the new site on a subdomain or subdirectory of the existing domain. Once the destination site is finished, you can delete the source site. You can then move the new site to the parent URL; this will benefit SEO and avoid having to re-direct the old URL to the new URL.
Using a New Domain Name
When developing the site on a new domain, the source site stays live. Install a fresh WordPress site on the new domain. It’s important to discourage search engines from indexing the new site while it’s in development, so that Google won’t penalize for duplicate content. You should also install all the plugins that exist on the source site.
Web Host
There are thousands of web hosts to choose from. For self-hosting, I recommend Siteground. For managed hosting, I recommend WP Engine.
3. Import the source site
- Log into your new WordPress site. Look on the left sidebar and select “Tools > Import”.
- Scroll to the last option, labeled “WordPress”, and click the “Install Now” button. This installs the importer tool.

- After the tool is installed, click on the “Run Importer” button.
- Choose the XML file you exported from the source site in Step 1. Click the “Upload file and import” button.

Import Options
WordPress provides you with 2 options for the import: assign authors and import attachments (images and other files, like PDFs). Usually, I retain the mapping between author and post, and import the attachments. Sometimes, if you have hundreds of images, it’s more reliable to download them; you’ll then have to manually upload to the destination site with the same directory structure.
Select the appropriate options, then click the “Submit” button.
Post Site Migration
Once the import is complete, check the following to make sure everything is OK:
- Posts
- Pages
- Authors
- Users
- Media Library
- Plugins
- Reinstate Search Engine Visibility (Settings > Reading)
- Permalinks
Retain source site look and feel
On a recent migration I completed for a client, I was asked to retain the style of the source site as best as possible. The theme on the source site was Coraline. Available themes on WordPress.org are usually different than those available on WordPress.com. Coraline was not an option on WordPress.org. Thus, we started with a default theme, then changed to Genesis Minimum Pro so we could position the image at the top.
Add a redirect
If you’ve built the new destination site on a new domain, a redirect is necessary. It’s important to keep the source site (particularly the domain name) intact in order to do the redirect. Don’t delete the source account on WordPress.com! Since you don’t have access to the htaccess file in WordPress.com, you need to purchase the “Site Redirect” upgrade. After the purchase is confirmed, follow the prompts to complete the redirect. The site migration will then be finished!
For good SEO, it’s wise to keep the source site alive for at least 1-2 years. That gives the search engine spiders plenty of time to index the new destination site regularly.
Related Posts
Why and How You Create WordPress Child Themes
Manually Clone a WordPress Site in 5 Steps
How to Choose a WordPress Theme
WordPress.org vs. WordPress.com: Compare and Choose
Excellent post. I am going through many of these issues as well.