What’s So Special About Our Blogger To WordPress Migration Service!

As we all know, WordPress comes with built-in Blogger importer tool. Then why we are running a dedicated portal and charging people for something that exist in free & open-source?

This is a question, we get many times. And a typical sales-guy kind of response would be  - Check our portfolio There must be *something* unique about our service that made so many people go for it…”

But as a developer, today I decided to spend some time in giving you completely unbiased and technically correct explanation about our service so that you will get to know what is that “something”.

To keep my points easier to understand, I will first brief about WordPress Importer and its limitations. Then I will explain how our service handles things differently.

WordPress Importer

First, WordPress Importer is a tool which I used to move my first blog from Blogger to WordPress 3 year back. I was able to move my all posts.

Unfortunately, I couldn’t save my permalinks and traffic at that time. I also lost some comments. But from my experience and lessons I learned from mistakes I made, I could help a lot of fellow bloggers over the years. See our free migration-guide and open-source permalink-redirection plugin.

Now let me highlight some common limitations faced by most WordPress plugins:

  1. A WordPress plugin runs on top of WordPress core with other activated WordPress plugins. This increases memory footprint of underlying PHP process. Memory limitation comes into picture here.
  2. Some tasks requires extensive computing power. To complete computations, underlying PHP process often needs to run longer than max_execution_time limit imposed by php.ini config.
  3. When it comes to processing user-input, which is entered through an application on which we have no control, we can never take care of all “cases”.

Most WordPress plugins are built for masses and they are developed keeping in mind low-resource web hosting plans. None of those “unlimited” $2/month web hosting plan provides unlimited CPU or unlimited RAM. Even if go for VPS or dedicated servers, cost of RAM will limit the amount of RAM one can buy.

It is interesting to see how WordPress built-in importer overcome this situation.

To avoid memory problem, WordPress built-in importer processes data in small chunks. So even if you are importing 1000 posts from Blogger, they are imported in bunchs of few posts at a time.


Next, to overcome max_execution_time limit, WordPress start a dummy ajax session, we call it pseudo-ajax, which helps server-side migration process to run longer than max_execution_time limit. This technique was matter of research for our developers. We really copied this pseudo-ajax technique in many other projects we did in past. Of course, this pseudo-ajax technique is not full-proof as in many cases (i) it increases rework (ii) hard to keep track amount of work that has been done.

Dealing with user-inputs i.e. content…

After handing time and memory limits somehow, next comes matter of processing user-input. That is, actual content that goes into WordPress database as part of migration process.

Look at some samples below to get feel of complexity involved:

  1. adds considerable amount of inline styling where WordPress post-editor generates very clean and well-formatted HTML.
  2. adds JavaScript around images. This may not create problem in migration but makes markup very dirty. It may break some WordPress plugins and theme which parse post-content to display post-thumbnail. Even though WordPress now support post-thumbnail within core, many themes maintain backward compatibility.
  3. Added to above data, there are non-english languages, database-encoding and character-encoding related issues. This is reason for those weird characters appearing in post-titles and post-contents after migration.
  4. Some users adds crazy JavaScript in posts. In fact, sometimes, we saw complete Google Analytics tracking codes were added to each post rather than adding them to template footer. Many bloggers are newbies and they think before closing HTML(</html>)  tag, means last line in post-editor!
  5. bloggers are mostly newbie and in their early days, thanks to WYSIWYG editor of, they ended up creating posts with mysterious markup!
  6. Then there comes third-party widgets and services making things even worse for WordPress built-in importer. How can we expect WordPress importer tool to magically import disqus or any other third-party comment during migration process!

Finally, apart from sanity of data compromised by end-user and third-parties, exports data in unpredictable ways. follows ATOM specification, but data never arrives in order you expect. XML is extensible format but if you compare WXR format used by WordPress with ATOM export file, you will only start admiring WordPress built-in importer despite its limitations!

Our Migration Tool

First, it’s not a WordPress plugin!

In fact, we decided to improve built-in importer as a first thing but it was very tough to handle things staying in limits of cheap web hosting plans! And if we made a WordPress plugin, with prerequisite like 2GB RAM, max_execution_time set to 1 hour, root-access etc, etc; how many people would have used it actually.

Our importer is an independent application which runs on system with 4GB RAM with no time-limit. It’s an independent app, running all-alone on a powerful Dual Core ubuntu server with no GUI.

Running our importer reminds us of old days of computer-operator job in 1970′s. For each run of our importer, we need to manually change too many files! Added to them are extra codes and libraries to “merge” data from third-party commenting systems like disqus, intense-debate, etc in some cases.

Even after doing more than 100 migrations, we need to fix or patch our tools with every 5th migration. Reason is again the “diverse” user-input. Although last-fix involved something for which is to blame, it will take time, before we can think of adding some user-interface to our importer so common end-users can use it on their own.

As of now, we spend hours in manually checking if everything is imported properly. And by “properly” it’s not only about number of posts and comments but data present in posts and comments! It is this kind of testing where we find issues and fix our importer again and again.

Phew! Sounds like lots of work! Yes. It is. :|

Finally, Our Migration Service

Built-on top of our migration tool runs our migration service.

From hundreds of comments I received on our free migration-guide and open-source permalink-redirection plugin I realized that, it’s not just number of posts and comments that people actually worry about. For some users, migration is really big deal. As big as shifting real home!

For non-techie users, things starts from buying web hosting to getting used to with WordPress world. They miss the ease with which they used to control their layout colors and sidebar widgets.

So apart from constantly improving migration tool…

  • We help people setup their blogs – right from buying domains/web hosting to install WordPress (if one-click installer is not available)
  • WordPress as SEO-friendly platform raises people’s expectations a lot. We do basic Search Engine Optimization using free plugins and  configuration that we use on our blog-network.
  • Apart from SEO, we do performance optimization. We are good at running high-traffic sites with amazing uptime! Ask our readers at Devils Workshop.
  • We give unlimited bug-support, where any broken post-link reported by user gets fixed from us immediately. Even though, this rarely happens, thanks to our extensive testing sessions, all such bugs are already covered as part of our package.

Apart from bugs and technical issues, we go out-of-the-way to help our clients get used to with WordPress smoothly. Sometime it involves trivial things like sharing a video on how to write post in WordPress.


Let our portfolio and testimonial pages do the rest of the taking for us. :-)

I hope its fine with you as now you know what is that “something” which made these people fall for a paid-service when free and open-source alternative seems to exist!

p.s. You can use our free support forum if you have some questions. Or better contact us directly.

(image credit – Black & white image of Steve Jobs found at

Leave a Comment

  • Facebook
  • GitHub
  • Twitter
  • LinkedIn
  • Google

Your email address will not be published.


To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    Markdown is turned off in code blocks:
     [This is not a link](

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see