
Before going through these steps, one must understand that the following things are not transferred to WordPress while making a switch. Blog design, blogger widgets, 3rd party widgets, and services data are not transferred. Post content and comments are two primary data sets that are pulled to the WordPress instance where you are going to run your new blog.
Prepare Your Blogger Blog
Before attempting migration, your blogger blog should be in the right state to make things easy. If you're not using custom domain currently, apply it as soon as possible on your blogger blog.Doing this ensures you don't have to do dirty redirection tricks on your blogger blog. So here's a simple primer to configure a custom domain on blogger.

Click the save button and the blogger part of adding a custom domain is done. Now log in to your domain name management dashboard to update the CNAME records associated with your domain.
If there are any existing CNAME records pointing to a parking page, simply delete those records and replace them with the following two records.
Record Type Host Name Address/URL TTL
CNAME www ghs.google.com. 1800
URL Redirect @ http://www.yourdomain.com/ 1800
Now head on to Google webmaster tools and submit the new sitemap for fast indexing of the new URLs. If you've not used this service before, use your current Google account for the same and add your blogger site to it. Thereafter, go to 'Crawl → Sitemaps → ADD/TEST SITEMAP' option and add the following partial sitemap URL in the box.
atom.xml?redirect=false
After pasting the partial URL, complete entry will look something like http://www.yourdomain.com/atom.xml?redirect=false while evaluating the complete address. Press the 'Submit Sitemap' button to complete the process.You may question the need for this new sitemap submission process. Well, this process ensures that your new custom domain post URLs starts getting indexed by Google to take place of the old URLs. Since the blogger platform automatically do 301 redirects from blogspot URLs to the new custom domain URLs, those old URLs will be removed from the index in due course of time.
Unless your blog has an extremely huge archive of posts, I'll advise you to wait for at least 4 to 6 weeks before you think about making the switch. By this time, all the old blogspot URLs will be removed and will be replaced by the new custom domain post URLs within the index without affecting your search traffic and rankings.
During this period, you can update links to your post content which are pointing to other posts on the same blog. Simply modify from the front part of the URL of such links with the new domain name you're using on the blog. In simple words, you have to update all the internal links to your content using old blogspot URLs.
After 4 to 6 weeks, your blog is running on a custom domain, new custom domain post URLs are getting indexed on a regular basis and the old blogspot URLs are gradually disappearing from the search index.
Before attempting migration, you have to check whether the majority of your posts with new URLs are indexed and replaced with their old counterparts or not. Let's say, you have 536 posts on the blog. To check whether almost all of the URLs are indexed or not, open Google search page and type the following query in it.
site:yourdomain.com
This will result in the display of pages indexed so far by Google, like in the sample image shown below.
Although Google webmaster tools allow you to manually submit links to be removed from the index, I prefer to get this done, the natural way.
Backup Your Blogger Blog
Now that everything is in place to start the migration process, we'll complete this vital setup of taking backups of content and design of your blogger blog.While downloading a blogger blog, both content and design are saved in a single XML file. But still, I prefer to save the design template separately.
To download the existing design template, go to Template → Backup/Restore → Download full template option. Save the file in a secure location on your computer. Now it turns to download the entire blog.
Head on to Settings → Other → Export blog → Download Blog option for the same. This completes the basic download process. But wait, there's more to cover which may seem optional but I'll recommend you complete it.
I also prefer to manually backup content of various gadgets in the sidebar or footer, favicon and the header image/logo (if any). To do this, go to Template option and click each gadget within the layout wherever you've pasted custom content. You can mark and save this data in a separate text file and can give it an appropriate name.
Similarly, do not forget to save custom favicon (if you're using one) and the custom header image/logo used on your blog.
Install WordPress Blog
If you've completed all the steps mentioned above, it's time to finally start the migration process. We'll start by installing the WordPress blog.I'm assuming you're using a typical shared web hosting account. Most shared hosting environments use cPanel for account management and Softaculous software for installing WordPress blogs. Here's an excellent video explaining WordPress installation. While installing the blog, specify the custom domain you're currently using on your blogger blog wherever it is asked during the process.
After the blog has been installed through Softaculous from within your web hosting account, it's time to complete the installation process by opening the blog in the web browser and provide the remaining information (e.g: blog title, password etc).
But at this stage, if you will type your custom domain in a web browser, it'll open your blogger blog since the CNAME records are still pointing to blogger platform. So, how to open the newly installed WordPress blog in a web browser to complete the process?
You'll need two things to complete the process. A plugin for the web browser and your shared web server's IP address.

Now that you have your web server's IP address with you, it's time to install the plugin. It is available for both Google Chrome and Firefox.
After installing the plugin, click the add-on icon and open the editor as shown below.

Now type the domain name in the address bar and it will open your newly installed WordPress blog configuration page. Don't worry! Your regular visitors will still be able to open your blogger blog to the custom domain.
Provide the details asked on the configuration page and complete the blog installation.
Configure Essential Settings
Once the blog installation is complete, you can log in to the dashboard to complete the following vital steps before you attempt content migration.Head over to 'Settings → General' option and fill in the site title, tagline, WordPress address, and site address fields as shown below. There's also a timezone field on this page. Make sure to select the correct timezone option from the drop-down list. Save the settings once you've supplied the correct details.


To do that, open the 'Settings → Permalinks' option and select the Custom Structure option on the page. Thereafter paste the following string in the text field of that option.
/%year%/%monthnum%/%postname%.html

You can also create an extra WordPress user account apart from the regular administrator account which can be used to attribute as the post author for the imported posts.
Import Blogger Content
So, finally, it's time to transfer blogger content to the WordPress blog. Categories, posts, images and blogger comments are going to be imported during this process.Go to 'Tools → Import → Blogger' option and install the plugin. Upon activation, the plugin will ask you to authorize access to the blogger blog from which the content needs to be pulled. If you're already not logged in your Google account associated with your blogger blog, do so once you click the 'Authorize' button.


This completes the primary content migration process.
Post Migration WordPress Settings
Now you have to complete an important step to match all the post URLs exactly as they were on the blogger blog. This will ensure that your search traffic is retained without any issues. But, if your archive of posts is huge, you cannot afford to complete this process on a manual basis.Fortunately, there's an excellent PHP script (piece of code) that completes the process for you within seconds. Save the following code in a text file and save it by giving it a proper (e.g. process.php) name. Make sure the file extension should be .php. Do not use rich text editor for saving this file. Ideally, use notepad or a simple text editor for the same.
<?php
require_once('wp-load.php');
$res = $wpdb->get_results("SELECT post_id, meta_value FROM $wpdb->postmeta WHERE meta_key = 'blogger_permalink'");
$wpdb->print_error();
foreach ($res as $row){
$slug = explode("/",$row->meta_value);
$slug = explode(".",$slug[3]);
$wpdb->query("UPDATE $wpdb->posts SET post_name ='" . $slug[0] . "' WHERE ID = $row->post_id");
$wpdb->print_error();
}
echo "DONE";
?>
Upload this file in the root directory where WordPress is installed on your web server. You can either do this through FTP or through a web-based file explorer available within hosting management dashboard. Here's an excellent guide about using FileZilla to upload the file. If you struggle to upload this file in the root directory, you can ask the support staff to do that for you.Let's assume you've named the file process.php. Now type the following URL in the address bar of your web browser and hit the enter key. This will trigger and execute the script. If everything goes right, you'll see DONE message on the blank page.
http://www.yourdomain.com/process.php
Now, it's time to change the nameserver settings for your domain name to start pointing your domain to the WordPress blog. Ask your web hosting company support staff about nameserver addresses available for users. Almost every hosting company provides step by step tutorial about how to point a domain name to their servers.
Now deactivate and delete the plugin earlier installed by you within your web browser. Thereafter, do not forget to clear your browser's cache. Nowadays, DNS propagation happens quite fast and within a few minutes, your new WordPress blog can be opened by typing your custom domain name in the browser's address bar. You can now see that your custom domain name no longer points to the blogger blog and is now associated with your new WordPress blog.
Post Migration Blogger Settings
Now it's time to tweak and adjust some blogger settings. Remember, never ever delete your blogger blog which you've transferred to WordPress. Instead of that, configure the following settings so that your blog subscribers are retained and get all the posts as usual from your new WordPress blog.Open your blogger blog's dashboard and reverse the process of applying a custom domain on the blogger blog you've done earlier. Simply go to 'Settings → Basic → Publishing' section and remove the custom domain applied earlier. It's just a matter of a couple of clicks. Now your blogger blog is back on its Blogspot subdomain.
If you keep it in this state, your WordPress blog may get penalized for duplicate content since search engine bots can crawl and index pages of both these blogs. To stop this, you have to block all the search engine bots and other crawlers from accessing your blogger blog.

And now it's time to do some tweaks for properly redirecting your existing Feedburner subscribers to the new WordPress blog posts feed. Go to 'Settings → Other → Site Feed → Post Feed Redirect URL' option and type the following feed URL in it.
http://www.yourdomain.com/feed/


This completes the entire Blogger to WordPress migration process. From here on, you can start installing the required plugins and themes on your WordPress blog and continue tweaking it as per your preferences. I hope this guide will help you transfer your Blogger blog to a self-hosted WordPress in a much easier way than you've anticipated earlier.